From 73dcb81e7a54e9c6776a4dded2c99e89ab47ff15 Mon Sep 17 00:00:00 2001 From: Tormy Van Cool <32305535+tormyvancool@users.noreply.github.com> Date: Wed, 3 Apr 2024 16:25:34 +0200 Subject: [PATCH 01/10] Update and rename tormyvancool_Chapter marker for audiobooks.lua to TormyVanCool_AudioBooks_ChapterMarker.lua Updated version of the script I started to make 3 year s ago. --- .../TormyVanCool_AudioBooks_ChapterMarker.lua | 201 ++++++++++++++++++ ...yvancool_Chapter marker for audiobooks.lua | 26 --- 2 files changed, 201 insertions(+), 26 deletions(-) create mode 100644 Markers/TormyVanCool_AudioBooks_ChapterMarker.lua delete mode 100644 Markers/tormyvancool_Chapter marker for audiobooks.lua diff --git a/Markers/TormyVanCool_AudioBooks_ChapterMarker.lua b/Markers/TormyVanCool_AudioBooks_ChapterMarker.lua new file mode 100644 index 000000000..3f230fd82 --- /dev/null +++ b/Markers/TormyVanCool_AudioBooks_ChapterMarker.lua @@ -0,0 +1,201 @@ + + +-- @description Chapter marker for audiobooks (ID3 Metatag "CHAP=Chapter_Title") +-- @author Tormy Van Cool +-- @version 2.3 +-- @screenshot Example: ChapterMarker.lua in action https://github.com/tormyvancool/TormyVanCool_ReaPack_Scripts/ChapterMarker.gif +-- @about +-- # Chapter Marker for Audiobooks +-- +-- It adds ID3 Metatag "CHAP=Chapter_Title_by_the_User" by a pop up that asks to the user, the title of each chapter. +-- Then it adds the marker with the correct tag at the mouse position +-- +-- Key features: +-- - Asks for the title of each chapter by a pop up field +-- - It can be used very effectively as Armed Action +-- - It add the prefix "CHAP=" to any title inserted by the user, avoiding sintaxis errors +-- - When metadata is used, rendering an MP3, "CHAP=" is automatically added +-- ver. 1.0 Made by Tormy Van Cool (BR) Feb 01 2021 +-------------------------------------------------------------------- +-- Script Initialization +-------------------------------------------------------------------- +reaper.Undo_BeginBlock() +chap = "CHAP=" +pipe = "|" +LF = "\n" +extension = ".txt" +UltraschallLua = "/UserPlugins/ultraschall_api.lua" + +-------------------------------------------------------------------- +-- Functions declaration +-------------------------------------------------------------------- +function file_exists(name) -- Checks if mandatory library is installed + local f=io.open(name,"r") + if f~=nil then io.close(f) return true else return false end +end + +function ChapRid(chappy, seed, subs) -- Get rid of the "CHAP=" ID3 Tag or other stuff to prevent any error by user + local ridchap + if subs == nil then subs = "" end + if chappy == nil then return end + ridchap = string.gsub (chappy, seed, subs) + return ridchap +end + +function SecondsToClock(seconds) -- Turns seconds into the format: "hh:mm:ss" + local seconds = tonumber(seconds) + if seconds <= 0 then + return "00:00:00"; + else + hours = string.format("%02.f", math.floor(seconds/3600)); + mins = string.format("%02.f", math.floor(seconds/60 - (hours*60))); + secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60)); + return hours..":"..mins..":"..secs + end +end + +function Round(seed, precision) + local roundup = math.floor(seed * precision) / precision + return roundup +end + +-------------------------------------------------------------------- +-- Loads the mandatory library +-------------------------------------------------------------------- +if file_exists(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua") == false then + local v = [[ + ULTRASCHALL Library should be installed. + Copy the follwing link + + https://github.com/Ultraschall/ultraschall-lua-api-for-reaper/raw/master/ultraschall_api_index.xml + + into: + + Extensions > ReaPack > Import repositories... + + install it and activate it by runinng: + + Actions > Script: ultraschall_Add_Developertools_To_Reaper.lua > Run/Close + ]] + + reaper.MB(v,'ATTENTION',0) + return + else + dofile(reaper.GetResourcePath()..UltraschallLua) +end + + +-------------------------------------------------------------------- +-- Checks whehether the project is saved +-------------------------------------------------------------------- +ProjectName = reaper.GetProjectName( 0, "" ) +if ProjectName == "" then + reaper.MB("Save the Project, first!",'WARNING',0) + return +end + + +-------------------------------------------------------------------- +-- Get the marker position, extract the ID, POSITION and NAME +-- it assign these to a more human readable variables +-- If "markerNAME" is nil, then it assigns a null string +-- to prevent errors +-------------------------------------------------------------------- +marker = ultraschall.GetMarkerByTime(reaper.GetCursorPosition(0)) +function Split(s, delimiter) + result = {}; + for match in (s..delimiter):gmatch("(.-)"..delimiter) do + table.insert(result, match); + end + return result; +end +markerData = Split(marker, LF) +markerID = markerData[1] +markerPOS = markerData[2] +markerNAME = markerData[3] +if markerNAME == nil then + markerNAME = "" + flag = false + else + flag = true +end + + + +-------------------------------------------------------------------- +-- Asks to user to insert the chapter title +-- In case it's already present, the user can easily modify it +-- if not present, thus it's a new marker, the field is just empty +-- and the user shoudl fill it in +-- The field is mandatory +-------------------------------------------------------------------- +if string.match(ChapRid( markerNAME, chap), pipe..'(.*)') == nil then + InputVariable = ChapRid( markerNAME, chap) +else + InputVariable = string.match(ChapRid( markerNAME, chap), pipe..'(.*)') +end + +repeat + retval, InputString=reaper.GetUserInputs("AUDIOBOOK: CHAPTERS", 1, "Chapter Title,extrawidth=400", InputVariable) + if InputString == "" then + if reaper.MB("The field is empty!", "WARNING",5) == 2 then return end + end +until InputString ~= "" + +if retval==false then return end +InputString = ChapRid(ChapRid(ChapRid(InputString, chap), pipe), '-', ' ') -- No reserved characters can be written +InputString=InputString:upper() -- all letters turned in capitals + + +-------------------------------------------------------------------- +-- Marker and related variable, construction +-------------------------------------------------------------------- +local color = reaper.ColorToNative(180,60,50)|0x1000000 +local _, num_markers, _ = reaper.CountProjectMarkers(0) +local cursor_pos = reaper.GetCursorPosition() +local roundup = Round(cursor_pos,100) +local name = chap..roundup..pipe..InputString +local tagName = chap..InputString +if flag == false then + reaper.AddProjectMarker2(0, 0, cursor_pos, 0, tagName, num_markers+1, color) + else + reaper.DeleteProjectMarker(0, markerID, 0) + reaper.AddProjectMarker2(0, 0, cursor_pos, 0, tagName, markerID, color) +end + +local pj_name=reaper.GetProjectName(0, "") +local pj_path = reaper.GetProjectPathEx(0 , '' ):gsub("(.*)\\.*$","%1") +pj_name = string.gsub(string.gsub(pj_name, ".rpp", ""), ".RPP", "")..extension + + +cursor_pos = SecondsToClock(cursor_pos) +SideCar = io.open(pj_path..'\\'..pj_name, "w") + + +-------------------------------------------------------------------- +-- Estabilshes how many markers/regions are located into the project +-------------------------------------------------------------------- +numMarkers = 0 + +repeat + mkr = reaper.EnumProjectMarkers(numMarkers) + numMarkers = numMarkers+1 +until mkr == 0 + +i = 0 + +while i < numMarkers-1 do + local ret, isrgn, pos, rgnend, OldName, markrgnindexnumber = reaper.EnumProjectMarkers(i) + if string.match(OldName, chap) then + --local SideCar_ = SecondsToClock(pos)..pipe..ChapRid(name, chap)..LF + local SideCar_ = ChapRid(OldName, chap) + SideCar_ = ChapRid(Round(pos,10)..pipe..SideCar_, pipe, ',1,"')..'"'..LF + SideCar:write( SideCar_ ) + end + i = i+1 +end + +-------------------------------------------------------------------- +-- Closes file and returns feedback to user +-------------------------------------------------------------------- +SideCar:close() diff --git a/Markers/tormyvancool_Chapter marker for audiobooks.lua b/Markers/tormyvancool_Chapter marker for audiobooks.lua deleted file mode 100644 index 5fa407731..000000000 --- a/Markers/tormyvancool_Chapter marker for audiobooks.lua +++ /dev/null @@ -1,26 +0,0 @@ --- @description Chapter marker for audiobooks (ID3 Metatag "CHAP=Chapter_Title") --- @author Tormy Van Cool --- @version 1.0 --- @screenshot Example: ChapterMarker.lua in action https://i.imgur.com/aEZhqwv.gif --- @about --- # Chapter Marker for Audiobooks --- --- It adds ID3 Metatag "CHAP=Chapter_Title_by_the_User" by a pop up that asks to the user, the title of each chapter. --- Then it adds the marker with the correct tag at the mouse position --- --- Key features: --- - Asks for the title of each chapter by a pop up field --- - It can be used very effectively as Armed Action --- - It add the prefix "CHAP=" to any title inserted by the user, avoiding sintaxis errors --- - When metadata is used, rendering an MP3, "CHAP=" is automatically added - -retval, InputString=reaper.GetUserInputs("Name", 1, "Chapter Title", "") -if retval==false then return end -InputString=InputString:upper() -reaper.Undo_BeginBlock() -local name = "CHAP="..InputString -local color = reaper.ColorToNative(180,60,50)|0x1000000 -local _, num_markers, _ = reaper.CountProjectMarkers(0) -local cursor_pos = reaper.GetCursorPosition() -reaper.AddProjectMarker2(0, 0, cursor_pos, 0, name, num_markers+1, color) -reaper.Undo_EndBlock("Insert marker", -1) From d07afcce9f4fbd8c48d311af3d1828a30140616e Mon Sep 17 00:00:00 2001 From: Tormy Van Cool <32305535+tormyvancool@users.noreply.github.com> Date: Wed, 3 Apr 2024 16:28:55 +0200 Subject: [PATCH 02/10] Updates the Chapter Markers create with AudioBooks_ChapterMarker It Updates the Chapter Markers create with my script TormyVanCool_AudioBooks_ChapterMarker --- ...anCool_AudioBooks_ChapterMarkerUpdater.lua | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 Markers/TormyVanCool_AudioBooks_ChapterMarkerUpdater.lua diff --git a/Markers/TormyVanCool_AudioBooks_ChapterMarkerUpdater.lua b/Markers/TormyVanCool_AudioBooks_ChapterMarkerUpdater.lua new file mode 100644 index 000000000..bfa7dcf94 --- /dev/null +++ b/Markers/TormyVanCool_AudioBooks_ChapterMarkerUpdater.lua @@ -0,0 +1,121 @@ +-- @description Chapter Marker Updater for Audiobooks +-- @author Tormy Van Cool +-- @version 2.2.2 +-- @about +-- # Chapter Marker Updater for Audiobooks +-- +-- The script, updates the PROJECT_NAME.SideCar.txt file, when markers are renamed and/or moved. +-- Just calling the script, it remove the old file, with a new updated one. +-- +-- Once done, it returns a popup window that informs the users, that everything is perfectly done. +-- versions +--[[ + 1.0 Initial release + 2.0 + + Code rewritten from scratch + 2.1 + - removed reaper.ShowConsoleMsg() + 2.2 + # Solved failed update of the marker pointer + 2.2.1 + - Debug window still opening + 2.2.2 + + Recovering audiobooks: Conversion from imporeted regions to markers + 2.2.3 + - Removed Pipe and Pointer from the marker +]] +-------------------------------------------------------------------- +-- Gets the project's name and open the SideCr file to be ovewritten +-------------------------------------------------------------------- +chap = "CHAP=" +extension = ".txt" +pipe = "|" +LF = "\n" + +local pj_name=reaper.GetProjectName(0, "") +local pj_path = reaper.GetProjectPathEx(0 , '' ):gsub("(.*)\\.*$","%1") +pj_name = string.gsub(string.gsub(pj_name, ".rpp", ""), ".RPP", "")..extension +SideCar = io.open(pj_path..'\\'..pj_name, "w") + + +-------------------------------------------------------------------- +-- FUNCTIONS +-------------------------------------------------------------------- +function SecondsToClock(seconds) -- Turns the seconds into the format: hh:mm:ss + local seconds = tonumber(seconds) + + if seconds <= 0 then + return "00:00:00"; + else + hours = string.format("%02.f", math.floor(seconds/3600)); + mins = string.format("%02.f", math.floor(seconds/60 - (hours*60))); + secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60)); + return hours..":"..mins..":"..secs + end +end + +function ChapRid(chappy, seed, subs) -- Get rid of the "CHAP=" ID3 Tag or other stuff to prevent any error by user + local ridchap + if subs == nil then subs = "" end + if chappy == nil then return end + ridchap = string.gsub (chappy, seed, subs) + return ridchap +end + +function Round(seed, precision) + local roundup = math.floor(seed * precision) / precision + return roundup +end + + +function create_marker(ts_start, ts_end, name, marker_ID, flag) -- Parameters: string region_name, integer region_ID, boolean flag + if region_ID ~= "" and flag then + reaper.DeleteProjectMarker(0, marker_ID, false) + end + if region_ID ~= "" and not(flag) then + reaper.DeleteProjectMarker(0, marker_ID, true) + end + + local item_start = math.floor(ts_start*100) /100 + --marker_ID = marker_ID+1 + reaper.AddProjectMarker(0, false, ts_start, ts_end, name, marker_ID) +end + +-------------------------------------------------------------------- +-- Estabilshes how many markers/regions are located into the project +-------------------------------------------------------------------- +numMarkers = 0 + +repeat + mkr = reaper.EnumProjectMarkers(numMarkers) + numMarkers = numMarkers+1 +until mkr == 0 + + +i = 0 + +while i < numMarkers-1 do + local ret, isrgn, pos, rgnend, name, markrgnindexnumber = reaper.EnumProjectMarkers(i) + if isrgn then + IsMarker = false + else + IsMarker = true + end + if not(string.match(name, chap)) then + name = chap..name + end + i = i+1 + create_marker(pos,pos, name, i, IsMarker) + local SideCar_ = Round(pos,100)..',1,'..'"'..string.match(name, chap.."(.*)")..'"'..LF + SideCar:write( SideCar_ ) + +end + +-------------------------------------------------------------------- +-- Closes file and returns feedback to user +-------------------------------------------------------------------- +SideCar:close() +reaper.Undo_OnStateChangeEx("AUDIOBOOKS UPDATER", -1, -1) +reaper.MB(pj_name..LF..LF.."SUCCESSFULLY UPDATED", "Audiobook's SIDECAR and MIDSTREAM TAGS Updated", 0) + + From c6db40381731e21b7c6e00b8e92f93de1f6d7d9e Mon Sep 17 00:00:00 2001 From: Tormy Van Cool <32305535+tormyvancool@users.noreply.github.com> Date: Wed, 3 Apr 2024 20:35:25 +0200 Subject: [PATCH 03/10] Update and rename TormyVanCool_AudioBooks_ChapterMarker.lua to tormyvancool_Audiobooks chapter marker.lua Renamed the file and removed the 2 empty lines at the beginning of the script --- ...terMarker.lua => tormyvancool_Audiobooks chapter marker.lua} | 2 -- 1 file changed, 2 deletions(-) rename Markers/{TormyVanCool_AudioBooks_ChapterMarker.lua => tormyvancool_Audiobooks chapter marker.lua} (99%) diff --git a/Markers/TormyVanCool_AudioBooks_ChapterMarker.lua b/Markers/tormyvancool_Audiobooks chapter marker.lua similarity index 99% rename from Markers/TormyVanCool_AudioBooks_ChapterMarker.lua rename to Markers/tormyvancool_Audiobooks chapter marker.lua index 3f230fd82..99f12d496 100644 --- a/Markers/TormyVanCool_AudioBooks_ChapterMarker.lua +++ b/Markers/tormyvancool_Audiobooks chapter marker.lua @@ -1,5 +1,3 @@ - - -- @description Chapter marker for audiobooks (ID3 Metatag "CHAP=Chapter_Title") -- @author Tormy Van Cool -- @version 2.3 From 459552a5996df8c9452e78e7180b609c86e4904e Mon Sep 17 00:00:00 2001 From: Tormy Van Cool <32305535+tormyvancool@users.noreply.github.com> Date: Wed, 3 Apr 2024 20:37:28 +0200 Subject: [PATCH 04/10] Rename TormyVanCool_AudioBooks_ChapterMarkerUpdater.lua to tormyvancool_Audiobooks chapter marker updater.lua Renamed the file as illustrated convention. Not any empty row detected here --- ...ter.lua => tormyvancool_Audiobooks chapter marker updater.lua} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Markers/{TormyVanCool_AudioBooks_ChapterMarkerUpdater.lua => tormyvancool_Audiobooks chapter marker updater.lua} (100%) diff --git a/Markers/TormyVanCool_AudioBooks_ChapterMarkerUpdater.lua b/Markers/tormyvancool_Audiobooks chapter marker updater.lua similarity index 100% rename from Markers/TormyVanCool_AudioBooks_ChapterMarkerUpdater.lua rename to Markers/tormyvancool_Audiobooks chapter marker updater.lua From 9716e4493c59335c563dec00fa06215b82068a48 Mon Sep 17 00:00:00 2001 From: Christian Fillion Date: Mon, 15 Apr 2024 07:19:52 -0400 Subject: [PATCH 05/10] un-package tormyvancool_Audiobooks chapter marker updater.lua --- ...cool_Audiobooks chapter marker updater.lua | 29 ++++--------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/Markers/tormyvancool_Audiobooks chapter marker updater.lua b/Markers/tormyvancool_Audiobooks chapter marker updater.lua index bfa7dcf94..a97741ebf 100644 --- a/Markers/tormyvancool_Audiobooks chapter marker updater.lua +++ b/Markers/tormyvancool_Audiobooks chapter marker updater.lua @@ -1,29 +1,10 @@ --- @description Chapter Marker Updater for Audiobooks --- @author Tormy Van Cool --- @version 2.2.2 --- @about --- # Chapter Marker Updater for Audiobooks +-- @noindex -- --- The script, updates the PROJECT_NAME.SideCar.txt file, when markers are renamed and/or moved. --- Just calling the script, it remove the old file, with a new updated one. +-- The script, updates the PROJECT_NAME.SideCar.txt file, when markers are renamed and/or moved. +-- Just calling the script, it remove the old file, with a new updated one. -- --- Once done, it returns a popup window that informs the users, that everything is perfectly done. --- versions ---[[ - 1.0 Initial release - 2.0 - + Code rewritten from scratch - 2.1 - - removed reaper.ShowConsoleMsg() - 2.2 - # Solved failed update of the marker pointer - 2.2.1 - - Debug window still opening - 2.2.2 - + Recovering audiobooks: Conversion from imporeted regions to markers - 2.2.3 - - Removed Pipe and Pointer from the marker -]] +-- Once done, it returns a popup window that informs the users, that everything is perfectly done. + -------------------------------------------------------------------- -- Gets the project's name and open the SideCr file to be ovewritten -------------------------------------------------------------------- From 6642a7420dc81a49d159cdc77ee8ac7e13e8ffda Mon Sep 17 00:00:00 2001 From: Christian Fillion Date: Mon, 15 Apr 2024 07:20:49 -0400 Subject: [PATCH 06/10] bundle "tormyvancool_Audiobooks chapter marker updater.lua" along with the primary action --- Markers/tormyvancool_Audiobooks chapter marker.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/Markers/tormyvancool_Audiobooks chapter marker.lua b/Markers/tormyvancool_Audiobooks chapter marker.lua index 99f12d496..91555f3a2 100644 --- a/Markers/tormyvancool_Audiobooks chapter marker.lua +++ b/Markers/tormyvancool_Audiobooks chapter marker.lua @@ -2,6 +2,7 @@ -- @author Tormy Van Cool -- @version 2.3 -- @screenshot Example: ChapterMarker.lua in action https://github.com/tormyvancool/TormyVanCool_ReaPack_Scripts/ChapterMarker.gif +-- @provides [main] tormyvancool_Audiobooks chapter marker updater.lua -- @about -- # Chapter Marker for Audiobooks -- From 593ad090ddcfac8d8db92ec1ebfd8b109a16a1ad Mon Sep 17 00:00:00 2001 From: Tormy Van Cool <32305535+tormyvancool@users.noreply.github.com> Date: Thu, 31 Oct 2024 18:27:56 +0100 Subject: [PATCH 07/10] VST extractor It prints on an HTML and CSV files located into the REAPER's default, all the installed plugins --- Various/tormyvanvool_VSTs-VSTis Extractor.lua | 678 ++++++++++++++++++ 1 file changed, 678 insertions(+) create mode 100644 Various/tormyvanvool_VSTs-VSTis Extractor.lua diff --git a/Various/tormyvanvool_VSTs-VSTis Extractor.lua b/Various/tormyvanvool_VSTs-VSTis Extractor.lua new file mode 100644 index 000000000..c081d28f7 --- /dev/null +++ b/Various/tormyvanvool_VSTs-VSTis Extractor.lua @@ -0,0 +1,678 @@ +-- @description Extracts and exports VSTs and VSTIs from reaper-vstplugins64.ini, in HTML and CSV format on a Project Folder +-- @author Tormy Van Cool +-- @version 3.1 FERRETS +-- @screenshot ENGLISH https://www.youtube.com/watch?v=J5Ko4uIya9w ITALIAN https://www.youtube.com/watch?v=OqNFQt3hOC8 +-- @changelog +-- v1.0 (30 May 2021) +-- + Initial release +-- v1.1 (31 May 2021) +-- + Save status of HTML File +-- + Retrieve status of HTML file +-- v1.2 (31 May 2021) +-- + Saves files into Reaper's Folder +-- + No more need internet connection +-- v1.3 (31 May 2021) +-- # Minor adjustments +-- v1.3.1 (31 May 2021) +-- # Slved a bug occurred with mac (what else!) +-- v1.3.2 (31 May 2021) +-- + Added info block at the end of the process +-- v2.0 (1 june 2021) +-- + AU detection on MAC +-- v2.1 (1 June 2021) +-- + Helper with modal pop-up +-- v2.2 (13 June 2021) PIXY +-- - Import button +-- + Automatic import JSON file if present +-- + Hide checked button +-- + Show checked button +-- v2.3 (30 October 2021) +-- # ameliorated columns +-- # CSS glitch +-- v2.4 (30 October 2021) +-- + instr Column +-- + Links +-- v2.5 FERRETS (1 November 2021) +-- + instr Column CSV +-- v2.6 FERRETS (1 november 2021) +-- # glitch on jQuery: Hide/Show button was not working any longer +-- v2.7 FERRETS (1 June 2023) +-- + CLAP +-- # Corrected a bug that could list less plugins than the ones really installed +-- v2.8 FERRETS (1 June 2023) +-- # Fixed issue with Mac (both x86_64 and arch64) +-- # Fixed issue with Linux +-- + "Not applicable (don't even ask)" to CLAP files +-- v2.8.5 +-- # Fixed message "Not existing VST cache. Isntall at least 1 plugin!!!" +-- v2.9 FERRETS (7 June 2023) +-- + CLAP File Name +-- v3.0 FERRETS (05 August 2023) +-- + Old 32bit VST List +-- v3.1 FERRETS (19 August 2023) +-- # Corrected bug: if no 64bit or not 32bit plugins where installed, an error was displayed. +-- + Close file CLAP + +reaper.ShowConsoleMsg('') +local version = "3.1 FERRETS" +local REAPER_path = reaper.GetResourcePath() +local path = reaper.GetResourcePath()..'/reaper-vstplugins64.ini' +local path32 = reaper.GetResourcePath()..'/reaper-vstplugins.ini' +local path_CLAP = "" +local path_MAC = reaper.GetResourcePath()..'/reaper-auplugins64.ini' +local FileName = REAPER_path.."/REAPER.VSTinstalled" +local VST_RegisterHTML = FileName..".html" +local VST_RegisterCSV = FileName..".csv" +local VST_RegisterJSN = "REAPER.VSTinstalled.json" +local date = os.date("%Y-%m-%d %H:%M:%S") +local VST_RegisterJSN = VST_RegisterJSN:gsub( "\\", "/") +local reaperURL = "https://www.reaper.fm" +local TormyLOGOURL = "https://www.reaper.fm" +local reaperURL = "https://www.reaper.fm" +local TormyLogoURL = "https://www.facebook.com/TormyVanCool.MediaProductions" +local TVCLogoURL = "https://www.facebook.com/vancoolelektroakustik" + + +--------------------------------------------- +-- BASE64 DECODE +--------------------------------------------- +local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +function dec(data) + data = string.gsub(data, '[^'..b..'=]', '') + return (data:gsub('.', function(x) + if (x == '=') then return '' end + local r,f='',(b:find(x)-1) + for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end + return r; + end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x) + if (#x ~= 8) then return '' end + local c=0 + for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end + return string.char(c) + end)) +end + + +--------------------------------------------- +-- IDENTIFIES THE O.S. +--------------------------------------------- +function getOS() + local OS = reaper.GetOS() + local a = {} + if OS == "Win32" or OS == "Win64" then + a.slash = '\\' + a.os = "w" + end + if OS == "OSX32" or OS == "OSX64" or OS == "macOS-arm64" then + a.slash = '/' + a.os = "m" + end + if OS == "Other" then + a.slash = '/' + a.os = "l" + end + return a +end + + +local jQuery = [[LyohIGpRdWVyeSB2My41LjEgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lLmRvY3VtZW50P3QoZSwhMCk6ZnVuY3Rpb24oZSl7aWYoIWUuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIHQoZSl9OnQoZSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKEMsZSl7InVzZSBzdHJpY3QiO3ZhciB0PVtdLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mLHM9dC5zbGljZSxnPXQuZmxhdD9mdW5jdGlvbihlKXtyZXR1cm4gdC5mbGF0LmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiB0LmNvbmNhdC5hcHBseShbXSxlKX0sdT10LnB1c2gsaT10LmluZGV4T2Ysbj17fSxvPW4udG9TdHJpbmcsdj1uLmhhc093blByb3BlcnR5LGE9di50b1N0cmluZyxsPWEuY2FsbChPYmplY3QpLHk9e30sbT1mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlfSx4PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlPT09ZS53aW5kb3d9LEU9Qy5kb2N1bWVudCxjPXt0eXBlOiEwLHNyYzohMCxub25jZTohMCxub01vZHVsZTohMH07ZnVuY3Rpb24gYihlLHQsbil7dmFyIHIsaSxvPShuPW58fEUpLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2lmKG8udGV4dD1lLHQpZm9yKHIgaW4gYykoaT10W3JdfHx0LmdldEF0dHJpYnV0ZSYmdC5nZXRBdHRyaWJ1dGUocikpJiZvLnNldEF0dHJpYnV0ZShyLGkpO24uaGVhZC5hcHBlbmRDaGlsZChvKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pfWZ1bmN0aW9uIHcoZSl7cmV0dXJuIG51bGw9PWU/ZSsiIjoib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlP25bby5jYWxsKGUpXXx8Im9iamVjdCI6dHlwZW9mIGV9dmFyIGY9IjMuNS4xIixTPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBTLmZuLmluaXQoZSx0KX07ZnVuY3Rpb24gcChlKXt2YXIgdD0hIWUmJiJsZW5ndGgiaW4gZSYmZS5sZW5ndGgsbj13KGUpO3JldHVybiFtKGUpJiYheChlKSYmKCJhcnJheSI9PT1ufHwwPT09dHx8Im51bWJlciI9PXR5cGVvZiB0JiYwPHQmJnQtMSBpbiBlKX1TLmZuPVMucHJvdG90eXBlPXtqcXVlcnk6Zixjb25zdHJ1Y3RvcjpTLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gcy5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/cy5jYWxsKHRoaXMpOmU8MD90aGlzW2UrdGhpcy5sZW5ndGhdOnRoaXNbZV19LHB1c2hTdGFjazpmdW5jdGlvbihlKXt2YXIgdD1TLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxlKTtyZXR1cm4gdC5wcmV2T2JqZWN0PXRoaXMsdH0sZWFjaDpmdW5jdGlvbihlKXtyZXR1cm4gUy5lYWNoKHRoaXMsZSl9LG1hcDpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy5tYXAodGhpcyxmdW5jdGlvbihlLHQpe3JldHVybiBuLmNhbGwoZSx0LGUpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhzLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGV2ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy5ncmVwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4odCsxKSUyfSkpfSxvZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy5ncmVwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCUyfSkpfSxlcTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmxlbmd0aCxuPStlKyhlPDA/dDowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soMDw9biYmbjx0P1t0aGlzW25dXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDp1LHNvcnQ6dC5zb3J0LHNwbGljZTp0LnNwbGljZX0sUy5leHRlbmQ9Uy5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpLG8sYT1hcmd1bWVudHNbMF18fHt9LHM9MSx1PWFyZ3VtZW50cy5sZW5ndGgsbD0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgYSYmKGw9YSxhPWFyZ3VtZW50c1tzXXx8e30scysrKSwib2JqZWN0Ij09dHlwZW9mIGF8fG0oYSl8fChhPXt9KSxzPT09dSYmKGE9dGhpcyxzLS0pO3M8dTtzKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW3NdKSlmb3IodCBpbiBlKXI9ZVt0XSwiX19wcm90b19fIiE9PXQmJmEhPT1yJiYobCYmciYmKFMuaXNQbGFpbk9iamVjdChyKXx8KGk9QXJyYXkuaXNBcnJheShyKSkpPyhuPWFbdF0sbz1pJiYhQXJyYXkuaXNBcnJheShuKT9bXTppfHxTLmlzUGxhaW5PYmplY3Qobik/bjp7fSxpPSExLGFbdF09Uy5leHRlbmQobCxvLHIpKTp2b2lkIDAhPT1yJiYoYVt0XT1yKSk7cmV0dXJuIGF9LFMuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhmK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGUpfSxub29wOmZ1bmN0aW9uKCl7fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuISghZXx8IltvYmplY3QgT2JqZWN0XSIhPT1vLmNhbGwoZSkpJiYoISh0PXIoZSkpfHwiZnVuY3Rpb24iPT10eXBlb2Yobj12LmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcikmJmEuY2FsbChuKT09PWwpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oZSx0LG4pe2IoZSx7bm9uY2U6dCYmdC5ub25jZX0sbil9LGVhY2g6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTA7aWYocChlKSl7Zm9yKG49ZS5sZW5ndGg7cjxuO3IrKylpZighMT09PX +QuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWt9ZWxzZSBmb3IociBpbiBlKWlmKCExPT09dC5jYWxsKGVbcl0scixlW3JdKSlicmVhaztyZXR1cm4gZX0sbWFrZUFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG49dHx8W107cmV0dXJuIG51bGwhPWUmJihwKE9iamVjdChlKSk/Uy5tZXJnZShuLCJzdHJpbmciPT10eXBlb2YgZT9bZV06ZSk6dS5jYWxsKG4sZSkpLG59LGluQXJyYXk6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsPT10Py0xOmkuY2FsbCh0LGUsbil9LG1lcmdlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPSt0Lmxlbmd0aCxyPTAsaT1lLmxlbmd0aDtyPG47cisrKWVbaSsrXT10W3JdO3JldHVybiBlLmxlbmd0aD1pLGV9LGdyZXA6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1bXSxpPTAsbz1lLmxlbmd0aCxhPSFuO2k8bztpKyspIXQoZVtpXSxpKSE9PWEmJnIucHVzaChlW2ldKTtyZXR1cm4gcn0sbWFwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89MCxhPVtdO2lmKHAoZSkpZm9yKHI9ZS5sZW5ndGg7bzxyO28rKyludWxsIT0oaT10KGVbb10sbyxuKSkmJmEucHVzaChpKTtlbHNlIGZvcihvIGluIGUpbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7cmV0dXJuIGcoYSl9LGd1aWQ6MSxzdXBwb3J0Onl9KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoUy5mbltTeW1ib2wuaXRlcmF0b3JdPXRbU3ltYm9sLml0ZXJhdG9yXSksUy5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe25bIltvYmplY3QgIit0KyJdIl09dC50b0xvd2VyQ2FzZSgpfSk7dmFyIGQ9ZnVuY3Rpb24obil7dmFyIGUsZCxiLG8saSxoLGYsZyx3LHUsbCxULEMsYSxFLHYscyxjLHksUz0ic2l6emxlIisxKm5ldyBEYXRlLHA9bi5kb2N1bWVudCxrPTAscj0wLG09dWUoKSx4PXVlKCksQT11ZSgpLE49dWUoKSxEPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10JiYobD0hMCksMH0saj17fS5oYXNPd25Qcm9wZXJ0eSx0PVtdLHE9dC5wb3AsTD10LnB1c2gsSD10LnB1c2gsTz10LnNsaWNlLFA9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspaWYoZVtuXT09PXQpcmV0dXJuIG47cmV0dXJuLTF9LFI9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixJPSIoPzpcXFxcW1xcZGEtZkEtRl17MSw2fSIrTSsiP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlwwLVxceDdmXSkrIixXPSJcXFsiK00rIiooIitJKyIpKD86IitNKyIqKFsqXiR8IX5dPz0pIitNKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrSSsiKSl8KSIrTSsiKlxcXSIsRj0iOigiK0krIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK1crIikqKXwuKilcXCl8KSIsQj1uZXcgUmVnRXhwKE0rIisiLCJnIiksJD1uZXcgUmVnRXhwKCJeIitNKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK00rIiskIiwiZyIpLF89bmV3IFJlZ0V4cCgiXiIrTSsiKiwiK00rIioiKSx6PW5ldyBSZWdFeHAoIl4iK00rIiooWz4rfl18IitNKyIpIitNKyIqIiksVT1uZXcgUmVnRXhwKE0rInw+IiksWD1uZXcgUmVnRXhwKEYpLFY9bmV3IFJlZ0V4cCgiXiIrSSsiJCIpLEc9e0lEOm5ldyBSZWdFeHAoIl4jKCIrSSsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitJKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitJKyJ8WypdKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrVyksUFNFVURPOm5ldyBSZWdFeHAoIl4iK0YpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK1IrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L0hUTUwkL2ksUT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLEo9L15oXGQkL2ksSz0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGVlPS9bK35dLyx0ZT1uZXcgUmVnRXhwKCJcXFxcW1xcZGEtZkEtRl17MSw2fSIrTSsiP3xcXFxcKFteXFxyXFxuXFxmXSkiLCJnIiksbmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj0iMHgiK2Uuc2xpY2UoMSktNjU1MzY7cmV0dXJuIHR8fChuPDA/U3RyaW5nLmZyb21DaGFyQ29kZShuKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKG4+PjEwfDU1Mjk2LDEwMjMmbnw1NjMyMCkpfSxyZT0vKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZyxpZT1mdW5jdGlvbihlLHQpe3JldHVybiB0PyJcMCI9PT1lPyJcdWZmZmQiOmUuc2xpY2UoMCwtMSkrIlxcIitlLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSkudG9TdHJpbmcoMTYpKyIgIjoiXFwiK2V9LG9lPWZ1bmN0aW9uKCl7VCgpfSxhZT1iZShmdW5jdGlvbihlKXtyZXR1cm4hMD09PWUuZGlzYWJsZWQmJiJmaWVsZHNldCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9LHtkaXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7SC5hcHBseSh0PU8uY2FsbChwLmNoaWxkTm9kZXMpLHAuY2hpbGROb2RlcyksdFtwLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChlKXtIPXthcHBseTp0Lmxlbmd0aD9mdW5jdGlvbihlLHQpe0wuYXBwbHkoZ +SxPLmNhbGwodCkpfTpmdW5jdGlvbihlLHQpe3ZhciBuPWUubGVuZ3RoLHI9MDt3aGlsZShlW24rK109dFtyKytdKTtlLmxlbmd0aD1uLTF9fX1mdW5jdGlvbiBzZSh0LGUsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmPWUmJmUub3duZXJEb2N1bWVudCxwPWU/ZS5ub2RlVHlwZTo5O2lmKG49bnx8W10sInN0cmluZyIhPXR5cGVvZiB0fHwhdHx8MSE9PXAmJjkhPT1wJiYxMSE9PXApcmV0dXJuIG47aWYoIXImJihUKGUpLGU9ZXx8QyxFKSl7aWYoMTEhPT1wJiYodT1aLmV4ZWModCkpKWlmKGk9dVsxXSl7aWYoOT09PXApe2lmKCEoYT1lLmdldEVsZW1lbnRCeUlkKGkpKSlyZXR1cm4gbjtpZihhLmlkPT09aSlyZXR1cm4gbi5wdXNoKGEpLG59ZWxzZSBpZihmJiYoYT1mLmdldEVsZW1lbnRCeUlkKGkpKSYmeShlLGEpJiZhLmlkPT09aSlyZXR1cm4gbi5wdXNoKGEpLG59ZWxzZXtpZih1WzJdKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KSksbjtpZigoaT11WzNdKSYmZC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEguYXBwbHkobixlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaSkpLG59aWYoZC5xc2EmJiFOW3QrIiAiXSYmKCF2fHwhdi50ZXN0KHQpKSYmKDEhPT1wfHwib2JqZWN0IiE9PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkpe2lmKGM9dCxmPWUsMT09PXAmJihVLnRlc3QodCl8fHoudGVzdCh0KSkpeyhmPWVlLnRlc3QodCkmJnllKGUucGFyZW50Tm9kZSl8fGUpPT09ZSYmZC5zY29wZXx8KChzPWUuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXMucmVwbGFjZShyZSxpZSk6ZS5zZXRBdHRyaWJ1dGUoImlkIixzPVMpKSxvPShsPWgodCkpLmxlbmd0aDt3aGlsZShvLS0pbFtvXT0ocz8iIyIrczoiOnNjb3BlIikrIiAiK3hlKGxbb10pO2M9bC5qb2luKCIsIil9dHJ5e3JldHVybiBILmFwcGx5KG4sZi5xdWVyeVNlbGVjdG9yQWxsKGMpKSxufWNhdGNoKGUpe04odCwhMCl9ZmluYWxseXtzPT09UyYmZS5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gZyh0LnJlcGxhY2UoJCwiJDEiKSxlLG4scil9ZnVuY3Rpb24gdWUoKXt2YXIgcj1bXTtyZXR1cm4gZnVuY3Rpb24gZSh0LG4pe3JldHVybiByLnB1c2godCsiICIpPmIuY2FjaGVMZW5ndGgmJmRlbGV0ZSBlW3Iuc2hpZnQoKV0sZVt0KyIgIl09bn19ZnVuY3Rpb24gbGUoZSl7cmV0dXJuIGVbU109ITAsZX1mdW5jdGlvbiBjZShlKXt2YXIgdD1DLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhZSh0KX1jYXRjaChlKXtyZXR1cm4hMX1maW5hbGx5e3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHQ9bnVsbH19ZnVuY3Rpb24gZmUoZSx0KXt2YXIgbj1lLnNwbGl0KCJ8Iikscj1uLmxlbmd0aDt3aGlsZShyLS0pYi5hdHRySGFuZGxlW25bcl1dPXR9ZnVuY3Rpb24gcGUoZSx0KXt2YXIgbj10JiZlLHI9biYmMT09PWUubm9kZVR5cGUmJjE9PT10Lm5vZGVUeXBlJiZlLnNvdXJjZUluZGV4LXQuc291cmNlSW5kZXg7aWYocilyZXR1cm4gcjtpZihuKXdoaWxlKG49bi5uZXh0U2libGluZylpZihuPT09dClyZXR1cm4tMTtyZXR1cm4gZT8xOi0xfWZ1bmN0aW9uIGRlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZlLnR5cGU9PT10fX1mdW5jdGlvbiBoZShuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybigiaW5wdXQiPT09dHx8ImJ1dHRvbiI9PT10KSYmZS50eXBlPT09bn19ZnVuY3Rpb24gZ2UodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiJmb3JtImluIGU/ZS5wYXJlbnROb2RlJiYhMT09PWUuZGlzYWJsZWQ/ImxhYmVsImluIGU/ImxhYmVsImluIGUucGFyZW50Tm9kZT9lLnBhcmVudE5vZGUuZGlzYWJsZWQ9PT10OmUuZGlzYWJsZWQ9PT10OmUuaXNEaXNhYmxlZD09PXR8fGUuaXNEaXNhYmxlZCE9PSF0JiZhZShlKT09PXQ6ZS5kaXNhYmxlZD09PXQ6ImxhYmVsImluIGUmJmUuZGlzYWJsZWQ9PT10fX1mdW5jdGlvbiB2ZShhKXtyZXR1cm4gbGUoZnVuY3Rpb24obyl7cmV0dXJuIG89K28sbGUoZnVuY3Rpb24oZSx0KXt2YXIgbixyPWEoW10sZS5sZW5ndGgsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPXJbaV1dJiYoZVtuXT0hKHRbbl09ZVtuXSkpfSl9KX1mdW5jdGlvbiB5ZShlKXtyZXR1cm4gZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZlfWZvcihlIGluIGQ9c2Uuc3VwcG9ydD17fSxpPXNlLmlzWE1MPWZ1bmN0aW9uKGUpe3ZhciB0PWUubmFtZXNwYWNlVVJJLG49KGUub3duZXJEb2N1bWVudHx8ZSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiFZLnRlc3QodHx8biYmbi5ub2RlTmFtZXx8IkhUTUwiKX0sVD1zZS5zZXREb2N1bWVudD1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZT9lLm93bmVyRG9jdW1lbnR8fGU6cDtyZXR1cm4gciE9QyYmOT09PXIubm9kZVR5cGUmJnIuZG9jdW1lbnRFbGVtZW50JiYoYT0oQz1yKS5kb2N1bWVudEVsZW1lbnQsRT0haShDKSxwIT1DJiYobj1DLmRlZmF1bHRWaWV3KSYmbi50b3AhPT1uJiYobi5hZGRFdmVudExpc3RlbmVyP24uYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixvZSwhMSk6bi5hdHRhY2hFdmVudCYmbi5hdHRhY2hFdmVudCgib251bmxvYWQiLG9lKSksZC5zY29wZT1jZShmdW5jdGlvbihlKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZChDLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwidW5kZWZpbmVkIiE9dHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbCYmIWUucXVlcnlTZWxlY3RvckFsbCgiOnNjb3BlIGZpZWxkc2V0IGRpdiIpLmxlbmd0aH0pLGQuYXR0cmlidXRlcz1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGFzc05hbWU9ImkiLCFlLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxkLmdldEVsZW1lbnRzQnlUYWdOYW1lPWNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGVuZENoaWxkKEMuY3JlYXRlQ29tbWVudCgiIikpLCFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSks +Z +C5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPUsudGVzdChDLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGQuZ2V0QnlJZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlKS5pZD1TLCFDLmdldEVsZW1lbnRzQnlOYW1lfHwhQy5nZXRFbGVtZW50c0J5TmFtZShTKS5sZW5ndGh9KSxkLmdldEJ5SWQ/KGIuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSh0ZSxuZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKT09PXR9fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuPXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIG4/W25dOltdfX0pOihiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiB0JiZ0LnZhbHVlPT09bn19LGIuZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmRSl7dmFyIG4scixpLG89dC5nZXRFbGVtZW50QnlJZChlKTtpZihvKXtpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb107aT10LmdldEVsZW1lbnRzQnlOYW1lKGUpLHI9MDt3aGlsZShvPWlbcisrXSlpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb119cmV0dXJuW119fSksYi5maW5kLlRBRz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGUsdCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lP3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk6ZC5xc2E/dC5xdWVyeVNlbGVjdG9yQWxsKGUpOnZvaWQgMH06ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9MCxvPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk7aWYoIioiPT09ZSl7d2hpbGUobj1vW2krK10pMT09PW4ubm9kZVR5cGUmJnIucHVzaChuKTtyZXR1cm4gcn1yZXR1cm4gb30sYi5maW5kLkNMQVNTPWQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmRSlyZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpfSxzPVtdLHY9W10sKGQucXNhPUsudGVzdChDLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGNlKGZ1bmN0aW9uKGUpe3ZhciB0O2EuYXBwZW5kQ2hpbGQoZSkuaW5uZXJIVE1MPSI8YSBpZD0nIitTKyInPjwvYT48c2VsZWN0IGlkPSciK1MrIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmdi5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8di5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK1IrIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49IitTKyItXSIpLmxlbmd0aHx8di5wdXNoKCJ+PSIpLCh0PUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJuYW1lIiwiIiksZS5hcHBlbmRDaGlsZCh0KSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPScnXSIpLmxlbmd0aHx8di5wdXNoKCJcXFsiK00rIipuYW1lIitNKyIqPSIrTSsiKig/OicnfFwiXCIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8di5wdXNoKCI6Y2hlY2tlZCIpLGUucXVlcnlTZWxlY3RvckFsbCgiYSMiK1MrIisqIikubGVuZ3RofHx2LnB1c2goIi4jLitbK35dIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJcXFxmIiksdi5wdXNoKCJbXFxyXFxuXFxmXSIpfSksY2UoZnVuY3Rpb24oZSl7ZS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Quc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmdi5wdXNoKCJuYW1lIitNKyIqWypeJHwhfl0/PSIpLDIhPT1lLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZD0hMCwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnYucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSx2LnB1c2goIiwuKjoiKX0pKSwoZC5tYXRjaGVzU2VsZWN0b3I9Sy50ZXN0KGM9YS5tYXRjaGVzfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEub01hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcikpJiZjZShmdW5jdGlvbihlKXtkLmRpc2Nvbm5lY3RlZE1hdGNoPWMuY2FsbChlLCIqIiksYy5jYWxsKGUsIltzIT0nJ106eCIpLHMucHVzaCgiIT0iLEYpfSksdj12Lmxlbmd0aCYmbmV3IFJlZ0V4cCh2LmpvaW4oInwiKSkscz1zLmxlbmd0aCYmbmV3IFJlZ0V4cChzLmpvaW4oInwiKSksdD1LLnRlc3QoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikseT10fHxLLnRlc3QoYS5jb250YWlucyk/ZnVuY3Rpb24oZSx0KXt2YXIgbj05PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLHI9dCYmdC5wYXJlbnROb2RlO3JldHVybiBlPT09cnx8ISghcnx8MSE9PXIubm9kZVR5cGV8fCEobi5jb250YWlucz9uLmNvbnRhaW5zKHIpOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikpKX06ZnVuY3Rpb24oZSx0KXtpZih0KXdoaWxl +KHQ9dC5wYXJlbnROb2RlKWlmKHQ9PT1lKXJldHVybiEwO3JldHVybiExfSxEPXQ/ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gbD0hMCwwO3ZhciBuPSFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBufHwoMSYobj0oZS5vd25lckRvY3VtZW50fHxlKT09KHQub3duZXJEb2N1bWVudHx8dCk/ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KToxKXx8IWQuc29ydERldGFjaGVkJiZ0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpPT09bj9lPT1DfHxlLm93bmVyRG9jdW1lbnQ9PXAmJnkocCxlKT8tMTp0PT1DfHx0Lm93bmVyRG9jdW1lbnQ9PXAmJnkocCx0KT8xOnU/UCh1LGUpLVAodSx0KTowOjQmbj8tMToxKX06ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gbD0hMCwwO3ZhciBuLHI9MCxpPWUucGFyZW50Tm9kZSxvPXQucGFyZW50Tm9kZSxhPVtlXSxzPVt0XTtpZighaXx8IW8pcmV0dXJuIGU9PUM/LTE6dD09Qz8xOmk/LTE6bz8xOnU/UCh1LGUpLVAodSx0KTowO2lmKGk9PT1vKXJldHVybiBwZShlLHQpO249ZTt3aGlsZShuPW4ucGFyZW50Tm9kZSlhLnVuc2hpZnQobik7bj10O3doaWxlKG49bi5wYXJlbnROb2RlKXMudW5zaGlmdChuKTt3aGlsZShhW3JdPT09c1tyXSlyKys7cmV0dXJuIHI/cGUoYVtyXSxzW3JdKTphW3JdPT1wPy0xOnNbcl09PXA/MTowfSksQ30sc2UubWF0Y2hlcz1mdW5jdGlvbihlLHQpe3JldHVybiBzZShlLG51bGwsbnVsbCx0KX0sc2UubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGUsdCl7aWYoVChlKSxkLm1hdGNoZXNTZWxlY3RvciYmRSYmIU5bdCsiICJdJiYoIXN8fCFzLnRlc3QodCkpJiYoIXZ8fCF2LnRlc3QodCkpKXRyeXt2YXIgbj1jLmNhbGwoZSx0KTtpZihufHxkLmRpc2Nvbm5lY3RlZE1hdGNofHxlLmRvY3VtZW50JiYxMSE9PWUuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIG59Y2F0Y2goZSl7Tih0LCEwKX1yZXR1cm4gMDxzZSh0LEMsbnVsbCxbZV0pLmxlbmd0aH0sc2UuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZS5vd25lckRvY3VtZW50fHxlKSE9QyYmVChlKSx5KGUsdCl9LHNlLmF0dHI9ZnVuY3Rpb24oZSx0KXsoZS5vd25lckRvY3VtZW50fHxlKSE9QyYmVChlKTt2YXIgbj1iLmF0dHJIYW5kbGVbdC50b0xvd2VyQ2FzZSgpXSxyPW4mJmouY2FsbChiLmF0dHJIYW5kbGUsdC50b0xvd2VyQ2FzZSgpKT9uKGUsdCwhRSk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1yP3I6ZC5hdHRyaWJ1dGVzfHwhRT9lLmdldEF0dHJpYnV0ZSh0KToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNpZmllZD9yLnZhbHVlOm51bGx9LHNlLmVzY2FwZT1mdW5jdGlvbihlKXtyZXR1cm4oZSsiIikucmVwbGFjZShyZSxpZSl9LHNlLmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0sc2UudW5pcXVlU29ydD1mdW5jdGlvbihlKXt2YXIgdCxuPVtdLHI9MCxpPTA7aWYobD0hZC5kZXRlY3REdXBsaWNhdGVzLHU9IWQuc29ydFN0YWJsZSYmZS5zbGljZSgwKSxlLnNvcnQoRCksbCl7d2hpbGUodD1lW2krK10pdD09PWVbaV0mJihyPW4ucHVzaChpKSk7d2hpbGUoci0tKWUuc3BsaWNlKG5bcl0sMSl9cmV0dXJuIHU9bnVsbCxlfSxvPXNlLmdldFRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj0iIixyPTAsaT1lLm5vZGVUeXBlO2lmKGkpe2lmKDE9PT1pfHw5PT09aXx8MTE9PT1pKXtpZigic3RyaW5nIj09dHlwZW9mIGUudGV4dENvbnRlbnQpcmV0dXJuIGUudGV4dENvbnRlbnQ7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKW4rPW8oZSl9ZWxzZSBpZigzPT09aXx8ND09PWkpcmV0dXJuIGUubm9kZVZhbHVlfWVsc2Ugd2hpbGUodD1lW3IrK10pbis9byh0KTtyZXR1cm4gbn0sKGI9c2Uuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86bGUsbWF0Y2g6RyxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS5yZXBsYWNlKHRlLG5lKSxlWzNdPShlWzNdfHxlWzRdfHxlWzVdfHwiIikucmVwbGFjZSh0ZSxuZSksIn49Ij09PWVbMl0mJihlWzNdPSIgIitlWzNdKyIgIiksZS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihlKXtyZXR1cm4gZVsxXT1lWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1lWzFdLnNsaWNlKDAsMyk/KGVbM118fHNlLmVycm9yKGVbMF0pLGVbNF09KyhlWzRdP2VbNV0rKGVbNl18fDEpOjIqKCJldmVuIj09PWVbM118fCJvZGQiPT09ZVszXSkpLGVbNV09KyhlWzddK2VbOF18fCJvZGQiPT09ZVszXSkpOmVbM10mJnNlLmVycm9yKGVbMF0pLGV9LFBTRVVETzpmdW5jdGlvbihlKXt2YXIgdCxuPSFlWzZdJiZlWzJdO3JldHVybiBHLkNISUxELnRlc3QoZVswXSk/bnVsbDooZVszXT9lWzJdPWVbNF18fGVbNV18fCIiOm4mJlgudGVzdChuKSYmKHQ9aChuLCEwKSkmJih0PW4uaW5kZXhPZigiKSIsbi5sZW5ndGgtdCktbi5sZW5ndGgpJiYoZVswXT1lWzBdLnNsaWNlKDAsdCksZVsyXT1uLnNsaWNlKDAsdCkpLGUuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09ZT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dH19LENMQVNTOmZ1bmN0aW9uKGUpe3ZhciB0PW1bZSsiICJdO3JldHVybiB0fHwodD1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2UrIigiK00rInwkKSIpKSYmbShlLGZ1bmN0aW9uKGUpe3JldHVybiB0LnRlc3QoInN0cmluZyI9PXR5cGVvZiBlLmNsYXNzTmFtZSYmZS5jbGFzc05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRBdHRyaWJ1dGU +mJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihuLHIsaSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PXNlLmF0dHIoZSxuKTtyZXR1cm4gbnVsbD09dD8iIT0iPT09cjohcnx8KHQrPSIiLCI9Ij09PXI/dD09PWk6IiE9Ij09PXI/dCE9PWk6Il49Ij09PXI/aSYmMD09PXQuaW5kZXhPZihpKToiKj0iPT09cj9pJiYtMTx0LmluZGV4T2YoaSk6IiQ9Ij09PXI/aSYmdC5zbGljZSgtaS5sZW5ndGgpPT09aToifj0iPT09cj8tMTwoIiAiK3QucmVwbGFjZShCLCIgIikrIiAiKS5pbmRleE9mKGkpOiJ8PSI9PT1yJiYodD09PWl8fHQuc2xpY2UoMCxpLmxlbmd0aCsxKT09PWkrIi0iKSl9fSxDSElMRDpmdW5jdGlvbihoLGUsdCxnLHYpe3ZhciB5PSJudGgiIT09aC5zbGljZSgwLDMpLG09Imxhc3QiIT09aC5zbGljZSgtNCkseD0ib2YtdHlwZSI9PT1lO3JldHVybiAxPT09ZyYmMD09PXY/ZnVuY3Rpb24oZSl7cmV0dXJuISFlLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbD15IT09bT8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLGM9ZS5wYXJlbnROb2RlLGY9eCYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHA9IW4mJiF4LGQ9ITE7aWYoYyl7aWYoeSl7d2hpbGUobCl7YT1lO3doaWxlKGE9YVtsXSlpZih4P2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWY6MT09PWEubm9kZVR5cGUpcmV0dXJuITE7dT1sPSJvbmx5Ij09PWgmJiF1JiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKHU9W20/Yy5maXJzdENoaWxkOmMubGFzdENoaWxkXSxtJiZwKXtkPShzPShyPShpPShvPShhPWMpW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1rJiZyWzFdKSYmclsyXSxhPXMmJmMuY2hpbGROb2Rlc1tzXTt3aGlsZShhPSsrcyYmYSYmYVtsXXx8KGQ9cz0wKXx8dS5wb3AoKSlpZigxPT09YS5ub2RlVHlwZSYmKytkJiZhPT09ZSl7aVtoXT1bayxzLGRdO2JyZWFrfX1lbHNlIGlmKHAmJihkPXM9KHI9KGk9KG89KGE9ZSlbU118fChhW1NdPXt9KSlbYS51bmlxdWVJRF18fChvW2EudW5pcXVlSURdPXt9KSlbaF18fFtdKVswXT09PWsmJnJbMV0pLCExPT09ZCl3aGlsZShhPSsrcyYmYSYmYVtsXXx8KGQ9cz0wKXx8dS5wb3AoKSlpZigoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKSYmKytkJiYocCYmKChpPShvPWFbU118fChhW1NdPXt9KSlbYS51bmlxdWVJRF18fChvW2EudW5pcXVlSURdPXt9KSlbaF09W2ssZF0pLGE9PT1lKSlicmVhaztyZXR1cm4oZC09dik9PT1nfHxkJWc9PTAmJjA8PWQvZ319fSxQU0VVRE86ZnVuY3Rpb24oZSxvKXt2YXIgdCxhPWIucHNldWRvc1tlXXx8Yi5zZXRGaWx0ZXJzW2UudG9Mb3dlckNhc2UoKV18fHNlLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrZSk7cmV0dXJuIGFbU10/YShvKToxPGEubGVuZ3RoPyh0PVtlLGUsIiIsb10sYi5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/bGUoZnVuY3Rpb24oZSx0KXt2YXIgbixyPWEoZSxvKSxpPXIubGVuZ3RoO3doaWxlKGktLSllW249UChlLHJbaV0pXT0hKHRbbl09cltpXSl9KTpmdW5jdGlvbihlKXtyZXR1cm4gYShlLDAsdCl9KTphfX0scHNldWRvczp7bm90OmxlKGZ1bmN0aW9uKGUpe3ZhciByPVtdLGk9W10scz1mKGUucmVwbGFjZSgkLCIkMSIpKTtyZXR1cm4gc1tTXT9sZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvPXMoZSxudWxsLHIsW10pLGE9ZS5sZW5ndGg7d2hpbGUoYS0tKShpPW9bYV0pJiYoZVthXT0hKHRbYV09aSkpfSk6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiByWzBdPWUscyhyLG51bGwsbixpKSxyWzBdPW51bGwsIWkucG9wKCl9fSksaGFzOmxlKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gMDxzZSh0LGUpLmxlbmd0aH19KSxjb250YWluczpsZShmdW5jdGlvbih0KXtyZXR1cm4gdD10LnJlcGxhY2UodGUsbmUpLGZ1bmN0aW9uKGUpe3JldHVybi0xPChlLnRleHRDb250ZW50fHxvKGUpKS5pbmRleE9mKHQpfX0pLGxhbmc6bGUoZnVuY3Rpb24obil7cmV0dXJuIFYudGVzdChufHwiIil8fHNlLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK24pLG49bi5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGUpe3ZhciB0O2Rve2lmKHQ9RT9lLmxhbmc6ZS5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGUuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuKHQ9dC50b0xvd2VyQ2FzZSgpKT09PW58fDA9PT10LmluZGV4T2YobisiLSIpfXdoaWxlKChlPWUucGFyZW50Tm9kZSkmJjE9PT1lLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9bi5sb2NhdGlvbiYmbi5sb2NhdGlvbi5oYXNoO3JldHVybiB0JiZ0LnNsaWNlKDEpPT09ZS5pZH0scm9vdDpmdW5jdGlvbihlKXtyZXR1cm4gZT09PWF9LGZvY3VzOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09Qy5hY3RpdmVFbGVtZW50JiYoIUMuaGFzRm9jdXN8fEMuaGFzRm9jdXMoKSkmJiEhKGUudHlwZXx8ZS5ocmVmfHx+ZS50YWJJbmRleCl9LGVuYWJsZWQ6Z2UoITEpLGRpc2FibGVkOmdlKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dCYmISFlLmNoZWNrZWR8fCJvcHRpb24iPT09dCYmISFlLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwhMD09PWUuc2VsZWN0ZWR9LGVtcHR5OmZ1bmN0aW9uKGUpe2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZylpZihlLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihlKXtyZXR1cm4hYi5wc2V1ZG9zLmVtcHR5KGUpfSxoZWFkZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIEoudGVzdChlLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFEudGVzdChlLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG +9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dCYmImJ1dHRvbiI9PT1lLnR5cGV8fCJidXR0b24iPT09dH0sdGV4dDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4iaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1lLnR5cGUmJihudWxsPT0odD1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09dC50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6dmUoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnZlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuW3QtMV19KSxlcTp2ZShmdW5jdGlvbihlLHQsbil7cmV0dXJuW248MD9uK3Q6bl19KSxldmVuOnZlKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksb2RkOnZlKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTE7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksbHQ6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0OnQ8bj90Om47MDw9LS1yOyllLnB1c2gocik7cmV0dXJuIGV9KSxndDp2ZShmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW48MD9uK3Q6bjsrK3I8dDspZS5wdXNoKHIpO3JldHVybiBlfSl9fSkucHNldWRvcy5udGg9Yi5wc2V1ZG9zLmVxLHtyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSliLnBzZXVkb3NbZV09ZGUoZSk7Zm9yKGUgaW57c3VibWl0OiEwLHJlc2V0OiEwfSliLnBzZXVkb3NbZV09aGUoZSk7ZnVuY3Rpb24gbWUoKXt9ZnVuY3Rpb24geGUoZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aCxyPSIiO3Q8bjt0Kyspcis9ZVt0XS52YWx1ZTtyZXR1cm4gcn1mdW5jdGlvbiBiZShzLGUsdCl7dmFyIHU9ZS5kaXIsbD1lLm5leHQsYz1sfHx1LGY9dCYmInBhcmVudE5vZGUiPT09YyxwPXIrKztyZXR1cm4gZS5maXJzdD9mdW5jdGlvbihlLHQsbil7d2hpbGUoZT1lW3VdKWlmKDE9PT1lLm5vZGVUeXBlfHxmKXJldHVybiBzKGUsdCxuKTtyZXR1cm4hMX06ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhPVtrLHBdO2lmKG4pe3doaWxlKGU9ZVt1XSlpZigoMT09PWUubm9kZVR5cGV8fGYpJiZzKGUsdCxuKSlyZXR1cm4hMH1lbHNlIHdoaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilpZihpPShvPWVbU118fChlW1NdPXt9KSlbZS51bmlxdWVJRF18fChvW2UudW5pcXVlSURdPXt9KSxsJiZsPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKWU9ZVt1XXx8ZTtlbHNle2lmKChyPWlbY10pJiZyWzBdPT09ayYmclsxXT09PXApcmV0dXJuIGFbMl09clsyXTtpZigoaVtjXT1hKVsyXT1zKGUsdCxuKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24gd2UoaSl7cmV0dXJuIDE8aS5sZW5ndGg/ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWkubGVuZ3RoO3doaWxlKHItLSlpZighaVtyXShlLHQsbikpcmV0dXJuITE7cmV0dXJuITB9OmlbMF19ZnVuY3Rpb24gVGUoZSx0LG4scixpKXtmb3IodmFyIG8sYT1bXSxzPTAsdT1lLmxlbmd0aCxsPW51bGwhPXQ7czx1O3MrKykobz1lW3NdKSYmKG4mJiFuKG8scixpKXx8KGEucHVzaChvKSxsJiZ0LnB1c2gocykpKTtyZXR1cm4gYX1mdW5jdGlvbiBDZShkLGgsZyx2LHksZSl7cmV0dXJuIHYmJiF2W1NdJiYodj1DZSh2KSkseSYmIXlbU10mJih5PUNlKHksZSkpLGxlKGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPVtdLHU9W10sbD10Lmxlbmd0aCxjPWV8fGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspc2UoZSx0W3JdLG4pO3JldHVybiBufShofHwiKiIsbi5ub2RlVHlwZT9bbl06bixbXSksZj0hZHx8IWUmJmg/YzpUZShjLHMsZCxuLHIpLHA9Zz95fHwoZT9kOmx8fHYpP1tdOnQ6ZjtpZihnJiZnKGYscCxuLHIpLHYpe2k9VGUocCx1KSx2KGksW10sbixyKSxvPWkubGVuZ3RoO3doaWxlKG8tLSkoYT1pW29dKSYmKHBbdVtvXV09IShmW3Vbb11dPWEpKX1pZihlKXtpZih5fHxkKXtpZih5KXtpPVtdLG89cC5sZW5ndGg7d2hpbGUoby0tKShhPXBbb10pJiZpLnB1c2goZltvXT1hKTt5KG51bGwscD1bXSxpLHIpfW89cC5sZW5ndGg7d2hpbGUoby0tKShhPXBbb10pJiYtMTwoaT15P1AoZSxhKTpzW29dKSYmKGVbaV09ISh0W2ldPWEpKX19ZWxzZSBwPVRlKHA9PT10P3Auc3BsaWNlKGwscC5sZW5ndGgpOnApLHk/eShudWxsLHQscCxyKTpILmFwcGx5KHQscCl9KX1mdW5jdGlvbiBFZShlKXtmb3IodmFyIGksdCxuLHI9ZS5sZW5ndGgsbz1iLnJlbGF0aXZlW2VbMF0udHlwZV0sYT1vfHxiLnJlbGF0aXZlWyIgIl0scz1vPzE6MCx1PWJlKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09aX0sYSwhMCksbD1iZShmdW5jdGlvbihlKXtyZXR1cm4tMTxQKGksZSl9LGEsITApLGM9W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj0hbyYmKG58fHQhPT13KXx8KChpPXQpLm5vZGVUeXBlP3UoZSx0LG4pOmwoZSx0LG4pKTtyZXR1cm4gaT1udWxsLHJ9XTtzPHI7cysrKWlmKHQ9Yi5yZWxhdGl2ZVtlW3NdLnR5cGVdKWM9W2JlKHdlKGMpLHQpXTtlbHNle2lmKCh0PWIuZmlsdGVyW2Vbc10udHlwZV0uYXBwbHkobnVsbCxlW3NdLm1hdGNoZXMpKVtTXSl7Zm9yKG49KytzO248cjtuKyspaWYoYi5yZWxhdGl2ZVtlW25dLnR5cGVdKWJyZWFrO3JldHVybiBDZSgxPHMmJndlKGMpLDE8cyYmeGUoZS5zbGljZSgwLHMtMSkuY29uY2F0KHt2YWx1ZToiICI9PT1lW3MtMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZSgkLCIkMSIpLHQsczxuJiZFZShlLnNsaWNlKHMsbikpLG48ciYmRWUoZT1lLnNsaWNlKG4pKSxuPHImJnhlKGUpKX1jLnB1c2godCl9cmV0dXJuIHdlKGMpfXJldHVybiBtZS5wcm90b3R5cGU9Yi5maWx0ZXJzPWIucHNldWRvcyxiLnNldEZpbHRlcnM9bmV3IG1lLGg9c2UudG9rZW5pemU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhLHMsdSxsPXhbZSsiICJdO2lmKGwpcmV0dXJuIHQ/MDpsLnNsaWNlKDApO2E9ZSxzPVtdLHU9Yi5wcmVGaWx0ZXI7d2hpbGUoYSl7Zm9yKG8gaW4gbiYmIShyPV8uZXhlYyhhKSl8fChyJiYoYT1hLnNsaWNlKHJbMF0ubGVuZ3RoKXx8YSkscy5wdXNoKGk9W10pKSxuPSExLChyPXouZXhlYyhhKSkmJihuPXIuc2hpZnQoKSxpL +nB1c2goe3ZhbHVlOm4sdHlwZTpyWzBdLnJlcGxhY2UoJCwiICIpfSksYT1hLnNsaWNlKG4ubGVuZ3RoKSksYi5maWx0ZXIpIShyPUdbb10uZXhlYyhhKSl8fHVbb10mJiEocj11W29dKHIpKXx8KG49ci5zaGlmdCgpLGkucHVzaCh7dmFsdWU6bix0eXBlOm8sbWF0Y2hlczpyfSksYT1hLnNsaWNlKG4ubGVuZ3RoKSk7aWYoIW4pYnJlYWt9cmV0dXJuIHQ/YS5sZW5ndGg6YT9zZS5lcnJvcihlKTp4KGUscykuc2xpY2UoMCl9LGY9c2UuY29tcGlsZT1mdW5jdGlvbihlLHQpe3ZhciBuLHYseSxtLHgscixpPVtdLG89W10sYT1BW2UrIiAiXTtpZighYSl7dHx8KHQ9aChlKSksbj10Lmxlbmd0aDt3aGlsZShuLS0pKGE9RWUodFtuXSkpW1NdP2kucHVzaChhKTpvLnB1c2goYSk7KGE9QShlLCh2PW8sbT0wPCh5PWkpLmxlbmd0aCx4PTA8di5sZW5ndGgscj1mdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvLGEscyx1PTAsbD0iMCIsYz1lJiZbXSxmPVtdLHA9dyxkPWV8fHgmJmIuZmluZC5UQUcoIioiLGkpLGg9ays9bnVsbD09cD8xOk1hdGgucmFuZG9tKCl8fC4xLGc9ZC5sZW5ndGg7Zm9yKGkmJih3PXQ9PUN8fHR8fGkpO2whPT1nJiZudWxsIT0obz1kW2xdKTtsKyspe2lmKHgmJm8pe2E9MCx0fHxvLm93bmVyRG9jdW1lbnQ9PUN8fChUKG8pLG49IUUpO3doaWxlKHM9dlthKytdKWlmKHMobyx0fHxDLG4pKXtyLnB1c2gobyk7YnJlYWt9aSYmKGs9aCl9bSYmKChvPSFzJiZvKSYmdS0tLGUmJmMucHVzaChvKSl9aWYodSs9bCxtJiZsIT09dSl7YT0wO3doaWxlKHM9eVthKytdKXMoYyxmLHQsbik7aWYoZSl7aWYoMDx1KXdoaWxlKGwtLSljW2xdfHxmW2xdfHwoZltsXT1xLmNhbGwocikpO2Y9VGUoZil9SC5hcHBseShyLGYpLGkmJiFlJiYwPGYubGVuZ3RoJiYxPHUreS5sZW5ndGgmJnNlLnVuaXF1ZVNvcnQocil9cmV0dXJuIGkmJihrPWgsdz1wKSxjfSxtP2xlKHIpOnIpKSkuc2VsZWN0b3I9ZX1yZXR1cm4gYX0sZz1zZS5zZWxlY3Q9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLGM9IXImJmgoZT1sLnNlbGVjdG9yfHxlKTtpZihuPW58fFtdLDE9PT1jLmxlbmd0aCl7aWYoMjwobz1jWzBdPWNbMF0uc2xpY2UoMCkpLmxlbmd0aCYmIklEIj09PShhPW9bMF0pLnR5cGUmJjk9PT10Lm5vZGVUeXBlJiZFJiZiLnJlbGF0aXZlW29bMV0udHlwZV0pe2lmKCEodD0oYi5maW5kLklEKGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSx0KXx8W10pWzBdKSlyZXR1cm4gbjtsJiYodD10LnBhcmVudE5vZGUpLGU9ZS5zbGljZShvLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPUcubmVlZHNDb250ZXh0LnRlc3QoZSk/MDpvLmxlbmd0aDt3aGlsZShpLS0pe2lmKGE9b1tpXSxiLnJlbGF0aXZlW3M9YS50eXBlXSlicmVhaztpZigodT1iLmZpbmRbc10pJiYocj11KGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSxlZS50ZXN0KG9bMF0udHlwZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpKSl7aWYoby5zcGxpY2UoaSwxKSwhKGU9ci5sZW5ndGgmJnhlKG8pKSlyZXR1cm4gSC5hcHBseShuLHIpLG47YnJlYWt9fX1yZXR1cm4obHx8ZihlLGMpKShyLHQsIUUsbiwhdHx8ZWUudGVzdChlKSYmeWUodC5wYXJlbnROb2RlKXx8dCksbn0sZC5zb3J0U3RhYmxlPVMuc3BsaXQoIiIpLnNvcnQoRCkuam9pbigiIik9PT1TLGQuZGV0ZWN0RHVwbGljYXRlcz0hIWwsVCgpLGQuc29ydERldGFjaGVkPWNlKGZ1bmN0aW9uKGUpe3JldHVybiAxJmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oQy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGZlKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihlLHQsbil7aWYoIW4pcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsInR5cGUiPT09dC50b0xvd2VyQ2FzZSgpPzE6Mil9KSxkLmF0dHJpYnV0ZXMmJmNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGlucHV0Lz4iLGUuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGZlKCJ2YWx1ZSIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiBlLmRlZmF1bHRWYWx1ZX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxmZShSLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZighbilyZXR1cm4hMD09PWVbdF0/dC50b0xvd2VyQ2FzZSgpOihyPWUuZ2V0QXR0cmlidXRlTm9kZSh0KSkmJnIuc3BlY2lmaWVkP3IudmFsdWU6bnVsbH0pLHNlfShDKTtTLmZpbmQ9ZCxTLmV4cHI9ZC5zZWxlY3RvcnMsUy5leHByWyI6Il09Uy5leHByLnBzZXVkb3MsUy51bmlxdWVTb3J0PVMudW5pcXVlPWQudW5pcXVlU29ydCxTLnRleHQ9ZC5nZXRUZXh0LFMuaXNYTUxEb2M9ZC5pc1hNTCxTLmNvbnRhaW5zPWQuY29udGFpbnMsUy5lc2NhcGVTZWxlY3Rvcj1kLmVzY2FwZTt2YXIgaD1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10saT12b2lkIDAhPT1uO3doaWxlKChlPWVbdF0pJiY5IT09ZS5ub2RlVHlwZSlpZigxPT09ZS5ub2RlVHlwZSl7aWYoaSYmUyhlKS5pcyhuKSlicmVhaztyLnB1c2goZSl9cmV0dXJuIHJ9LFQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W107ZTtlPWUubmV4dFNpYmxpbmcpMT09PWUubm9kZVR5cGUmJmUhPT10JiZuLnB1c2goZSk7cmV0dXJuIG59LGs9Uy5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBBKGUsdCl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX12YXIgTj0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtmdW5jdGlvbiBEKGUsbixyKXtyZXR1cm4gbShuKT9TLmdyZXAoZSxmdW5jdGlvbihlLHQpe3JldHVybiEhbi5jYWxsKGUsdCxlKSE9PXJ9KTpuLm5v +ZGVUeXBlP1MuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09biE9PXJ9KToic3RyaW5nIiE9dHlwZW9mIG4/Uy5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuLTE8aS5jYWxsKG4sZSkhPT1yfSk6Uy5maWx0ZXIobixlLHIpfVMuZmlsdGVyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10WzBdO3JldHVybiBuJiYoZT0iOm5vdCgiK2UrIikiKSwxPT09dC5sZW5ndGgmJjE9PT1yLm5vZGVUeXBlP1MuZmluZC5tYXRjaGVzU2VsZWN0b3IocixlKT9bcl06W106Uy5maW5kLm1hdGNoZXMoZSxTLmdyZXAodCxmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV9KSl9LFMuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzLmxlbmd0aCxpPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiB0aGlzLnB1c2hTdGFjayhTKGUpLmZpbHRlcihmdW5jdGlvbigpe2Zvcih0PTA7dDxyO3QrKylpZihTLmNvbnRhaW5zKGlbdF0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKG49dGhpcy5wdXNoU3RhY2soW10pLHQ9MDt0PHI7dCsrKVMuZmluZChlLGlbdF0sbik7cmV0dXJuIDE8cj9TLnVuaXF1ZVNvcnQobik6bn0sZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhEKHRoaXMsZXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhEKHRoaXMsZXx8W10sITApKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFEKHRoaXMsInN0cmluZyI9PXR5cGVvZiBlJiZrLnRlc3QoZSk/UyhlKTplfHxbXSwhMSkubGVuZ3RofX0pO3ZhciBqLHE9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzsoUy5mbi5pbml0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKCFlKXJldHVybiB0aGlzO2lmKG49bnx8aiwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCEocj0iPCI9PT1lWzBdJiYiPiI9PT1lW2UubGVuZ3RoLTFdJiYzPD1lLmxlbmd0aD9bbnVsbCxlLG51bGxdOnEuZXhlYyhlKSl8fCFyWzFdJiZ0KXJldHVybiF0fHx0LmpxdWVyeT8odHx8bikuZmluZChlKTp0aGlzLmNvbnN0cnVjdG9yKHQpLmZpbmQoZSk7aWYoclsxXSl7aWYodD10IGluc3RhbmNlb2YgUz90WzBdOnQsUy5tZXJnZSh0aGlzLFMucGFyc2VIVE1MKHJbMV0sdCYmdC5ub2RlVHlwZT90Lm93bmVyRG9jdW1lbnR8fHQ6RSwhMCkpLE4udGVzdChyWzFdKSYmUy5pc1BsYWluT2JqZWN0KHQpKWZvcihyIGluIHQpbSh0aGlzW3JdKT90aGlzW3JdKHRbcl0pOnRoaXMuYXR0cihyLHRbcl0pO3JldHVybiB0aGlzfXJldHVybihpPUUuZ2V0RWxlbWVudEJ5SWQoclsyXSkpJiYodGhpc1swXT1pLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGUubm9kZVR5cGU/KHRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOm0oZSk/dm9pZCAwIT09bi5yZWFkeT9uLnJlYWR5KGUpOmUoUyk6Uy5tYWtlQXJyYXkoZSx0aGlzKX0pLnByb3RvdHlwZT1TLmZuLGo9UyhFKTt2YXIgTD0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxIPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2Z1bmN0aW9uIE8oZSx0KXt3aGlsZSgoZT1lW3RdKSYmMSE9PWUubm9kZVR5cGUpO3JldHVybiBlfVMuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oZSl7dmFyIHQ9UyhlLHRoaXMpLG49dC5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxuO2UrKylpZihTLmNvbnRhaW5zKHRoaXMsdFtlXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXRoaXMubGVuZ3RoLG89W10sYT0ic3RyaW5nIiE9dHlwZW9mIGUmJlMoZSk7aWYoIWsudGVzdChlKSlmb3IoO3I8aTtyKyspZm9yKG49dGhpc1tyXTtuJiZuIT09dDtuPW4ucGFyZW50Tm9kZSlpZihuLm5vZGVUeXBlPDExJiYoYT8tMTxhLmluZGV4KG4pOjE9PT1uLm5vZGVUeXBlJiZTLmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sZSkpKXtvLnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8by5sZW5ndGg/Uy51bmlxdWVTb3J0KG8pOm8pfSxpbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZT8ic3RyaW5nIj09dHlwZW9mIGU/aS5jYWxsKFMoZSksdGhpc1swXSk6aS5jYWxsKHRoaXMsZS5qcXVlcnk/ZVswXTplKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnB1c2hTdGFjayhTLnVuaXF1ZVNvcnQoUy5tZXJnZSh0aGlzLmdldCgpLFMoZSx0KSkpKX0sYWRkQmFjazpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9fSksUy5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiYxMSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLCJwYXJlbnROb2RlIixuKX0sbmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGUpe3JldHVybiBPKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIGgoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgoZSwibmV4dFNpYmxpbmciLG4pfSxwcmV2VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsInByZXZpb3VzU2libGluZyIsbil9LHNpYmxpbmdzOmZ1bmN0aW9uKGUpe3JldHVybiBUKChlLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGUpfSxjaGlsZHJlbjpmdW5jdGlvbihlKXtyZXR1cm4gVChlLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZS5jb250ZW50RG9jdW1lbnQmJnIoZS5jb250ZW50RG9jdW1lbnQpP2UuY29udGVudERvY3VtZW50OihBKGUsInRlbXB +sYXRlIikmJihlPWUuY29udGVudHx8ZSksUy5tZXJnZShbXSxlLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKHIsaSl7Uy5mbltyXT1mdW5jdGlvbihlLHQpe3ZhciBuPVMubWFwKHRoaXMsaSxlKTtyZXR1cm4iVW50aWwiIT09ci5zbGljZSgtNSkmJih0PWUpLHQmJiJzdHJpbmciPT10eXBlb2YgdCYmKG49Uy5maWx0ZXIodCxuKSksMTx0aGlzLmxlbmd0aCYmKEhbcl18fFMudW5pcXVlU29ydChuKSxMLnRlc3QocikmJm4ucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUD0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIFIoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gTShlKXt0aHJvdyBlfWZ1bmN0aW9uIEkoZSx0LG4scil7dmFyIGk7dHJ5e2UmJm0oaT1lLnByb21pc2UpP2kuY2FsbChlKS5kb25lKHQpLmZhaWwobik6ZSYmbShpPWUudGhlbik/aS5jYWxsKGUsdCxuKTp0LmFwcGx5KHZvaWQgMCxbZV0uc2xpY2UocikpfWNhdGNoKGUpe24uYXBwbHkodm9pZCAwLFtlXSl9fVMuQ2FsbGJhY2tzPWZ1bmN0aW9uKHIpe3ZhciBlLG47cj0ic3RyaW5nIj09dHlwZW9mIHI/KGU9cixuPXt9LFMuZWFjaChlLm1hdGNoKFApfHxbXSxmdW5jdGlvbihlLHQpe25bdF09ITB9KSxuKTpTLmV4dGVuZCh7fSxyKTt2YXIgaSx0LG8sYSxzPVtdLHU9W10sbD0tMSxjPWZ1bmN0aW9uKCl7Zm9yKGE9YXx8ci5vbmNlLG89aT0hMDt1Lmxlbmd0aDtsPS0xKXt0PXUuc2hpZnQoKTt3aGlsZSgrK2w8cy5sZW5ndGgpITE9PT1zW2xdLmFwcGx5KHRbMF0sdFsxXSkmJnIuc3RvcE9uRmFsc2UmJihsPXMubGVuZ3RoLHQ9ITEpfXIubWVtb3J5fHwodD0hMSksaT0hMSxhJiYocz10P1tdOiIiKX0sZj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIHMmJih0JiYhaSYmKGw9cy5sZW5ndGgtMSx1LnB1c2godCkpLGZ1bmN0aW9uIG4oZSl7Uy5lYWNoKGUsZnVuY3Rpb24oZSx0KXttKHQpP3IudW5pcXVlJiZmLmhhcyh0KXx8cy5wdXNoKHQpOnQmJnQubGVuZ3RoJiYic3RyaW5nIiE9PXcodCkmJm4odCl9KX0oYXJndW1lbnRzKSx0JiYhaSYmYygpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gUy5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihlLHQpe3ZhciBuO3doaWxlKC0xPChuPVMuaW5BcnJheSh0LHMsbikpKXMuc3BsaWNlKG4sMSksbjw9bCYmbC0tfSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBlPy0xPFMuaW5BcnJheShlLHMpOjA8cy5sZW5ndGh9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHMmJihzPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGE9dT1bXSxzPXQ9IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hc30sbG9jazpmdW5jdGlvbigpe3JldHVybiBhPXU9W10sdHx8aXx8KHM9dD0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFhfSxmaXJlV2l0aDpmdW5jdGlvbihlLHQpe3JldHVybiBhfHwodD1bZSwodD10fHxbXSkuc2xpY2U/dC5zbGljZSgpOnRdLHUucHVzaCh0KSxpfHxjKCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIW99fTtyZXR1cm4gZn0sUy5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGUpe3ZhciBvPVtbIm5vdGlmeSIsInByb2dyZXNzIixTLkNhbGxiYWNrcygibWVtb3J5IiksUy5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLFMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLFMuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxpPSJwZW5kaW5nIixhPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBpfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEudGhlbihudWxsLGUpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGk9YXJndW1lbnRzO3JldHVybiBTLkRlZmVycmVkKGZ1bmN0aW9uKHIpe1MuZWFjaChvLGZ1bmN0aW9uKGUsdCl7dmFyIG49bShpW3RbNF1dKSYmaVt0WzRdXTtzW3RbMV1dKGZ1bmN0aW9uKCl7dmFyIGU9biYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSYmbShlLnByb21pc2UpP2UucHJvbWlzZSgpLnByb2dyZXNzKHIubm90aWZ5KS5kb25lKHIucmVzb2x2ZSkuZmFpbChyLnJlamVjdCk6clt0WzBdKyJXaXRoIl0odGhpcyxuP1tlXTphcmd1bWVudHMpfSl9KSxpPW51bGx9KS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24odCxuLHIpe3ZhciB1PTA7ZnVuY3Rpb24gbChpLG8sYSxzKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLHI9YXJndW1lbnRzLGU9ZnVuY3Rpb24oKXt2YXIgZSx0O2lmKCEoaTx1KSl7aWYoKGU9YS5hcHBseShuLHIpKT09PW8ucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO3Q9ZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiZlLnRoZW4sbSh0KT9zP3QuY2FsbChlLGwodSxvLFIscyksbCh1LG8sTSxzKSk6KHUrKyx0LmNhbGwoZSxsKHUsbyxSLHMpLGwodSxvLE0scyksbCh1LG8sUixvLm5vdGlmeVdpdGgpKSk6KGEhPT1SJiYobj12b2lkIDAscj1bZV0pLChzfHxvLnJlc29sdmVXaXRoKShuLHIpKX19LHQ9cz9lOmZ1bmN0aW9uKCl7dHJ5e2UoKX1jYXRjaChlKXtTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJlMuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhlLHQuc3RhY2tUcmFjZSksdTw9aSsxJiYoYSE9PU0mJihuPXZvaWQgMCxyPVtlXSksby5yZWplY3RXaXRoKG4scikpfX07aT90KCk6KFMuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYodC5zdGFja1RyYWNlPVMuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLEMuc2V0VGltZW91dCh0KSl9fXJldHVybiBTLkRlZmVycmVkKGZ1bmN0aW9uKGUpe29bMF1bM10uYWRkKGwoMCxlLG0ocik/cjpSLGUubm90aWZ5V2l0aCkpLG9bMV1bM10uYWRkKG +woMCxlLG0odCk/dDpSKSksb1syXVszXS5hZGQobCgwLGUsbShuKT9uOk0pKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT9TLmV4dGVuZChlLGEpOmF9fSxzPXt9O3JldHVybiBTLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPXRbMl0scj10WzVdO2FbdFsxXV09bi5hZGQsciYmbi5hZGQoZnVuY3Rpb24oKXtpPXJ9LG9bMy1lXVsyXS5kaXNhYmxlLG9bMy1lXVszXS5kaXNhYmxlLG9bMF1bMl0ubG9jayxvWzBdWzNdLmxvY2spLG4uYWRkKHRbM10uZmlyZSksc1t0WzBdXT1mdW5jdGlvbigpe3JldHVybiBzW3RbMF0rIldpdGgiXSh0aGlzPT09cz92b2lkIDA6dGhpcyxhcmd1bWVudHMpLHRoaXN9LHNbdFswXSsiV2l0aCJdPW4uZmlyZVdpdGh9KSxhLnByb21pc2UocyksZSYmZS5jYWxsKHMscyksc30sd2hlbjpmdW5jdGlvbihlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHQ9bixyPUFycmF5KHQpLGk9cy5jYWxsKGFyZ3VtZW50cyksbz1TLkRlZmVycmVkKCksYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7clt0XT10aGlzLGlbdF09MTxhcmd1bWVudHMubGVuZ3RoP3MuY2FsbChhcmd1bWVudHMpOmUsLS1ufHxvLnJlc29sdmVXaXRoKHIsaSl9fTtpZihuPD0xJiYoSShlLG8uZG9uZShhKHQpKS5yZXNvbHZlLG8ucmVqZWN0LCFuKSwicGVuZGluZyI9PT1vLnN0YXRlKCl8fG0oaVt0XSYmaVt0XS50aGVuKSkpcmV0dXJuIG8udGhlbigpO3doaWxlKHQtLSlJKGlbdF0sYSh0KSxvLnJlamVjdCk7cmV0dXJuIG8ucHJvbWlzZSgpfX0pO3ZhciBXPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO1MuRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihlLHQpe0MuY29uc29sZSYmQy5jb25zb2xlLndhcm4mJmUmJlcudGVzdChlLm5hbWUpJiZDLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UsZS5zdGFjayx0KX0sUy5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihlKXtDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9O3ZhciBGPVMuRGVmZXJyZWQoKTtmdW5jdGlvbiBCKCl7RS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCKSxDLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLEIpLFMucmVhZHkoKX1TLmZuLnJlYWR5PWZ1bmN0aW9uKGUpe3JldHVybiBGLnRoZW4oZSlbImNhdGNoIl0oZnVuY3Rpb24oZSl7Uy5yZWFkeUV4Y2VwdGlvbihlKX0pLHRoaXN9LFMuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLHJlYWR5OmZ1bmN0aW9uKGUpeyghMD09PWU/LS1TLnJlYWR5V2FpdDpTLmlzUmVhZHkpfHwoUy5pc1JlYWR5PSEwKSE9PWUmJjA8LS1TLnJlYWR5V2FpdHx8Ri5yZXNvbHZlV2l0aChFLFtTXSl9fSksUy5yZWFkeS50aGVuPUYudGhlbiwiY29tcGxldGUiPT09RS5yZWFkeVN0YXRlfHwibG9hZGluZyIhPT1FLnJlYWR5U3RhdGUmJiFFLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD9DLnNldFRpbWVvdXQoUy5yZWFkeSk6KEUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixCKSk7dmFyICQ9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSl7dmFyIHM9MCx1PWUubGVuZ3RoLGw9bnVsbD09bjtpZigib2JqZWN0Ij09PXcobikpZm9yKHMgaW4gaT0hMCxuKSQoZSx0LHMsbltzXSwhMCxvLGEpO2Vsc2UgaWYodm9pZCAwIT09ciYmKGk9ITAsbShyKXx8KGE9ITApLGwmJihhPyh0LmNhbGwoZSxyKSx0PW51bGwpOihsPXQsdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGwuY2FsbChTKGUpLG4pfSkpLHQpKWZvcig7czx1O3MrKyl0KGVbc10sbixhP3I6ci5jYWxsKGVbc10scyx0KGVbc10sbikpKTtyZXR1cm4gaT9lOmw/dC5jYWxsKGUpOnU/dChlWzBdLG4pOm99LF89L14tbXMtLyx6PS8tKFthLXpdKS9nO2Z1bmN0aW9uIFUoZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIFgoZSl7cmV0dXJuIGUucmVwbGFjZShfLCJtcy0iKS5yZXBsYWNlKHosVSl9dmFyIFY9ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfHw5PT09ZS5ub2RlVHlwZXx8IStlLm5vZGVUeXBlfTtmdW5jdGlvbiBHKCl7dGhpcy5leHBhbmRvPVMuZXhwYW5kbytHLnVpZCsrfUcudWlkPTEsRy5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdHx8KHQ9e30sVihlKSYmKGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFuZG9dPXQ6T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdGhpcy5leHBhbmRvLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pKSksdH0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPXRoaXMuY2FjaGUoZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlbWCh0KV09bjtlbHNlIGZvcihyIGluIHQpaVtYKHIpXT10W3JdO3JldHVybiBpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLmNhY2hlKGUpOmVbdGhpcy5leHBhbmRvXSYmZVt0aGlzLmV4cGFuZG9dW1godCldfSxhY2Nlc3M6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10fHx0JiYic3RyaW5nIj09dHlwZW9mIHQmJnZvaWQgMD09PW4/dGhpcy5nZXQoZSx0KToodGhpcy5zZXQoZSx0LG4pLHZvaWQgMCE9PW4/bjp0KX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1lW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09cil7aWYodm9pZCAwIT09dCl7bj0odD1BcnJheS5pc0FycmF5KHQpP3QubWFwKFgpOih0PVgodCkpaW4gcj9bdF06dC5tYXRjaChQKXx8W10pLmxlbmd0aDt3aGlsZShuLS0pZGVsZXRlIHJbdFtuXV19KHZvaWQgMD09PXR8fFMuaXNFbXB0eU9iamVjdChyKSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT12b2lkIDA6ZGVsZXRlIGVbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09dCYmIVMuaXNFbXB0eU9iamVjdCh0KX19O3ZhciBZPW5ldyBHLFE9bmV3IEcsSj0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddK +lxdKSQvLEs9L1tBLVpdL2c7ZnVuY3Rpb24gWihlLHQsbil7dmFyIHIsaTtpZih2b2lkIDA9PT1uJiYxPT09ZS5ub2RlVHlwZSlpZihyPSJkYXRhLSIrdC5yZXBsYWNlKEssIi0kJiIpLnRvTG93ZXJDYXNlKCksInN0cmluZyI9PXR5cGVvZihuPWUuZ2V0QXR0cmlidXRlKHIpKSl7dHJ5e249InRydWUiPT09KGk9bil8fCJmYWxzZSIhPT1pJiYoIm51bGwiPT09aT9udWxsOmk9PT0raSsiIj8raTpKLnRlc3QoaSk/SlNPTi5wYXJzZShpKTppKX1jYXRjaChlKXt9US5zZXQoZSx0LG4pfWVsc2Ugbj12b2lkIDA7cmV0dXJuIG59Uy5leHRlbmQoe2hhc0RhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIFEuaGFzRGF0YShlKXx8WS5oYXNEYXRhKGUpfSxkYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUS5hY2Nlc3MoZSx0LG4pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7US5yZW1vdmUoZSx0KX0sX2RhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBZLmFjY2VzcyhlLHQsbil9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7WS5yZW1vdmUoZSx0KX19KSxTLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihuLGUpe3ZhciB0LHIsaSxvPXRoaXNbMF0sYT1vJiZvLmF0dHJpYnV0ZXM7aWYodm9pZCAwPT09bil7aWYodGhpcy5sZW5ndGgmJihpPVEuZ2V0KG8pLDE9PT1vLm5vZGVUeXBlJiYhWS5nZXQobywiaGFzRGF0YUF0dHJzIikpKXt0PWEubGVuZ3RoO3doaWxlKHQtLSlhW3RdJiYwPT09KHI9YVt0XS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpJiYocj1YKHIuc2xpY2UoNSkpLFoobyxyLGlbcl0pKTtZLnNldChvLCJoYXNEYXRhQXR0cnMiLCEwKX1yZXR1cm4gaX1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIG4/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7US5zZXQodGhpcyxuKX0pOiQodGhpcyxmdW5jdGlvbihlKXt2YXIgdDtpZihvJiZ2b2lkIDA9PT1lKXJldHVybiB2b2lkIDAhPT0odD1RLmdldChvLG4pKT90OnZvaWQgMCE9PSh0PVoobyxuKSk/dDp2b2lkIDA7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7US5zZXQodGhpcyxuLGUpfSl9LG51bGwsZSwxPGFyZ3VtZW50cy5sZW5ndGgsbnVsbCwhMCl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1EucmVtb3ZlKHRoaXMsZSl9KX19KSxTLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKGUpcmV0dXJuIHQ9KHR8fCJmeCIpKyJxdWV1ZSIscj1ZLmdldChlLHQpLG4mJighcnx8QXJyYXkuaXNBcnJheShuKT9yPVkuYWNjZXNzKGUsdCxTLm1ha2VBcnJheShuKSk6ci5wdXNoKG4pKSxyfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihlLHQpe3Q9dHx8ImZ4Ijt2YXIgbj1TLnF1ZXVlKGUsdCkscj1uLmxlbmd0aCxpPW4uc2hpZnQoKSxvPVMuX3F1ZXVlSG9va3MoZSx0KTsiaW5wcm9ncmVzcyI9PT1pJiYoaT1uLnNoaWZ0KCksci0tKSxpJiYoImZ4Ij09PXQmJm4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxsKGUsZnVuY3Rpb24oKXtTLmRlcXVldWUoZSx0KX0sbykpLCFyJiZvJiZvLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10KyJxdWV1ZUhvb2tzIjtyZXR1cm4gWS5nZXQoZSxuKXx8WS5hY2Nlc3MoZSxuLHtlbXB0eTpTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKXtZLnJlbW92ZShlLFt0KyJxdWV1ZSIsbl0pfSl9KX19KSxTLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24odCxuKXt2YXIgZT0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYmKG49dCx0PSJmeCIsZS0tKSxhcmd1bWVudHMubGVuZ3RoPGU/Uy5xdWV1ZSh0aGlzWzBdLHQpOnZvaWQgMD09PW4/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1TLnF1ZXVlKHRoaXMsdCxuKTtTLl9xdWV1ZUhvb2tzKHRoaXMsdCksImZ4Ij09PXQmJiJpbnByb2dyZXNzIiE9PWVbMF0mJlMuZGVxdWV1ZSh0aGlzLHQpfSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZGVxdWV1ZSh0aGlzLGUpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucXVldWUoZXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTEsaT1TLkRlZmVycmVkKCksbz10aGlzLGE9dGhpcy5sZW5ndGgscz1mdW5jdGlvbigpey0tcnx8aS5yZXNvbHZlV2l0aChvLFtvXSl9OyJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksZT1lfHwiZngiO3doaWxlKGEtLSkobj1ZLmdldChvW2FdLGUrInF1ZXVlSG9va3MiKSkmJm4uZW1wdHkmJihyKyssbi5lbXB0eS5hZGQocykpO3JldHVybiBzKCksaS5wcm9taXNlKHQpfX0pO3ZhciBlZT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSx0ZT1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrZWUrIikoW2EteiVdKikkIiwiaSIpLG5lPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0scmU9RS5kb2N1bWVudEVsZW1lbnQsaWU9ZnVuY3Rpb24oZSl7cmV0dXJuIFMuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfSxvZT17Y29tcG9zZWQ6ITB9O3JlLmdldFJvb3ROb2RlJiYoaWU9ZnVuY3Rpb24oZSl7cmV0dXJuIFMuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfHxlLmdldFJvb3ROb2RlKG9lKT09PWUub3duZXJEb2N1bWVudH0pO3ZhciBhZT1mdW5jdGlvbihlLHQpe3JldHVybiJub25lIj09PShlPXR8fGUpLnN0eWxlLmRpc3BsYXl8fCIiPT09ZS5zdHlsZS5kaXNwbGF5JiZpZShlKSYmIm5vbmUiPT09Uy5jc3MoZSwiZGlzcGxheSIpfTtmdW5jdGlvbiBzZShlLHQsbixyKXt2YXIgaSxvLGE9MjAscz1yP2Z1bmN0aW9uKCl7cmV0dXJuIHIuY3VyKCl9OmZ1bmN0aW9uKCl7cmV0dXJuIFMuY3NzKGUsdCwiIil9LHU9cygpLGw9biYmblszXXx8KFMuY3NzTnVtYmVyW3RdPyIiOiJweCIpLGM9ZS5ub2RlVHlwZSYmKFMuY3NzTnVtYmVyW3RdfHwicHgiIT09bCYmK3UpJiZ0ZS5leGVjKFMuY3NzKGUsdCkpO2lmKGMmJmNbM10hPT1sKXt1Lz0yLGw9bHx8Y1szXSxjPSt1fHwxO3doaWxlKGEtLSlTLnN0eWxlKGUsdCxjK2wpLCgxLW8pKigxLShv +PXMoKS91fHwuNSkpPD0wJiYoYT0wKSxjLz1vO2MqPTIsUy5zdHlsZShlLHQsYytsKSxuPW58fFtdfXJldHVybiBuJiYoYz0rY3x8K3V8fDAsaT1uWzFdP2MrKG5bMV0rMSkqblsyXTorblsyXSxyJiYoci51bml0PWwsci5zdGFydD1jLHIuZW5kPWkpKSxpfXZhciB1ZT17fTtmdW5jdGlvbiBsZShlLHQpe2Zvcih2YXIgbixyLGksbyxhLHMsdSxsPVtdLGM9MCxmPWUubGVuZ3RoO2M8ZjtjKyspKHI9ZVtjXSkuc3R5bGUmJihuPXIuc3R5bGUuZGlzcGxheSx0Pygibm9uZSI9PT1uJiYobFtjXT1ZLmdldChyLCJkaXNwbGF5Iil8fG51bGwsbFtjXXx8KHIuc3R5bGUuZGlzcGxheT0iIikpLCIiPT09ci5zdHlsZS5kaXNwbGF5JiZhZShyKSYmKGxbY109KHU9YT1vPXZvaWQgMCxhPShpPXIpLm93bmVyRG9jdW1lbnQscz1pLm5vZGVOYW1lLCh1PXVlW3NdKXx8KG89YS5ib2R5LmFwcGVuZENoaWxkKGEuY3JlYXRlRWxlbWVudChzKSksdT1TLmNzcyhvLCJkaXNwbGF5Iiksby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pLCJub25lIj09PXUmJih1PSJibG9jayIpLHVlW3NdPXUpKSkpOiJub25lIiE9PW4mJihsW2NdPSJub25lIixZLnNldChyLCJkaXNwbGF5IixuKSkpO2ZvcihjPTA7YzxmO2MrKyludWxsIT1sW2NdJiYoZVtjXS5zdHlsZS5kaXNwbGF5PWxbY10pO3JldHVybiBlfVMuZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oZSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZT9lP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe2FlKHRoaXMpP1ModGhpcykuc2hvdygpOlModGhpcykuaGlkZSgpfSl9fSk7dmFyIGNlLGZlLHBlPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLGRlPS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKS9pLGhlPS9eJHxebW9kdWxlJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaTtjZT1FLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5hcHBlbmRDaGlsZChFLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwoZmU9RS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGZlLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxmZS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksY2UuYXBwZW5kQ2hpbGQoZmUpLHkuY2hlY2tDbG9uZT1jZS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsY2UuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+Iix5Lm5vQ2xvbmVDaGVja2VkPSEhY2UuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLGNlLmlubmVySFRNTD0iPG9wdGlvbj48L29wdGlvbj4iLHkub3B0aW9uPSEhY2UubGFzdENoaWxkO3ZhciBnZT17dGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O2Z1bmN0aW9uIHZlKGUsdCl7dmFyIG47cmV0dXJuIG49InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lP2UuZ2V0RWxlbWVudHNCeVRhZ05hbWUodHx8IioiKToidW5kZWZpbmVkIiE9dHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbD9lLnF1ZXJ5U2VsZWN0b3JBbGwodHx8IioiKTpbXSx2b2lkIDA9PT10fHx0JiZBKGUsdCk/Uy5tZXJnZShbZV0sbik6bn1mdW5jdGlvbiB5ZShlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylZLnNldChlW25dLCJnbG9iYWxFdmFsIiwhdHx8WS5nZXQodFtuXSwiZ2xvYmFsRXZhbCIpKX1nZS50Ym9keT1nZS50Zm9vdD1nZS5jb2xncm91cD1nZS5jYXB0aW9uPWdlLnRoZWFkLGdlLnRoPWdlLnRkLHkub3B0aW9ufHwoZ2Uub3B0Z3JvdXA9Z2Uub3B0aW9uPVsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0pO3ZhciBtZT0vPHwmIz9cdys7LztmdW5jdGlvbiB4ZShlLHQsbixyLGkpe2Zvcih2YXIgbyxhLHMsdSxsLGMsZj10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxwPVtdLGQ9MCxoPWUubGVuZ3RoO2Q8aDtkKyspaWYoKG89ZVtkXSl8fDA9PT1vKWlmKCJvYmplY3QiPT09dyhvKSlTLm1lcmdlKHAsby5ub2RlVHlwZT9bb106byk7ZWxzZSBpZihtZS50ZXN0KG8pKXthPWF8fGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSkscz0oZGUuZXhlYyhvKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSx1PWdlW3NdfHxnZS5fZGVmYXVsdCxhLmlubmVySFRNTD11WzFdK1MuaHRtbFByZWZpbHRlcihvKSt1WzJdLGM9dVswXTt3aGlsZShjLS0pYT1hLmxhc3RDaGlsZDtTLm1lcmdlKHAsYS5jaGlsZE5vZGVzKSwoYT1mLmZpcnN0Q2hpbGQpLnRleHRDb250ZW50PSIifWVsc2UgcC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpO2YudGV4dENvbnRlbnQ9IiIsZD0wO3doaWxlKG89cFtkKytdKWlmKHImJi0xPFMuaW5BcnJheShvLHIpKWkmJmkucHVzaChvKTtlbHNlIGlmKGw9aWUobyksYT12ZShmLmFwcGVuZENoaWxkKG8pLCJzY3JpcHQiKSxsJiZ5ZShhKSxuKXtjPTA7d2hpbGUobz1hW2MrK10paGUudGVzdChvLnR5cGV8fCIiKSYmbi5wdXNoKG8pfXJldHVybiBmfXZhciBiZT0vXmtleS8sd2U9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLFRlPS9eKFteLl0qKSg/OlwuKC4rKXwpLztmdW5jdGlvbiBDZSgpe3JldHVybiEwfWZ1bmN0aW9uIEVlKCl7cmV0dXJuITF9ZnVuY3Rpb24gU2UoZSx0KXtyZXR1cm4gZT09PWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBFLmFjdGl2ZUVsZW1lbnR9Y2F0Y2goZSl7fX0oKT09KCJmb2N1cyI9PT10KX1mdW5jdGlvbiBrZShlLHQsbixyLGksbyl7dmFyIGEscztpZigib2JqZWN0Ij09dHlwZW9mIHQpe2ZvcihzIGluInN0cmluZyIhPXR5cGVvZiBuJiYocj1yfHxuLG4 +9dm9pZCAwKSx0KWtlKGUscyxuLHIsdFtzXSxvKTtyZXR1cm4gZX1pZihudWxsPT1yJiZudWxsPT1pPyhpPW4scj1uPXZvaWQgMCk6bnVsbD09aSYmKCJzdHJpbmciPT10eXBlb2Ygbj8oaT1yLHI9dm9pZCAwKTooaT1yLHI9bixuPXZvaWQgMCkpLCExPT09aSlpPUVlO2Vsc2UgaWYoIWkpcmV0dXJuIGU7cmV0dXJuIDE9PT1vJiYoYT1pLChpPWZ1bmN0aW9uKGUpe3JldHVybiBTKCkub2ZmKGUpLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSkuZ3VpZD1hLmd1aWR8fChhLmd1aWQ9Uy5ndWlkKyspKSxlLmVhY2goZnVuY3Rpb24oKXtTLmV2ZW50LmFkZCh0aGlzLHQsaSxyLG4pfSl9ZnVuY3Rpb24gQWUoZSxpLG8pe28/KFkuc2V0KGUsaSwhMSksUy5ldmVudC5hZGQoZSxpLHtuYW1lc3BhY2U6ITEsaGFuZGxlcjpmdW5jdGlvbihlKXt2YXIgdCxuLHI9WS5nZXQodGhpcyxpKTtpZigxJmUuaXNUcmlnZ2VyJiZ0aGlzW2ldKXtpZihyLmxlbmd0aCkoUy5ldmVudC5zcGVjaWFsW2ldfHx7fSkuZGVsZWdhdGVUeXBlJiZlLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYocj1zLmNhbGwoYXJndW1lbnRzKSxZLnNldCh0aGlzLGksciksdD1vKHRoaXMsaSksdGhpc1tpXSgpLHIhPT0obj1ZLmdldCh0aGlzLGkpKXx8dD9ZLnNldCh0aGlzLGksITEpOm49e30sciE9PW4pcmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZS5wcmV2ZW50RGVmYXVsdCgpLG4udmFsdWV9ZWxzZSByLmxlbmd0aCYmKFkuc2V0KHRoaXMsaSx7dmFsdWU6Uy5ldmVudC50cmlnZ2VyKFMuZXh0ZW5kKHJbMF0sUy5FdmVudC5wcm90b3R5cGUpLHIuc2xpY2UoMSksdGhpcyl9KSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX19KSk6dm9pZCAwPT09WS5nZXQoZSxpKSYmUy5ldmVudC5hZGQoZSxpLENlKX1TLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKHQsZSxuLHIsaSl7dmFyIG8sYSxzLHUsbCxjLGYscCxkLGgsZyx2PVkuZ2V0KHQpO2lmKFYodCkpe24uaGFuZGxlciYmKG49KG89bikuaGFuZGxlcixpPW8uc2VsZWN0b3IpLGkmJlMuZmluZC5tYXRjaGVzU2VsZWN0b3IocmUsaSksbi5ndWlkfHwobi5ndWlkPVMuZ3VpZCsrKSwodT12LmV2ZW50cyl8fCh1PXYuZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCkpLChhPXYuaGFuZGxlKXx8KGE9di5oYW5kbGU9ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBTJiZTLmV2ZW50LnRyaWdnZXJlZCE9PWUudHlwZT9TLmV2ZW50LmRpc3BhdGNoLmFwcGx5KHQsYXJndW1lbnRzKTp2b2lkIDB9KSxsPShlPShlfHwiIikubWF0Y2goUCl8fFsiIl0pLmxlbmd0aDt3aGlsZShsLS0pZD1nPShzPVRlLmV4ZWMoZVtsXSl8fFtdKVsxXSxoPShzWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksZCYmKGY9Uy5ldmVudC5zcGVjaWFsW2RdfHx7fSxkPShpP2YuZGVsZWdhdGVUeXBlOmYuYmluZFR5cGUpfHxkLGY9Uy5ldmVudC5zcGVjaWFsW2RdfHx7fSxjPVMuZXh0ZW5kKHt0eXBlOmQsb3JpZ1R5cGU6ZyxkYXRhOnIsaGFuZGxlcjpuLGd1aWQ6bi5ndWlkLHNlbGVjdG9yOmksbmVlZHNDb250ZXh0OmkmJlMuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChpKSxuYW1lc3BhY2U6aC5qb2luKCIuIil9LG8pLChwPXVbZF0pfHwoKHA9dVtkXT1bXSkuZGVsZWdhdGVDb3VudD0wLGYuc2V0dXAmJiExIT09Zi5zZXR1cC5jYWxsKHQscixoLGEpfHx0LmFkZEV2ZW50TGlzdGVuZXImJnQuYWRkRXZlbnRMaXN0ZW5lcihkLGEpKSxmLmFkZCYmKGYuYWRkLmNhbGwodCxjKSxjLmhhbmRsZXIuZ3VpZHx8KGMuaGFuZGxlci5ndWlkPW4uZ3VpZCkpLGk/cC5zcGxpY2UocC5kZWxlZ2F0ZUNvdW50KyssMCxjKTpwLnB1c2goYyksUy5ldmVudC5nbG9iYWxbZF09ITApfX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIG8sYSxzLHUsbCxjLGYscCxkLGgsZyx2PVkuaGFzRGF0YShlKSYmWS5nZXQoZSk7aWYodiYmKHU9di5ldmVudHMpKXtsPSh0PSh0fHwiIikubWF0Y2goUCl8fFsiIl0pLmxlbmd0aDt3aGlsZShsLS0paWYoZD1nPShzPVRlLmV4ZWModFtsXSl8fFtdKVsxXSxoPShzWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksZCl7Zj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LHA9dVtkPShyP2YuZGVsZWdhdGVUeXBlOmYuYmluZFR5cGUpfHxkXXx8W10scz1zWzJdJiZuZXcgUmVnRXhwKCIoXnxcXC4pIitoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpLGE9bz1wLmxlbmd0aDt3aGlsZShvLS0pYz1wW29dLCFpJiZnIT09Yy5vcmlnVHlwZXx8biYmbi5ndWlkIT09Yy5ndWlkfHxzJiYhcy50ZXN0KGMubmFtZXNwYWNlKXx8ciYmciE9PWMuc2VsZWN0b3ImJigiKioiIT09cnx8IWMuc2VsZWN0b3IpfHwocC5zcGxpY2UobywxKSxjLnNlbGVjdG9yJiZwLmRlbGVnYXRlQ291bnQtLSxmLnJlbW92ZSYmZi5yZW1vdmUuY2FsbChlLGMpKTthJiYhcC5sZW5ndGgmJihmLnRlYXJkb3duJiYhMSE9PWYudGVhcmRvd24uY2FsbChlLGgsdi5oYW5kbGUpfHxTLnJlbW92ZUV2ZW50KGUsZCx2LmhhbmRsZSksZGVsZXRlIHVbZF0pfWVsc2UgZm9yKGQgaW4gdSlTLmV2ZW50LnJlbW92ZShlLGQrdFtsXSxuLHIsITApO1MuaXNFbXB0eU9iamVjdCh1KSYmWS5yZW1vdmUoZSwiaGFuZGxlIGV2ZW50cyIpfX0sZGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHM9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLHU9Uy5ldmVudC5maXgoZSksbD0oWS5nZXQodGhpcywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW3UudHlwZV18fFtdLGM9Uy5ldmVudC5zcGVjaWFsW3UudHlwZV18fHt9O2ZvcihzWzBdPXUsdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspc1t0XT1hcmd1bWVudHNbdF07aWYodS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFjLnByZURpc3BhdGNofHwhMSE9PWMucHJlRGlzcGF0Y2guY2FsbCh0aGlzLHUpKXthPVMuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLHUsbCksdD0wO3doaWxlKChpPWFbdCsrXSkmJiF1LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3UuY3VycmVudFRhcmdldD1pLmVsZW0sbj0wO3doaWxlKChvPWkuaGFuZGxlcnNbbisrXSkmJiF1LmlzSW +1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpdS5ybmFtZXNwYWNlJiYhMSE9PW8ubmFtZXNwYWNlJiYhdS5ybmFtZXNwYWNlLnRlc3Qoby5uYW1lc3BhY2UpfHwodS5oYW5kbGVPYmo9byx1LmRhdGE9by5kYXRhLHZvaWQgMCE9PShyPSgoUy5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxvLmhhbmRsZXIpLmFwcGx5KGkuZWxlbSxzKSkmJiExPT09KHUucmVzdWx0PXIpJiYodS5wcmV2ZW50RGVmYXVsdCgpLHUuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gYy5wb3N0RGlzcGF0Y2gmJmMucG9zdERpc3BhdGNoLmNhbGwodGhpcyx1KSx1LnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzPVtdLHU9dC5kZWxlZ2F0ZUNvdW50LGw9ZS50YXJnZXQ7aWYodSYmbC5ub2RlVHlwZSYmISgiY2xpY2siPT09ZS50eXBlJiYxPD1lLmJ1dHRvbikpZm9yKDtsIT09dGhpcztsPWwucGFyZW50Tm9kZXx8dGhpcylpZigxPT09bC5ub2RlVHlwZSYmKCJjbGljayIhPT1lLnR5cGV8fCEwIT09bC5kaXNhYmxlZCkpe2ZvcihvPVtdLGE9e30sbj0wO248dTtuKyspdm9pZCAwPT09YVtpPShyPXRbbl0pLnNlbGVjdG9yKyIgIl0mJihhW2ldPXIubmVlZHNDb250ZXh0Py0xPFMoaSx0aGlzKS5pbmRleChsKTpTLmZpbmQoaSx0aGlzLG51bGwsW2xdKS5sZW5ndGgpLGFbaV0mJm8ucHVzaChyKTtvLmxlbmd0aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6b30pfXJldHVybiBsPXRoaXMsdTx0Lmxlbmd0aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6dC5zbGljZSh1KX0pLHN9LGFkZFByb3A6ZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoUy5FdmVudC5wcm90b3R5cGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0Om0oZSk/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGUodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFt0XX0sc2V0OmZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmV9KX19KX0sZml4OmZ1bmN0aW9uKGUpe3JldHVybiBlW1MuZXhwYW5kb10/ZTpuZXcgUy5FdmVudChlKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNsaWNrOntzZXR1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBwZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCwiaW5wdXQiKSYmQWUodCwiY2xpY2siLENlKSwhMX0sdHJpZ2dlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBwZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCwiaW5wdXQiKSYmQWUodCwiY2xpY2siKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZZLmdldCh0LCJjbGljayIpfHxBKHQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUucmVzdWx0JiZlLm9yaWdpbmFsRXZlbnQmJihlLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9ZS5yZXN1bHQpfX19fSxTLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGUsdCxuKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXImJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pfSxTLkV2ZW50PWZ1bmN0aW9uKGUsdCl7aWYoISh0aGlzIGluc3RhbmNlb2YgUy5FdmVudCkpcmV0dXJuIG5ldyBTLkV2ZW50KGUsdCk7ZSYmZS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9ZSx0aGlzLnR5cGU9ZS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWUuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09ZS5kZWZhdWx0UHJldmVudGVkJiYhMT09PWUucmV0dXJuVmFsdWU/Q2U6RWUsdGhpcy50YXJnZXQ9ZS50YXJnZXQmJjM9PT1lLnRhcmdldC5ub2RlVHlwZT9lLnRhcmdldC5wYXJlbnROb2RlOmUudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1lLmN1cnJlbnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWUucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWUsdCYmUy5leHRlbmQodGhpcyx0KSx0aGlzLnRpbWVTdGFtcD1lJiZlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKSx0aGlzW1MuZXhwYW5kb109ITB9LFMuRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpTLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDpFZSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpFZSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpFZSxpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1DZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1DZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9Q2UsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LFMuZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVudFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzohMCwiY2hhciI6ITAsY29kZTohMCxjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b +0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4gbnVsbD09ZS53aGljaCYmYmUudGVzdChlLnR5cGUpP251bGwhPWUuY2hhckNvZGU/ZS5jaGFyQ29kZTplLmtleUNvZGU6IWUud2hpY2gmJnZvaWQgMCE9PXQmJndlLnRlc3QoZS50eXBlKT8xJnQ/MToyJnQ/Mzo0JnQ/MjowOmUud2hpY2h9fSxTLmV2ZW50LmFkZFByb3ApLFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oZSx0KXtTLmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIEFlKHRoaXMsZSxTZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gQWUodGhpcyxlKSwhMH0sZGVsZWdhdGVUeXBlOnR9fSksUy5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe1MuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOmksYmluZFR5cGU6aSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJlbGF0ZWRUYXJnZXQscj1lLmhhbmRsZU9iajtyZXR1cm4gbiYmKG49PT10aGlzfHxTLmNvbnRhaW5zKHRoaXMsbikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT1pKSx0fX19KSxTLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGtlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4ga2UodGhpcyxlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosUyhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2U/ci5vcmlnVHlwZSsiLiIrci5uYW1lc3BhY2U6ci5vcmlnVHlwZSxyLnNlbGVjdG9yLHIuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD12b2lkIDApLCExPT09biYmKG49RWUpLHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIE5lPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLERlPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGplPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBxZShlLHQpe3JldHVybiBBKGUsInRhYmxlIikmJkEoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpJiZTKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIExlKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rpb24gSGUoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1lLnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIE9lKGUsdCl7dmFyIG4scixpLG8sYSxzO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihZLmhhc0RhdGEoZSkmJihzPVkuZ2V0KGUpLmV2ZW50cykpZm9yKGkgaW4gWS5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpLHMpZm9yKG49MCxyPXNbaV0ubGVuZ3RoO248cjtuKyspUy5ldmVudC5hZGQodCxpLHNbaV1bbl0pO1EuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1TLmV4dGVuZCh7fSxvKSxRLnNldCh0LGEpKX19ZnVuY3Rpb24gUGUobixyLGksbyl7cj1nKHIpO3ZhciBlLHQsYSxzLHUsbCxjPTAsZj1uLmxlbmd0aCxwPWYtMSxkPXJbMF0saD1tKGQpO2lmKGh8fDE8ZiYmInN0cmluZyI9PXR5cGVvZiBkJiYheS5jaGVja0Nsb25lJiZEZS50ZXN0KGQpKXJldHVybiBuLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5lcShlKTtoJiYoclswXT1kLmNhbGwodGhpcyxlLHQuaHRtbCgpKSksUGUodCxyLGksbyl9KTtpZihmJiYodD0oZT14ZShyLG5bMF0ub3duZXJEb2N1bWVudCwhMSxuLG8pKS5maXJzdENoaWxkLDE9PT1lLmNoaWxkTm9kZXMubGVuZ3RoJiYoZT10KSx0fHxvKSl7Zm9yKHM9KGE9Uy5tYXAodmUoZSwic2NyaXB0IiksTGUpKS5sZW5ndGg7YzxmO2MrKyl1PWUsYyE9PXAmJih1PVMuY2xvbmUodSwhMCwhMCkscyYmUy5tZXJnZShhLHZlKHUsInNjcmlwdCIpKSksaS5jYWxsKG5bY10sdSxjKTtpZihzKWZvcihsPWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxTLm1hcChhLEhlKSxjPTA7YzxzO2MrKyl1PWFbY10saGUudGVzdCh1LnR5cGV8fCIiKSYmIVkuYWNjZXNzKHUsImdsb2JhbEV2YWwiKSYmUy5jb250YWlucyhsLHUpJiYodS5zcmMmJiJtb2R1bGUiIT09KHUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/Uy5fZXZhbFVybCYmIXUubm9Nb2R1bGUmJlMuX2V2YWxVcmwodS5zcmMse25vbmNlOnUubm9uY2V8fHUuZ2V0QXR0cmlidXRlKCJub25jZSIpfSxsKTpiKHUudGV4dENvbnRlbnQucmVwbGFjZShqZSwiIiksdSxsKSl9cmV0dXJuIG59ZnVuY3Rpb24gUmUoZSx0LG4pe2Zvcih2YXIgcixpPXQ/Uy5maWx0ZXIodCxlKTplLG89MDtudWxsIT0ocj1pW29dKTtvKyspbnx8MSE9PXIubm9kZVR5cGV8fFMuY2xlYW5EYXRhKHZlKHIpKSxyLnBhcmVudE5vZGUmJihuJiZpZShyKSYmeWUodmUociwic2NyaXB0IikpLHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSk7cmV0dXJuIGV9Uy5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjPWUuY2xvbmVOb2RlKCEwKSxmPWllKGUpO2lmKCEoeS5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Uy5pc1hNTERvYyhlKSkpZm9yKGE9dmUoYykscj0wLGk9KG89dmUoZSkpLmxlbmd0aDtyPGk7cisrKXM9b1tyXSx1PWFbcl0sdm9pZCAwLCJpbnB1dCI9PT0obD11Lm5vZGVOYW1l +LnRvTG93ZXJDYXNlKCkpJiZwZS50ZXN0KHMudHlwZSk/dS5jaGVja2VkPXMuY2hlY2tlZDoiaW5wdXQiIT09bCYmInRleHRhcmVhIiE9PWx8fCh1LmRlZmF1bHRWYWx1ZT1zLmRlZmF1bHRWYWx1ZSk7aWYodClpZihuKWZvcihvPW98fHZlKGUpLGE9YXx8dmUoYykscj0wLGk9by5sZW5ndGg7cjxpO3IrKylPZShvW3JdLGFbcl0pO2Vsc2UgT2UoZSxjKTtyZXR1cm4gMDwoYT12ZShjLCJzY3JpcHQiKSkubGVuZ3RoJiZ5ZShhLCFmJiZ2ZShlLCJzY3JpcHQiKSksY30sY2xlYW5EYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsaT1TLmV2ZW50LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZihWKG4pKXtpZih0PW5bWS5leHBhbmRvXSl7aWYodC5ldmVudHMpZm9yKHIgaW4gdC5ldmVudHMpaVtyXT9TLmV2ZW50LnJlbW92ZShuLHIpOlMucmVtb3ZlRXZlbnQobixyLHQuaGFuZGxlKTtuW1kuZXhwYW5kb109dm9pZCAwfW5bUS5leHBhbmRvXSYmKG5bUS5leHBhbmRvXT12b2lkIDApfX19KSxTLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiBSZSh0aGlzLGUsITApfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIFJlKHRoaXMsZSl9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuICQodGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT9TLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gUGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fHFlKHRoaXMsZSkuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBQZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9cWUodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBQZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBQZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoUy5jbGVhbkRhdGEodmUoZSwhMSkpLGUudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWUmJmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBTLmNsb25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXXx8e30sbj0wLHI9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09PXQubm9kZVR5cGUpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIU5lLnRlc3QoZSkmJiFnZVsoZGUuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9Uy5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO248cjtuKyspMT09PSh0PXRoaXNbbl18fHt9KS5ub2RlVHlwZSYmKFMuY2xlYW5EYXRhKHZlKHQsITEpKSx0LmlubmVySFRNTD1lKTt0PTB9Y2F0Y2goZSl7fX10JiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIFBlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtTLmluQXJyYXkodGhpcyxuKTwwJiYoUy5jbGVhbkRhdGEodmUodGhpcykpLHQmJnQucmVwbGFjZUNoaWxkKGUsdGhpcykpfSxuKX19KSxTLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihlLGEpe1MuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10scj1TKGUpLGk9ci5sZW5ndGgtMSxvPTA7bzw9aTtvKyspdD1vPT09aT90aGlzOnRoaXMuY2xvbmUoITApLFMocltvXSlbYV0odCksdS5hcHBseShuLHQuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgTWU9bmV3IFJlZ0V4cCgiXigiK2VlKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksSWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiB0JiZ0Lm9wZW5lcnx8KHQ9QyksdC5nZXRDb21wdXRlZFN0eWxlKGUpfSxXZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9O2ZvcihpIGluIHQpb1tpXT1lLnN0eWxlW2ldLGUuc3R5bGVbaV09dFtpXTtmb3IoaSBpbiByPW4uY2FsbChlKSx0KWUuc3R5bGVbaV09b1tpXTtyZXR1cm4gcn0sRmU9bmV3IFJlZ0V4cChuZS5qb2luKCJ8IiksImkiKTtmdW5jdGlvbiBCZShlLHQsbil7dmFyIHIsaSxvLGEscz1lLnN0eWxlO3JldHVybihuPW58fEllKGUpKSYmKCIiIT09KGE9bi5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxuW3RdKXx8aWUoZSl8fChhPVMuc3R5bGUoZSx0KSksIXkucGl4ZWxCb3hTdHlsZXMoKSYmTWUudGVzdChhKSYmRmUudGVzdCh0KSYmKHI9cy53aWR0aCxpPXMubWluV2lkdGgsbz1zLm1heFdpZHRoLHMubWluV2lkdGg9cy5tYXhXaWR0aD1zLndpZHRoPWEsYT1uLndpZHRoLHMud2lkdGg9cixzLm1pbldpZHRoPWkscy5tYXhXaWR0aD1vKSksdm9pZCAwIT09YT9hKyIiOmF9ZnVuY3Rpb24gJGUoZSx0KXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl +7aWYoIWUoKSlyZXR1cm4odGhpcy5nZXQ9dCkuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLmdldH19fSFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpZihsKXt1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDttYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjAiLGwuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NjAlO3RvcDoxJSIscmUuYXBwZW5kQ2hpbGQodSkuYXBwZW5kQ2hpbGQobCk7dmFyIGU9Qy5nZXRDb21wdXRlZFN0eWxlKGwpO249IjElIiE9PWUudG9wLHM9MTI9PT10KGUubWFyZ2luTGVmdCksbC5zdHlsZS5yaWdodD0iNjAlIixvPTM2PT09dChlLnJpZ2h0KSxyPTM2PT09dChlLndpZHRoKSxsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaT0xMj09PXQobC5vZmZzZXRXaWR0aC8zKSxyZS5yZW1vdmVDaGlsZCh1KSxsPW51bGx9fWZ1bmN0aW9uIHQoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSl9dmFyIG4scixpLG8sYSxzLHU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPUUuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5zdHlsZSYmKGwuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIseS5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWwuc3R5bGUuYmFja2dyb3VuZENsaXAsUy5leHRlbmQoeSx7Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHJ9LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxvfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxufSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHN9LHNjcm9sbGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLGl9LHJlbGlhYmxlVHJEaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7cmV0dXJuIG51bGw9PWEmJihlPUUuY3JlYXRlRWxlbWVudCgidGFibGUiKSx0PUUuY3JlYXRlRWxlbWVudCgidHIiKSxuPUUuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4Iix0LnN0eWxlLmhlaWdodD0iMXB4IixuLnN0eWxlLmhlaWdodD0iOXB4IixyZS5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZChuKSxyPUMuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxhPTM8cGFyc2VJbnQoci5oZWlnaHQpLHJlLnJlbW92ZUNoaWxkKGUpKSxhfX0pKX0oKTt2YXIgX2U9WyJXZWJraXQiLCJNb3oiLCJtcyJdLHplPUUuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsVWU9e307ZnVuY3Rpb24gWGUoZSl7dmFyIHQ9Uy5jc3NQcm9wc1tlXXx8VWVbZV07cmV0dXJuIHR8fChlIGluIHplP2U6VWVbZV09ZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj1fZS5sZW5ndGg7d2hpbGUobi0tKWlmKChlPV9lW25dK3QpaW4gemUpcmV0dXJuIGV9KGUpfHxlKX12YXIgVmU9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLEdlPS9eLS0vLFllPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxRZT17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn07ZnVuY3Rpb24gSmUoZSx0LG4pe3ZhciByPXRlLmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzJdLShufHwwKSkrKHJbM118fCJweCIpOnR9ZnVuY3Rpb24gS2UoZSx0LG4scixpLG8pe3ZhciBhPSJ3aWR0aCI9PT10PzE6MCxzPTAsdT0wO2lmKG49PT0ocj8iYm9yZGVyIjoiY29udGVudCIpKXJldHVybiAwO2Zvcig7YTw0O2ErPTIpIm1hcmdpbiI9PT1uJiYodSs9Uy5jc3MoZSxuK25lW2FdLCEwLGkpKSxyPygiY29udGVudCI9PT1uJiYodS09Uy5jc3MoZSwicGFkZGluZyIrbmVbYV0sITAsaSkpLCJtYXJnaW4iIT09biYmKHUtPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKSkpOih1Kz1TLmNzcyhlLCJwYWRkaW5nIituZVthXSwhMCxpKSwicGFkZGluZyIhPT1uP3UrPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKTpzKz1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSkpO3JldHVybiFyJiYwPD1vJiYodSs9TWF0aC5tYXgoMCxNYXRoLmNlaWwoZVsib2Zmc2V0Iit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKV0tby11LXMtLjUpKXx8MCksdX1mdW5jdGlvbiBaZShlLHQsbil7dmFyIHI9SWUoZSksaT0oIXkuYm94U2l6aW5nUmVsaWFibGUoKXx8bikmJiJib3JkZXItYm94Ij09PVMuY3NzKGUsImJveFNpemluZyIsITEsciksbz1pLGE9QmUoZSx0LHIpLHM9Im9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk7aWYoTWUudGVzdChhKSl7aWYoIW4pcmV0dXJuIGE7YT0iYXV0byJ9cmV0dXJuKCF5LmJveFNpemluZ1JlbGlhYmxlKCkmJml8fCF5LnJlbGlhYmxlVHJEaW1lbnNpb25zKCkmJkEoZSwidHIiKXx8ImF1dG8iPT09YXx8IXBhcnNlRmxvYXQoYSkmJiJpbmxpbmUiPT09Uy5jc3MoZSwiZGlzcGxheSIsITEscikpJiZlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYoaT0iYm9yZGVyLWJveCI9PT1TLmNzcyhlLCJib3hTaXppbmciLCExLHIpLChvPXMgaW4gZSkmJihhPWVbc10pKSwoYT1wYXJzZUZsb2F0KGEpfHwwKStLZShlLHQsbnx8KGk/ImJvcmRlciI6ImNvbnRlbnQiKSxvLHIsYSkrInB4In1mdW5jdGlvbiBldChlLHQsbixyLGkpe3JldHVybiBuZXcgZXQucHJvdG90eXBlLmluaXQoZSx0LG4scixpKX1TLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPUJlKGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYW +NpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGdyaWRBcmVhOiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTdGFydDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnt9LHN0eWxlOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUmJjMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmZS5zdHlsZSl7dmFyIGksbyxhLHM9WCh0KSx1PUdlLnRlc3QodCksbD1lLnN0eWxlO2lmKHV8fCh0PVhlKHMpKSxhPVMuY3NzSG9va3NbdF18fFMuY3NzSG9va3Nbc10sdm9pZCAwPT09bilyZXR1cm4gYSYmImdldCJpbiBhJiZ2b2lkIDAhPT0oaT1hLmdldChlLCExLHIpKT9pOmxbdF07InN0cmluZyI9PT0obz10eXBlb2YgbikmJihpPXRlLmV4ZWMobikpJiZpWzFdJiYobj1zZShlLHQsaSksbz0ibnVtYmVyIiksbnVsbCE9biYmbj09biYmKCJudW1iZXIiIT09b3x8dXx8KG4rPWkmJmlbM118fChTLmNzc051bWJlcltzXT8iIjoicHgiKSkseS5jbGVhckNsb25lU3R5bGV8fCIiIT09bnx8MCE9PXQuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwobFt0XT0iaW5oZXJpdCIpLGEmJiJzZXQiaW4gYSYmdm9pZCAwPT09KG49YS5zZXQoZSxuLHIpKXx8KHU/bC5zZXRQcm9wZXJ0eSh0LG4pOmxbdF09bikpfX0sY3NzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPVgodCk7cmV0dXJuIEdlLnRlc3QodCl8fCh0PVhlKHMpKSwoYT1TLmNzc0hvb2tzW3RdfHxTLmNzc0hvb2tzW3NdKSYmImdldCJpbiBhJiYoaT1hLmdldChlLCEwLG4pKSx2b2lkIDA9PT1pJiYoaT1CZShlLHQscikpLCJub3JtYWwiPT09aSYmdCBpbiBRZSYmKGk9UWVbdF0pLCIiPT09bnx8bj8obz1wYXJzZUZsb2F0KGkpLCEwPT09bnx8aXNGaW5pdGUobyk/b3x8MDppKTppfX0pLFMuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oZSx1KXtTLmNzc0hvb2tzW3VdPXtnZXQ6ZnVuY3Rpb24oZSx0LG4pe2lmKHQpcmV0dXJuIVZlLnRlc3QoUy5jc3MoZSwiZGlzcGxheSIpKXx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD9aZShlLHUsbik6V2UoZSxZZSxmdW5jdGlvbigpe3JldHVybiBaZShlLHUsbil9KX0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPUllKGUpLG89IXkuc2Nyb2xsYm94U2l6ZSgpJiYiYWJzb2x1dGUiPT09aS5wb3NpdGlvbixhPShvfHxuKSYmImJvcmRlci1ib3giPT09Uy5jc3MoZSwiYm94U2l6aW5nIiwhMSxpKSxzPW4/S2UoZSx1LG4sYSxpKTowO3JldHVybiBhJiZvJiYocy09TWF0aC5jZWlsKGVbIm9mZnNldCIrdVswXS50b1VwcGVyQ2FzZSgpK3Uuc2xpY2UoMSldLXBhcnNlRmxvYXQoaVt1XSktS2UoZSx1LCJib3JkZXIiLCExLGkpLS41KSkscyYmKHI9dGUuZXhlYyh0KSkmJiJweCIhPT0oclszXXx8InB4IikmJihlLnN0eWxlW3VdPXQsdD1TLmNzcyhlLHUpKSxKZSgwLHQscyl9fX0pLFMuY3NzSG9va3MubWFyZ2luTGVmdD0kZSh5LnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuKHBhcnNlRmxvYXQoQmUoZSwibWFyZ2luTGVmdCIpKXx8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LVdlKGUse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KSxTLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihpLG8pe1MuY3NzSG9va3NbaStvXT17ZXhwYW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49e30scj0ic3RyaW5nIj09dHlwZW9mIGU/ZS5zcGxpdCgiICIpOltlXTt0PDQ7dCsrKW5baStuZVt0XStvXT1yW3RdfHxyW3QtMl18fHJbMF07cmV0dXJuIG59fSwibWFyZ2luIiE9PWkmJihTLmNzc0hvb2tzW2krb10uc2V0PUplKX0pLFMuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e30sYT0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihyPUllKGUpLGk9dC5sZW5ndGg7YTxpO2ErKylvW3RbYV1dPVMuY3NzKGUsdFthXSwhMSxyKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09bj9TLnN0eWxlKGUsdCxuKTpTLmNzcyhlLHQpfSxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX19KSwoKFMuVHdlZW49ZXQpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZXQsaW5pdDpmdW5jdGlvbihlLHQsbixyLGksbyl7dGhpcy5lbGVtPWUsdGhpcy5wcm9wPW4sdGhpcy5lYXNpbmc9aXx8Uy5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fChTLmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9ZXQucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMpOmV0LnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIgdCxuPWV0LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9dD1TLmVhc2luZ1t0aGlzLmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz10PWUsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhpcyk6ZXQucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0pLmluaXQucHJvdG90eXBlPWV0LnByb3RvdHlwZSwoZXQucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiAxIT09ZS5lbGVtLm5vZGVUeXBlfHxudWxsIT1lLmVsZW1bZS5wcm9wXSYmbnVsbD09Z +S5lbGVtLnN0eWxlW2UucHJvcF0/ZS5lbGVtW2UucHJvcF06KHQ9Uy5jc3MoZS5lbGVtLGUucHJvcCwiIikpJiYiYXV0byIhPT10P3Q6MH0sc2V0OmZ1bmN0aW9uKGUpe1MuZnguc3RlcFtlLnByb3BdP1MuZnguc3RlcFtlLnByb3BdKGUpOjEhPT1lLmVsZW0ubm9kZVR5cGV8fCFTLmNzc0hvb2tzW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVtYZShlLnByb3ApXT9lLmVsZW1bZS5wcm9wXT1lLm5vdzpTLnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KX19fSkuc2Nyb2xsVG9wPWV0LnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LFMuZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3JldHVybi41LU1hdGguY29zKGUqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0sUy5meD1ldC5wcm90b3R5cGUuaW5pdCxTLmZ4LnN0ZXA9e307dmFyIHR0LG50LHJ0LGl0LG90PS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxhdD0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIHN0KCl7bnQmJighMT09PUUuaGlkZGVuJiZDLnJlcXVlc3RBbmltYXRpb25GcmFtZT9DLnJlcXVlc3RBbmltYXRpb25GcmFtZShzdCk6Qy5zZXRUaW1lb3V0KHN0LFMuZnguaW50ZXJ2YWwpLFMuZngudGljaygpKX1mdW5jdGlvbiB1dCgpe3JldHVybiBDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0dD12b2lkIDB9KSx0dD1EYXRlLm5vdygpfWZ1bmN0aW9uIGx0KGUsdCl7dmFyIG4scj0wLGk9e2hlaWdodDplfTtmb3IodD10PzE6MDtyPDQ7cis9Mi10KWlbIm1hcmdpbiIrKG49bmVbcl0pXT1pWyJwYWRkaW5nIituXT1lO3JldHVybiB0JiYoaS5vcGFjaXR5PWkud2lkdGg9ZSksaX1mdW5jdGlvbiBjdChlLHQsbil7Zm9yKHZhciByLGk9KGZ0LnR3ZWVuZXJzW3RdfHxbXSkuY29uY2F0KGZ0LnR3ZWVuZXJzWyIqIl0pLG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYocj1pW29dLmNhbGwobix0LGUpKXJldHVybiByfWZ1bmN0aW9uIGZ0KG8sZSx0KXt2YXIgbixhLHI9MCxpPWZ0LnByZWZpbHRlcnMubGVuZ3RoLHM9Uy5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYoYSlyZXR1cm4hMTtmb3IodmFyIGU9dHR8fHV0KCksdD1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tZSksbj0xLSh0L2wuZHVyYXRpb258fDApLHI9MCxpPWwudHdlZW5zLmxlbmd0aDtyPGk7cisrKWwudHdlZW5zW3JdLnJ1bihuKTtyZXR1cm4gcy5ub3RpZnlXaXRoKG8sW2wsbix0XSksbjwxJiZpP3Q6KGl8fHMubm90aWZ5V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2VsZW06byxwcm9wczpTLmV4dGVuZCh7fSxlKSxvcHRzOlMuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpTLmVhc2luZy5fZGVmYXVsdH0sdCksb3JpZ2luYWxQcm9wZXJ0aWVzOmUsb3JpZ2luYWxPcHRpb25zOnQsc3RhcnRUaW1lOnR0fHx1dCgpLGR1cmF0aW9uOnQuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49Uy5Ud2VlbihvLGwub3B0cyxlLHQsbC5vcHRzLnNwZWNpYWxFYXNpbmdbZV18fGwub3B0cy5lYXNpbmcpO3JldHVybiBsLnR3ZWVucy5wdXNoKG4pLG59LHN0b3A6ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWU/bC50d2VlbnMubGVuZ3RoOjA7aWYoYSlyZXR1cm4gdGhpcztmb3IoYT0hMDt0PG47dCsrKWwudHdlZW5zW3RdLnJ1bigxKTtyZXR1cm4gZT8ocy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsLGVdKSk6cy5yZWplY3RXaXRoKG8sW2wsZV0pLHRoaXN9fSksYz1sLnByb3BzO2ZvcighZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhO2ZvcihuIGluIGUpaWYoaT10W3I9WChuKV0sbz1lW25dLEFycmF5LmlzQXJyYXkobykmJihpPW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25dKSwoYT1TLmNzc0hvb2tzW3JdKSYmImV4cGFuZCJpbiBhKWZvcihuIGluIG89YS5leHBhbmQobyksZGVsZXRlIGVbcl0sbyluIGluIGV8fChlW25dPW9bbl0sdFtuXT1pKTtlbHNlIHRbcl09aX0oYyxsLm9wdHMuc3BlY2lhbEVhc2luZyk7cjxpO3IrKylpZihuPWZ0LnByZWZpbHRlcnNbcl0uY2FsbChsLG8sYyxsLm9wdHMpKXJldHVybiBtKG4uc3RvcCkmJihTLl9xdWV1ZUhvb2tzKGwuZWxlbSxsLm9wdHMucXVldWUpLnN0b3A9bi5zdG9wLmJpbmQobikpLG47cmV0dXJuIFMubWFwKGMsY3QsbCksbShsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChvLGwpLGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFpbCkuYWx3YXlzKGwub3B0cy5hbHdheXMpLFMuZngudGltZXIoUy5leHRlbmQodSx7ZWxlbTpvLGFuaW06bCxxdWV1ZTpsLm9wdHMucXVldWV9KSksbH1TLkFuaW1hdGlvbj1TLmV4dGVuZChmdCx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKGUsdCk7cmV0dXJuIHNlKG4uZWxlbSxlLHRlLmV4ZWModCksbiksbn1dfSx0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7bShlKT8odD1lLGU9WyIqIl0pOmU9ZS5tYXRjaChQKTtmb3IodmFyIG4scj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluPWVbcl0sZnQudHdlZW5lcnNbbl09ZnQudHdlZW5lcnNbbl18fFtdLGZ0LnR3ZWVuZXJzW25dLnVuc2hpZnQodCl9LHByZWZpbHRlcnM6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjLGY9IndpZHRoImluIHR8fCJoZWlnaHQiaW4gdCxwPXRoaXMsZD17fSxoPWUuc3R5bGUsZz1lLm5vZGVUeXBlJiZhZShlKSx2PVkuZ2V0KGUsImZ4c2hvdyIpO2ZvcihyIGluIG4ucXVldWV8fChudWxsPT0oYT1TLl9xdWV1ZUhvb2tzKGUsImZ4IikpLnVucXVldWVkJiYoYS51bnF1ZXVlZD0wLHM9YS5lbXB0eS5maXJlLGEuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2EudW5xdWV1ZWR8 +fHMoKX0pLGEudW5xdWV1ZWQrKyxwLmFsd2F5cyhmdW5jdGlvbigpe3AuYWx3YXlzKGZ1bmN0aW9uKCl7YS51bnF1ZXVlZC0tLFMucXVldWUoZSwiZngiKS5sZW5ndGh8fGEuZW1wdHkuZmlyZSgpfSl9KSksdClpZihpPXRbcl0sb3QudGVzdChpKSl7aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWksaT09PShnPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1pfHwhdnx8dm9pZCAwPT09dltyXSljb250aW51ZTtnPSEwfWRbcl09diYmdltyXXx8Uy5zdHlsZShlLHIpfWlmKCh1PSFTLmlzRW1wdHlPYmplY3QodCkpfHwhUy5pc0VtcHR5T2JqZWN0KGQpKWZvcihyIGluIGYmJjE9PT1lLm5vZGVUeXBlJiYobi5vdmVyZmxvdz1baC5vdmVyZmxvdyxoLm92ZXJmbG93WCxoLm92ZXJmbG93WV0sbnVsbD09KGw9diYmdi5kaXNwbGF5KSYmKGw9WS5nZXQoZSwiZGlzcGxheSIpKSwibm9uZSI9PT0oYz1TLmNzcyhlLCJkaXNwbGF5IikpJiYobD9jPWw6KGxlKFtlXSwhMCksbD1lLnN0eWxlLmRpc3BsYXl8fGwsYz1TLmNzcyhlLCJkaXNwbGF5IiksbGUoW2VdKSkpLCgiaW5saW5lIj09PWN8fCJpbmxpbmUtYmxvY2siPT09YyYmbnVsbCE9bCkmJiJub25lIj09PVMuY3NzKGUsImZsb2F0IikmJih1fHwocC5kb25lKGZ1bmN0aW9uKCl7aC5kaXNwbGF5PWx9KSxudWxsPT1sJiYoYz1oLmRpc3BsYXksbD0ibm9uZSI9PT1jPyIiOmMpKSxoLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxuLm92ZXJmbG93JiYoaC5vdmVyZmxvdz0iaGlkZGVuIixwLmFsd2F5cyhmdW5jdGlvbigpe2gub3ZlcmZsb3c9bi5vdmVyZmxvd1swXSxoLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLGgub3ZlcmZsb3dZPW4ub3ZlcmZsb3dbMl19KSksdT0hMSxkKXV8fCh2PyJoaWRkZW4iaW4gdiYmKGc9di5oaWRkZW4pOnY9WS5hY2Nlc3MoZSwiZnhzaG93Iix7ZGlzcGxheTpsfSksbyYmKHYuaGlkZGVuPSFnKSxnJiZsZShbZV0sITApLHAuZG9uZShmdW5jdGlvbigpe2ZvcihyIGluIGd8fGxlKFtlXSksWS5yZW1vdmUoZSwiZnhzaG93IiksZClTLnN0eWxlKGUscixkW3JdKX0pKSx1PWN0KGc/dltyXTowLHIscCksciBpbiB2fHwodltyXT11LnN0YXJ0LGcmJih1LmVuZD11LnN0YXJ0LHUuc3RhcnQ9MCkpfV0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dD9mdC5wcmVmaWx0ZXJzLnVuc2hpZnQoZSk6ZnQucHJlZmlsdGVycy5wdXNoKGUpfX0pLFMuc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUmJiJvYmplY3QiPT10eXBlb2YgZT9TLmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fG0oZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIW0odCkmJnR9O3JldHVybiBTLmZ4Lm9mZj9yLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVvZiByLmR1cmF0aW9uJiYoci5kdXJhdGlvbiBpbiBTLmZ4LnNwZWVkcz9yLmR1cmF0aW9uPVMuZnguc3BlZWRzW3IuZHVyYXRpb25dOnIuZHVyYXRpb249Uy5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwhPXIucXVldWUmJiEwIT09ci5xdWV1ZXx8KHIucXVldWU9ImZ4Iiksci5vbGQ9ci5jb21wbGV0ZSxyLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bShyLm9sZCkmJnIub2xkLmNhbGwodGhpcyksci5xdWV1ZSYmUy5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LFMuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKGFlKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0sYW5pbWF0ZTpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1TLmlzRW1wdHlPYmplY3QodCksbz1TLnNwZWVkKGUsbixyKSxhPWZ1bmN0aW9uKCl7dmFyIGU9ZnQodGhpcyxTLmV4dGVuZCh7fSx0KSxvKTsoaXx8WS5nZXQodGhpcywiZmluaXNoIikpJiZlLnN0b3AoITApfTtyZXR1cm4gYS5maW5pc2g9YSxpfHwhMT09PW8ucXVldWU/dGhpcy5lYWNoKGEpOnRoaXMucXVldWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihpLGUsbyl7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChvKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpJiYobz1lLGU9aSxpPXZvaWQgMCksZSYmdGhpcy5xdWV1ZShpfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0hMCx0PW51bGwhPWkmJmkrInF1ZXVlSG9va3MiLG49Uy50aW1lcnMscj1ZLmdldCh0aGlzKTtpZih0KXJbdF0mJnJbdF0uc3RvcCYmYShyW3RdKTtlbHNlIGZvcih0IGluIHIpclt0XSYmclt0XS5zdG9wJiZhdC50ZXN0KHQpJiZhKHJbdF0pO2Zvcih0PW4ubGVuZ3RoO3QtLTspblt0XS5lbGVtIT09dGhpc3x8bnVsbCE9aSYmblt0XS5xdWV1ZSE9PWl8fChuW3RdLmFuaW0uc3RvcChvKSxlPSExLG4uc3BsaWNlKHQsMSkpOyFlJiZvfHxTLmRlcXVldWUodGhpcyxpKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuITEhPT1hJiYoYT1hfHwiZngiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PVkuZ2V0KHRoaXMpLG49dFthKyJxdWV1ZSJdLHI9dFthKyJxdWV1ZUhvb2tzIl0saT1TLnRpbWVycyxvPW4/bi5sZW5ndGg6MDtmb3IodC5maW5pc2g9ITAsUy5xdWV1ZSh0aGlzLGEsW10pLHImJnIuc3RvcCYmci5zdG9wLmNhbGwodGhpcywhMCksZT1pLmxlbmd0aDtlLS07KWlbZV0uZWxlbT09PXRoaXMmJmlbZV0ucXVldWU9PT1hJiYoaVtlXS5hbmltLnN0b3AoITApLGkuc3BsaWNlKGUsMSkpO2ZvcihlPTA7ZTxvO2UrKyluW2VdJiZuW2VdLmZpbmlzaCYmbltlXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgdC5maW5pc2h9KX19KSxTLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGUscil7dmFyIGk9Uy5mbltyXTtTLmZuW3JdPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUobHQociwhMCksZSx0LG4pfX0pLFMuZWFjaCh7c2xpZGVEb3duOmx0KCJzaG93Iiksc2xpZGVVcDpsdCgiaGlkZSIpLHNsaWRlVG9nZ2xlOmx0KCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR +5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGUscil7Uy5mbltlXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuYW5pbWF0ZShyLGUsdCxuKX19KSxTLnRpbWVycz1bXSxTLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgZSx0PTAsbj1TLnRpbWVycztmb3IodHQ9RGF0ZS5ub3coKTt0PG4ubGVuZ3RoO3QrKykoZT1uW3RdKSgpfHxuW3RdIT09ZXx8bi5zcGxpY2UodC0tLDEpO24ubGVuZ3RofHxTLmZ4LnN0b3AoKSx0dD12b2lkIDB9LFMuZngudGltZXI9ZnVuY3Rpb24oZSl7Uy50aW1lcnMucHVzaChlKSxTLmZ4LnN0YXJ0KCl9LFMuZnguaW50ZXJ2YWw9MTMsUy5meC5zdGFydD1mdW5jdGlvbigpe250fHwobnQ9ITAsc3QoKSl9LFMuZnguc3RvcD1mdW5jdGlvbigpe250PW51bGx9LFMuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LFMuZm4uZGVsYXk9ZnVuY3Rpb24ocixlKXtyZXR1cm4gcj1TLmZ4JiZTLmZ4LnNwZWVkc1tyXXx8cixlPWV8fCJmeCIsdGhpcy5xdWV1ZShlLGZ1bmN0aW9uKGUsdCl7dmFyIG49Qy5zZXRUaW1lb3V0KGUscik7dC5zdG9wPWZ1bmN0aW9uKCl7Qy5jbGVhclRpbWVvdXQobil9fSl9LHJ0PUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxpdD1FLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEUuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLHJ0LnR5cGU9ImNoZWNrYm94Iix5LmNoZWNrT249IiIhPT1ydC52YWx1ZSx5Lm9wdFNlbGVjdGVkPWl0LnNlbGVjdGVkLChydD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlPSJ0IixydC50eXBlPSJyYWRpbyIseS5yYWRpb1ZhbHVlPSJ0Ij09PXJ0LnZhbHVlO3ZhciBwdCxkdD1TLmV4cHIuYXR0ckhhbmRsZTtTLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiAkKHRoaXMsUy5hdHRyLGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLnJlbW92ZUF0dHIodGhpcyxlKX0pfX0pLFMuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZS5nZXRBdHRyaWJ1dGU/Uy5wcm9wKGUsdCxuKTooMT09PW8mJlMuaXNYTUxEb2MoZSl8fChpPVMuYXR0ckhvb2tzW3QudG9Mb3dlckNhc2UoKV18fChTLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpP3B0OnZvaWQgMCkpLHZvaWQgMCE9PW4/bnVsbD09PW4/dm9pZCBTLnJlbW92ZUF0dHIoZSx0KTppJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjooZS5zZXRBdHRyaWJ1dGUodCxuKyIiKSxuKTppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOm51bGw9PShyPVMuZmluZC5hdHRyKGUsdCkpP3ZvaWQgMDpyKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0KXtpZigheS5yYWRpb1ZhbHVlJiYicmFkaW8iPT09dCYmQShlLCJpbnB1dCIpKXt2YXIgbj1lLnZhbHVlO3JldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXQmJnQubWF0Y2goUCk7aWYoaSYmMT09PWUubm9kZVR5cGUpd2hpbGUobj1pW3IrK10pZS5yZW1vdmVBdHRyaWJ1dGUobil9fSkscHQ9e3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuITE9PT10P1MucmVtb3ZlQXR0cihlLG4pOmUuc2V0QXR0cmlidXRlKG4sbiksbn19LFMuZWFjaChTLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihlLHQpe3ZhciBhPWR0W3RdfHxTLmZpbmQuYXR0cjtkdFt0XT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gbnx8KGk9ZHRbb10sZHRbb109cixyPW51bGwhPWEoZSx0LG4pP286bnVsbCxkdFtvXT1pKSxyfX0pO3ZhciBodD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLGd0PS9eKD86YXxhcmVhKSQvaTtmdW5jdGlvbiB2dChlKXtyZXR1cm4oZS5tYXRjaChQKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiB5dChlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1mdW5jdGlvbiBtdChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOiJzdHJpbmciPT10eXBlb2YgZSYmZS5tYXRjaChQKXx8W119Uy5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLFMucHJvcCxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbUy5wcm9wRml4W2VdfHxlXX0pfX0pLFMuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiAxPT09byYmUy5pc1hNTERvYyhlKXx8KHQ9Uy5wcm9wRml4W3RdfHx0LGk9Uy5wcm9wSG9va3NbdF0pLHZvaWQgMCE9PW4/aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6ZVt0XT1uOmkmJiJnZXQiaW4gaSYmbnVsbCE9PShyPWkuZ2V0KGUsdCkpP3I6ZVt0XX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/cGFyc2VJbnQodCwxMCk6aHQudGVzdChlLm5vZGVOYW1lKXx8Z3QudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSkseS5vcHRTZWxlY3RlZHx8KFMucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmKHQuc2VsZWN0ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3 +RlZEluZGV4KX19KSxTLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe1MucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxTLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhLHMsdT0wO2lmKG0odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLmFkZENsYXNzKHQuY2FsbCh0aGlzLGUseXQodGhpcykpKX0pO2lmKChlPW10KHQpKS5sZW5ndGgpd2hpbGUobj10aGlzW3UrK10paWYoaT15dChuKSxyPTE9PT1uLm5vZGVUeXBlJiYiICIrdnQoaSkrIiAiKXthPTA7d2hpbGUobz1lW2ErK10pci5pbmRleE9mKCIgIitvKyIgIik8MCYmKHIrPW8rIiAiKTtpIT09KHM9dnQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyx1PTA7aWYobSh0KSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykucmVtb3ZlQ2xhc3ModC5jYWxsKHRoaXMsZSx5dCh0aGlzKSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigoZT1tdCh0KSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9eXQobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK3Z0KGkpKyIgIil7YT0wO3doaWxlKG89ZVthKytdKXdoaWxlKC0xPHIuaW5kZXhPZigiICIrbysiICIpKXI9ci5yZXBsYWNlKCIgIitvKyIgIiwiICIpO2khPT0ocz12dChyKSkmJm4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyl9cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGksdCl7dmFyIG89dHlwZW9mIGksYT0ic3RyaW5nIj09PW98fEFycmF5LmlzQXJyYXkoaSk7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdCYmYT90P3RoaXMuYWRkQ2xhc3MoaSk6dGhpcy5yZW1vdmVDbGFzcyhpKTptKGkpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLnRvZ2dsZUNsYXNzKGkuY2FsbCh0aGlzLGUseXQodGhpcyksdCksdCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LG4scjtpZihhKXt0PTAsbj1TKHRoaXMpLHI9bXQoaSk7d2hpbGUoZT1yW3QrK10pbi5oYXNDbGFzcyhlKT9uLnJlbW92ZUNsYXNzKGUpOm4uYWRkQ2xhc3MoZSl9ZWxzZSB2b2lkIDAhPT1pJiYiYm9vbGVhbiIhPT1vfHwoKGU9eXQodGhpcykpJiZZLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixlKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixlfHwhMT09PWk/IiI6WS5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj0wO3Q9IiAiK2UrIiAiO3doaWxlKG49dGhpc1tyKytdKWlmKDE9PT1uLm5vZGVUeXBlJiYtMTwoIiAiK3Z0KHl0KG4pKSsiICIpLmluZGV4T2YodCkpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHh0PS9cci9nO1MuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24obil7dmFyIHIsZSxpLHQ9dGhpc1swXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1tKG4pLHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgdDsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PSh0PWk/bi5jYWxsKHRoaXMsZSxTKHRoaXMpLnZhbCgpKTpuKT90PSIiOiJudW1iZXIiPT10eXBlb2YgdD90Kz0iIjpBcnJheS5pc0FycmF5KHQpJiYodD1TLm1hcCh0LGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSksKHI9Uy52YWxIb29rc1t0aGlzLnR5cGVdfHxTLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYic2V0ImluIHImJnZvaWQgMCE9PXIuc2V0KHRoaXMsdCwidmFsdWUiKXx8KHRoaXMudmFsdWU9dCkpfSkpOnQ/KHI9Uy52YWxIb29rc1t0LnR5cGVdfHxTLnZhbEhvb2tzW3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYiZ2V0ImluIHImJnZvaWQgMCE9PShlPXIuZ2V0KHQsInZhbHVlIikpP2U6InN0cmluZyI9PXR5cGVvZihlPXQudmFsdWUpP2UucmVwbGFjZSh4dCwiIik6bnVsbD09ZT8iIjplOnZvaWQgMH19KSxTLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInZhbHVlIik7cmV0dXJuIG51bGwhPXQ/dDp2dChTLnRleHQoZSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk9ZS5vcHRpb25zLG89ZS5zZWxlY3RlZEluZGV4LGE9InNlbGVjdC1vbmUiPT09ZS50eXBlLHM9YT9udWxsOltdLHU9YT9vKzE6aS5sZW5ndGg7Zm9yKHI9bzwwP3U6YT9vOjA7cjx1O3IrKylpZigoKG49aVtyXSkuc2VsZWN0ZWR8fHI9PT1vKSYmIW4uZGlzYWJsZWQmJighbi5wYXJlbnROb2RlLmRpc2FibGVkfHwhQShuLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZih0PVMobikudmFsKCksYSlyZXR1cm4gdDtzLnB1c2godCl9cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT1lLm9wdGlvbnMsbz1TLm1ha2VBcnJheSh0KSxhPWkubGVuZ3RoO3doaWxlKGEtLSkoKHI9aVthXSkuc2VsZWN0ZWQ9LTE8Uy5pbkFycmF5KFMudmFsSG9va3Mub3B0aW9uLmdldChyKSxvKSkmJihuPSEwKTtyZXR1cm4gbnx8KGUuc2VsZWN0ZWRJbmRleD0tMSksb319fX0pLFMuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe1MudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD0tMTxTLmluQXJyYXkoUyhlKS52YWwoKSx0KX19LHkuY2hlY2tPbnx8KFMudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjplLnZhbHVlfSl9KSx5LmZvY3VzaW49Im9uZm9jdXNpbiJpbiBDO3ZhciBidD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sd3Q9ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX07U +y5leHRlbmQoUy5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmLHA9W258fEVdLGQ9di5jYWxsKGUsInR5cGUiKT9lLnR5cGU6ZSxoPXYuY2FsbChlLCJuYW1lc3BhY2UiKT9lLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKG89Zj1hPW49bnx8RSwzIT09bi5ub2RlVHlwZSYmOCE9PW4ubm9kZVR5cGUmJiFidC50ZXN0KGQrUy5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ZC5pbmRleE9mKCIuIikmJihkPShoPWQuc3BsaXQoIi4iKSkuc2hpZnQoKSxoLnNvcnQoKSksdT1kLmluZGV4T2YoIjoiKTwwJiYib24iK2QsKGU9ZVtTLmV4cGFuZG9dP2U6bmV3IFMuRXZlbnQoZCwib2JqZWN0Ij09dHlwZW9mIGUmJmUpKS5pc1RyaWdnZXI9cj8yOjMsZS5uYW1lc3BhY2U9aC5qb2luKCIuIiksZS5ybmFtZXNwYWNlPWUubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxlLnJlc3VsdD12b2lkIDAsZS50YXJnZXR8fChlLnRhcmdldD1uKSx0PW51bGw9PXQ/W2VdOlMubWFrZUFycmF5KHQsW2VdKSxjPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scnx8IWMudHJpZ2dlcnx8ITEhPT1jLnRyaWdnZXIuYXBwbHkobix0KSkpe2lmKCFyJiYhYy5ub0J1YmJsZSYmIXgobikpe2ZvcihzPWMuZGVsZWdhdGVUeXBlfHxkLGJ0LnRlc3QocytkKXx8KG89by5wYXJlbnROb2RlKTtvO289by5wYXJlbnROb2RlKXAucHVzaChvKSxhPW87YT09PShuLm93bmVyRG9jdW1lbnR8fEUpJiZwLnB1c2goYS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3d8fEMpfWk9MDt3aGlsZSgobz1wW2krK10pJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWY9byxlLnR5cGU9MTxpP3M6Yy5iaW5kVHlwZXx8ZCwobD0oWS5nZXQobywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2UudHlwZV0mJlkuZ2V0KG8sImhhbmRsZSIpKSYmbC5hcHBseShvLHQpLChsPXUmJm9bdV0pJiZsLmFwcGx5JiZWKG8pJiYoZS5yZXN1bHQ9bC5hcHBseShvLHQpLCExPT09ZS5yZXN1bHQmJmUucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGUudHlwZT1kLHJ8fGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fGMuX2RlZmF1bHQmJiExIT09Yy5fZGVmYXVsdC5hcHBseShwLnBvcCgpLHQpfHwhVihuKXx8dSYmbShuW2RdKSYmIXgobikmJigoYT1uW3VdKSYmKG5bdV09bnVsbCksUy5ldmVudC50cmlnZ2VyZWQ9ZCxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYuYWRkRXZlbnRMaXN0ZW5lcihkLHd0KSxuW2RdKCksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZmLnJlbW92ZUV2ZW50TGlzdGVuZXIoZCx3dCksUy5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGEmJihuW3VdPWEpKSxlLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1TLmV4dGVuZChuZXcgUy5FdmVudCxuLHt0eXBlOmUsaXNTaW11bGF0ZWQ6ITB9KTtTLmV2ZW50LnRyaWdnZXIocixudWxsLHQpfX0pLFMuZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQudHJpZ2dlcihlLHQsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzWzBdO2lmKG4pcmV0dXJuIFMuZXZlbnQudHJpZ2dlcihlLHQsbiwhMCl9fSkseS5mb2N1c2lufHxTLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKG4scil7dmFyIGk9ZnVuY3Rpb24oZSl7Uy5ldmVudC5zaW11bGF0ZShyLGUudGFyZ2V0LFMuZXZlbnQuZml4KGUpKX07Uy5ldmVudC5zcGVjaWFsW3JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyx0PVkuYWNjZXNzKGUscik7dHx8ZS5hZGRFdmVudExpc3RlbmVyKG4saSwhMCksWS5hY2Nlc3MoZSxyLCh0fHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsdD1ZLmFjY2VzcyhlLHIpLTE7dD9ZLmFjY2VzcyhlLHIsdCk6KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGksITApLFkucmVtb3ZlKGUscikpfX19KTt2YXIgVHQ9Qy5sb2NhdGlvbixDdD17Z3VpZDpEYXRlLm5vdygpfSxFdD0vXD8vO1MucGFyc2VYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7dD0obmV3IEMuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoZSwidGV4dC94bWwiKX1jYXRjaChlKXt0PXZvaWQgMH1yZXR1cm4gdCYmIXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RofHxTLmVycm9yKCJJbnZhbGlkIFhNTDogIitlKSx0fTt2YXIgU3Q9L1xbXF0kLyxrdD0vXHI/XG4vZyxBdD0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksTnQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIER0KG4sZSxyLGkpe3ZhciB0O2lmKEFycmF5LmlzQXJyYXkoZSkpUy5lYWNoKGUsZnVuY3Rpb24oZSx0KXtyfHxTdC50ZXN0KG4pP2kobix0KTpEdChuKyJbIisoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10P2U6IiIpKyJdIix0LHIsaSl9KTtlbHNlIGlmKHJ8fCJvYmplY3QiIT09dyhlKSlpKG4sZSk7ZWxzZSBmb3IodCBpbiBlKUR0KG4rIlsiK3QrIl0iLGVbdF0scixpKX1TLnBhcmFtPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49bSh0KT90KCk6dDtyW3IubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1uPyIiOm4pfTtpZihudWxsPT1lKXJldHVybiIiO2lmKEFycmF5LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhUy5pc1BsYWluT2JqZWN0KGUpKVMuZWFjaChlLGZ1bmN0aW9uKCl7aSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihuIGluIGUpRHQobixlW25dLHQsaSk7cmV0dXJuIHIuam9pbigiJiIpfSxTLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIFMucGFyYW0odGhpcy5z +ZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT1TLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gZT9TLm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFTKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYmTnQudGVzdCh0aGlzLm5vZGVOYW1lKSYmIUF0LnRlc3QoZSkmJih0aGlzLmNoZWNrZWR8fCFwZS50ZXN0KGUpKX0pLm1hcChmdW5jdGlvbihlLHQpe3ZhciBuPVModGhpcykudmFsKCk7cmV0dXJuIG51bGw9PW4/bnVsbDpBcnJheS5pc0FycmF5KG4pP1MubWFwKG4sZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShrdCwiXHJcbiIpfX0pOntuYW1lOnQubmFtZSx2YWx1ZTpuLnJlcGxhY2Uoa3QsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIganQ9LyUyMC9nLHF0PS8jLiokLyxMdD0vKFs/Jl0pXz1bXiZdKi8sSHQ9L14oLio/KTpbIFx0XSooW15cclxuXSopJC9nbSxPdD0vXig/OkdFVHxIRUFEKSQvLFB0PS9eXC9cLy8sUnQ9e30sTXQ9e30sSXQ9IiovIi5jb25jYXQoIioiKSxXdD1FLmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBGdChvKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT0iKiIpO3ZhciBuLHI9MCxpPWUudG9Mb3dlckNhc2UoKS5tYXRjaChQKXx8W107aWYobSh0KSl3aGlsZShuPWlbcisrXSkiKyI9PT1uWzBdPyhuPW4uc2xpY2UoMSl8fCIqIiwob1tuXT1vW25dfHxbXSkudW5zaGlmdCh0KSk6KG9bbl09b1tuXXx8W10pLnB1c2godCl9fWZ1bmN0aW9uIEJ0KHQsaSxvLGEpe3ZhciBzPXt9LHU9dD09PU10O2Z1bmN0aW9uIGwoZSl7dmFyIHI7cmV0dXJuIHNbZV09ITAsUy5lYWNoKHRbZV18fFtdLGZ1bmN0aW9uKGUsdCl7dmFyIG49dChpLG8sYSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBufHx1fHxzW25dP3U/IShyPW4pOnZvaWQgMDooaS5kYXRhVHlwZXMudW5zaGlmdChuKSxsKG4pLCExKX0pLHJ9cmV0dXJuIGwoaS5kYXRhVHlwZXNbMF0pfHwhc1siKiJdJiZsKCIqIil9ZnVuY3Rpb24gJHQoZSx0KXt2YXIgbixyLGk9Uy5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihuIGluIHQpdm9pZCAwIT09dFtuXSYmKChpW25dP2U6cnx8KHI9e30pKVtuXT10W25dKTtyZXR1cm4gciYmUy5leHRlbmQoITAsZSxyKSxlfVd0LmhyZWY9VHQuaHJlZixTLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6VHQuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8udGVzdChUdC5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpJdCx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6Uy5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/JHQoJHQoZSxTLmFqYXhTZXR0aW5ncyksdCk6JHQoUy5hamF4U2V0dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6RnQoUnQpLGFqYXhUcmFuc3BvcnQ6RnQoTXQpLGFqYXg6ZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLHQ9dHx8e307dmFyIGMsZixwLG4sZCxyLGgsZyxpLG8sdj1TLmFqYXhTZXR1cCh7fSx0KSx5PXYuY29udGV4dHx8dixtPXYuY29udGV4dCYmKHkubm9kZVR5cGV8fHkuanF1ZXJ5KT9TKHkpOlMuZXZlbnQseD1TLkRlZmVycmVkKCksYj1TLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx3PXYuc3RhdHVzQ29kZXx8e30sYT17fSxzPXt9LHU9ImNhbmNlbGVkIixUPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoaCl7aWYoIW4pe249e307d2hpbGUodD1IdC5leGVjKHApKW5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl09KG5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl18fFtdKS5jb25jYXQodFsyXSl9dD1uW2UudG9Mb3dlckNhc2UoKSsiICJdfXJldHVybiBudWxsPT10P251bGw6dC5qb2luKCIsICIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaD9wOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09aCYmKGU9c1tlLnRvTG93ZXJDYXNlKCldPXNbZS50b0xvd2VyQ2FzZSgpXXx8ZSxhW2VdPXQpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWgmJih2Lm1pbWVUeXBlPWUpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihoKVQuYWx3YXlzKGVbVC5zdGF0dXNdKTtlbHNlIGZvcih0IGluIGUpd1t0XT1bd1t0XSxlW3RdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8dTtyZXR1cm4gYyYmYy5hYm9ydCh0KSxsKDAsdCksdGhpc319O2lmKHgucHJvbWlzZShUKSx2LnVybD0oKGV8fHYudXJsfHxUdC5ocmVmKSsiIikucmVwbGFjZShQdCxUdC5wcm90b2NvbCsiLy8iKSx2LnR5cGU9dC5tZXRob2R8fHQudHlwZXx8di5tZXRob2R8fHYudHlwZSx2LmRhdGFUeXBlcz0odi5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKFApfHxbIiJdLG51bGw9PXY +uY3Jvc3NEb21haW4pe3I9RS5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e3IuaHJlZj12LnVybCxyLmhyZWY9ci5ocmVmLHYuY3Jvc3NEb21haW49V3QucHJvdG9jb2wrIi8vIitXdC5ob3N0IT1yLnByb3RvY29sKyIvLyIrci5ob3N0fWNhdGNoKGUpe3YuY3Jvc3NEb21haW49ITB9fWlmKHYuZGF0YSYmdi5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiB2LmRhdGEmJih2LmRhdGE9Uy5wYXJhbSh2LmRhdGEsdi50cmFkaXRpb25hbCkpLEJ0KFJ0LHYsdCxUKSxoKXJldHVybiBUO2ZvcihpIGluKGc9Uy5ldmVudCYmdi5nbG9iYWwpJiYwPT1TLmFjdGl2ZSsrJiZTLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHYudHlwZT12LnR5cGUudG9VcHBlckNhc2UoKSx2Lmhhc0NvbnRlbnQ9IU90LnRlc3Qodi50eXBlKSxmPXYudXJsLnJlcGxhY2UocXQsIiIpLHYuaGFzQ29udGVudD92LmRhdGEmJnYucHJvY2Vzc0RhdGEmJjA9PT0odi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYodi5kYXRhPXYuZGF0YS5yZXBsYWNlKGp0LCIrIikpOihvPXYudXJsLnNsaWNlKGYubGVuZ3RoKSx2LmRhdGEmJih2LnByb2Nlc3NEYXRhfHwic3RyaW5nIj09dHlwZW9mIHYuZGF0YSkmJihmKz0oRXQudGVzdChmKT8iJiI6Ij8iKSt2LmRhdGEsZGVsZXRlIHYuZGF0YSksITE9PT12LmNhY2hlJiYoZj1mLnJlcGxhY2UoTHQsIiQxIiksbz0oRXQudGVzdChmKT8iJiI6Ij8iKSsiXz0iK0N0Lmd1aWQrKytvKSx2LnVybD1mK28pLHYuaWZNb2RpZmllZCYmKFMubGFzdE1vZGlmaWVkW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixTLmxhc3RNb2RpZmllZFtmXSksUy5ldGFnW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLFMuZXRhZ1tmXSkpLCh2LmRhdGEmJnYuaGFzQ29udGVudCYmITEhPT12LmNvbnRlbnRUeXBlfHx0LmNvbnRlbnRUeXBlKSYmVC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHYuY29udGVudFR5cGUpLFQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iix2LmRhdGFUeXBlc1swXSYmdi5hY2NlcHRzW3YuZGF0YVR5cGVzWzBdXT92LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dKygiKiIhPT12LmRhdGFUeXBlc1swXT8iLCAiK0l0KyI7IHE9MC4wMSI6IiIpOnYuYWNjZXB0c1siKiJdKSx2LmhlYWRlcnMpVC5zZXRSZXF1ZXN0SGVhZGVyKGksdi5oZWFkZXJzW2ldKTtpZih2LmJlZm9yZVNlbmQmJighMT09PXYuYmVmb3JlU2VuZC5jYWxsKHksVCx2KXx8aCkpcmV0dXJuIFQuYWJvcnQoKTtpZih1PSJhYm9ydCIsYi5hZGQodi5jb21wbGV0ZSksVC5kb25lKHYuc3VjY2VzcyksVC5mYWlsKHYuZXJyb3IpLGM9QnQoTXQsdix0LFQpKXtpZihULnJlYWR5U3RhdGU9MSxnJiZtLnRyaWdnZXIoImFqYXhTZW5kIixbVCx2XSksaClyZXR1cm4gVDt2LmFzeW5jJiYwPHYudGltZW91dCYmKGQ9Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VC5hYm9ydCgidGltZW91dCIpfSx2LnRpbWVvdXQpKTt0cnl7aD0hMSxjLnNlbmQoYSxsKX1jYXRjaChlKXtpZihoKXRocm93IGU7bCgtMSxlKX19ZWxzZSBsKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD10O2h8fChoPSEwLGQmJkMuY2xlYXJUaW1lb3V0KGQpLGM9dm9pZCAwLHA9cnx8IiIsVC5yZWFkeVN0YXRlPTA8ZT80OjAsaT0yMDA8PWUmJmU8MzAwfHwzMDQ9PT1lLG4mJihzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzPWUuY29udGVudHMsdT1lLmRhdGFUeXBlczt3aGlsZSgiKiI9PT11WzBdKXUuc2hpZnQoKSx2b2lkIDA9PT1yJiYocj1lLm1pbWVUeXBlfHx0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYocilmb3IoaSBpbiBzKWlmKHNbaV0mJnNbaV0udGVzdChyKSl7dS51bnNoaWZ0KGkpO2JyZWFrfWlmKHVbMF1pbiBuKW89dVswXTtlbHNle2ZvcihpIGluIG4pe2lmKCF1WzBdfHxlLmNvbnZlcnRlcnNbaSsiICIrdVswXV0pe289aTticmVha31hfHwoYT1pKX1vPW98fGF9aWYobylyZXR1cm4gbyE9PXVbMF0mJnUudW5zaGlmdChvKSxuW29dfSh2LFQsbikpLCFpJiYtMTxTLmluQXJyYXkoInNjcmlwdCIsdi5kYXRhVHlwZXMpJiYodi5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdPWZ1bmN0aW9uKCl7fSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoUy5sYXN0TW9kaWZpZWRbZl09dSksKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKFMuZXRhZ1tmXT11KSksMjA0PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmllZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJlcnJvciIsZTwwJiYoZT +0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gucmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0NvZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbVCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHZdKSwtLVMuYWN0aXZlfHxTLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gVH0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFMuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBTLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxTLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxpKXtTW2ldPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBtKHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksUy5hamF4KFMuZXh0ZW5kKHt1cmw6ZSx0eXBlOmksZGF0YVR5cGU6cixkYXRhOnQsc3VjY2VzczpufSxTLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpJiYoZS5jb250ZW50VHlwZT1lLmhlYWRlcnNbdF18fCIiKX0pLFMuX2V2YWxVcmw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBTLmFqYXgoe3VybDplLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oKXt9fSxkYXRhRmlsdGVyOmZ1bmN0aW9uKGUpe1MuZ2xvYmFsRXZhbChlLHQsbil9fSl9LFMuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYobShlKSYmKGU9ZS5jYWxsKHRoaXNbMF0pKSx0PVMoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1TKHRoaXMpLHQ9ZS5jb250ZW50cygpO3QubGVuZ3RoP3Qud3JhcEFsbChuKTplLmFwcGVuZChuKX0pfSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBuPW0odCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBBbGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtTKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLFMuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4hUy5leHByLnBzZXVkb3MudmlzaWJsZShlKX0sUy5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LFMuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEMuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIF90PXswOjIwMCwxMjIzOjIwNH0senQ9Uy5hamF4U2V0dGluZ3MueGhyKCk7eS5jb3JzPSEhenQmJiJ3aXRoQ3JlZGVudGlhbHMiaW4genQseS5hamF4PXp0PSEhenQsUy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkpe3ZhciBvLGE7aWYoeS5jb3JzfHx6dCYmIWkuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkueGhyKCk7aWYoci5vcGVuKGkudHlwZSxpLnVybCxpLmFzeW5jLGkudXNlcm5hbWUsaS5wYXNzd29yZCksaS54aHJGaWVsZHMpZm9yKG4gaW4gaS54aHJGaWVsZHMpcltuXT1pLnhockZpZWxkc1tuXTtmb3IobiBpbiBpLm1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSxpLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSlyLnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe28mJihvPWE9ci5vbmxvYWQ9ci5vbmVycm9yPXIub25hYm9ydD1yLm9udGltZW91dD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3IuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVtYmVyIiE9dHlwZW9mIHIuc3RhdHVzP3QoMCwiZXJyb3IiKTp0KHIuc3RhdHVzLHIuc3RhdHVzVGV4dCk6dChfdFtyLnN0YXR1c118fHIuc3RhdHVzLHIuc3RhdHVzVGV4dCwidGV4dCIhPT0oci5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygci5yZXNwb25zZVRleHQ/e2JpbmFyeTpyLnJlc3BvbnNlfTp7dGV4dDpyLnJlc3BvbnNlVGV4dH0sci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sci5vbmxvYWQ9bygpLGE9ci5vbmVycm9yPXIub250aW1lb3V0PW8oImVycm9yIiksdm9pZCAwIT09ci5vbmFib3J0P3Iub25hYm9ydD1hOnIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXIucmVhZHlTdGF0ZSYmQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksUy5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxTLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phd +mFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gUy5nbG9iYWxFdmFsKGUpLGV9fX0pLFMuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNhY2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxTLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24obil7dmFyIHIsaTtpZihuLmNyb3NzRG9tYWlufHxuLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7cj1TKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpuLnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUmJnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxFLmhlYWQuYXBwZW5kQ2hpbGQoclswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgVXQsWHQ9W10sVnQ9Lyg9KVw/KD89JnwkKXxcP1w/LztTLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9WHQucG9wKCl8fFMuZXhwYW5kbysiXyIrQ3QuZ3VpZCsrO3JldHVybiB0aGlzW2VdPSEwLGV9fSksUy5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9ITEhPT1lLmpzb25wJiYoVnQudGVzdChlLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBlLmRhdGEmJjA9PT0oZS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZWdC50ZXN0KGUuZGF0YSkmJiJkYXRhIik7aWYoYXx8Impzb25wIj09PWUuZGF0YVR5cGVzWzBdKXJldHVybiByPWUuanNvbnBDYWxsYmFjaz1tKGUuanNvbnBDYWxsYmFjayk/ZS5qc29ucENhbGxiYWNrKCk6ZS5qc29ucENhbGxiYWNrLGE/ZVthXT1lW2FdLnJlcGxhY2UoVnQsIiQxIityKTohMSE9PWUuanNvbnAmJihlLnVybCs9KEV0LnRlc3QoZS51cmwpPyImIjoiPyIpK2UuanNvbnArIj0iK3IpLGUuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBvfHxTLmVycm9yKHIrIiB3YXMgbm90IGNhbGxlZCIpLG9bMF19LGUuZGF0YVR5cGVzWzBdPSJqc29uIixpPUNbcl0sQ1tyXT1mdW5jdGlvbigpe289YXJndW1lbnRzfSxuLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWk/UyhDKS5yZW1vdmVQcm9wKHIpOkNbcl09aSxlW3JdJiYoZS5qc29ucENhbGxiYWNrPXQuanNvbnBDYWxsYmFjayxYdC5wdXNoKHIpKSxvJiZtKGkpJiZpKG9bMF0pLG89aT12b2lkIDB9KSwic2NyaXB0In0pLHkuY3JlYXRlSFRNTERvY3VtZW50PSgoVXQ9RS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1VdC5jaGlsZE5vZGVzLmxlbmd0aCksUy5wYXJzZUhUTUw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJzdHJpbmciIT10eXBlb2YgZT9bXTooImJvb2xlYW4iPT10eXBlb2YgdCYmKG49dCx0PSExKSx0fHwoeS5jcmVhdGVIVE1MRG9jdW1lbnQ/KChyPSh0PUUuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPUUubG9jYXRpb24uaHJlZix0LmhlYWQuYXBwZW5kQ2hpbGQocikpOnQ9RSksbz0hbiYmW10sKGk9Ti5leGVjKGUpKT9bdC5jcmVhdGVFbGVtZW50KGlbMV0pXTooaT14ZShbZV0sdCxvKSxvJiZvLmxlbmd0aCYmUyhvKS5yZW1vdmUoKSxTLm1lcmdlKFtdLGkuY2hpbGROb2RlcykpKTt2YXIgcixpLG99LFMuZm4ubG9hZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9dGhpcyxzPWUuaW5kZXhPZigiICIpO3JldHVybi0xPHMmJihyPXZ0KGUuc2xpY2UocykpLGU9ZS5zbGljZSgwLHMpKSxtKHQpPyhuPXQsdD12b2lkIDApOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmKGk9IlBPU1QiKSwwPGEubGVuZ3RoJiZTLmFqYXgoe3VybDplLHR5cGU6aXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6dH0pLmRvbmUoZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsYS5odG1sKHI/UygiPGRpdj4iKS5hcHBlbmQoUy5wYXJzZUhUTUwoZSkpLmZpbmQocik6ZSl9KS5hbHdheXMobiYmZnVuY3Rpb24oZSx0KXthLmVhY2goZnVuY3Rpb24oKXtuLmFwcGx5KHRoaXMsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfSl9KSx0aGlzfSxTLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gUy5ncmVwKFMudGltZXJzLGZ1bmN0aW9uKGUpe3JldHVybiB0PT09ZS5lbGVtfSkubGVuZ3RofSxTLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbD1TLmNzcyhlLCJwb3NpdGlvbiIpLGM9UyhlKSxmPXt9OyJzdGF0aWMiPT09bCYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIikscz1jLm9mZnNldCgpLG89Uy5jc3MoZSwidG9wIiksdT1TLmNzcyhlLCJsZWZ0IiksKCJhYnNvbHV0ZSI9PT1sfHwiZml4ZWQiPT09bCkmJi0xPChvK3UpLmluZGV4T2YoImF1dG8iKT8oYT0ocj1jLnBvc2l0aW9uKCkpLnRvcCxpPXIubGVmdCk6KGE9cGFyc2VGbG9hdChvKXx8MCxpPXBhcnNlRmxvYXQodSl8fDApLG0odCkmJih0PXQuY2FsbChlLG4sUy5leHRlbmQoe30scykpKSxudWxsIT10LnRvcCYmKGYudG9wPXQudG9wLXMudG9wK2EpLG51bGwhPXQubGVmdCYmKGYubGVmdD10LmxlZnQtcy5sZWZ0K2kpLCJ1c2luZyJpbiB0P3QudXNpbmcuY2FsbChlLGYpOigibnVtYmVyIj09dHlwZW9mIGYudG9wJiYoZi50b3ArPSJweCIpLCJudW1iZXIiPT10eXBlb2YgZi5sZWZ0JiYoZi5sZWZ0Kz0icHgiKSxjLmNzcyhmKSl9fSxTLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKHQpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PXQ/dGhpczp0 +aGlzLmVhY2goZnVuY3Rpb24oZSl7Uy5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsdCxlKX0pO3ZhciBlLG4scj10aGlzWzBdO3JldHVybiByP3IuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg/KGU9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyx7dG9wOmUudG9wK24ucGFnZVlPZmZzZXQsbGVmdDplLmxlZnQrbi5wYWdlWE9mZnNldH0pOnt0b3A6MCxsZWZ0OjB9OnZvaWQgMH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgZSx0LG4scj10aGlzWzBdLGk9e3RvcDowLGxlZnQ6MH07aWYoImZpeGVkIj09PVMuY3NzKHIsInBvc2l0aW9uIikpdD1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Vsc2V7dD10aGlzLm9mZnNldCgpLG49ci5vd25lckRvY3VtZW50LGU9ci5vZmZzZXRQYXJlbnR8fG4uZG9jdW1lbnRFbGVtZW50O3doaWxlKGUmJihlPT09bi5ib2R5fHxlPT09bi5kb2N1bWVudEVsZW1lbnQpJiYic3RhdGljIj09PVMuY3NzKGUsInBvc2l0aW9uIikpZT1lLnBhcmVudE5vZGU7ZSYmZSE9PXImJjE9PT1lLm5vZGVUeXBlJiYoKGk9UyhlKS5vZmZzZXQoKSkudG9wKz1TLmNzcyhlLCJib3JkZXJUb3BXaWR0aCIsITApLGkubGVmdCs9Uy5jc3MoZSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpfXJldHVybnt0b3A6dC50b3AtaS50b3AtUy5jc3MociwibWFyZ2luVG9wIiwhMCksbGVmdDp0LmxlZnQtaS5sZWZ0LVMuY3NzKHIsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShlJiYic3RhdGljIj09PVMuY3NzKGUsInBvc2l0aW9uIikpZT1lLm9mZnNldFBhcmVudDtyZXR1cm4gZXx8cmV9KX19KSxTLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24odCxpKXt2YXIgbz0icGFnZVlPZmZzZXQiPT09aTtTLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKHgoZSk/cj1lOjk9PT1lLm5vZGVUeXBlJiYocj1lLmRlZmF1bHRWaWV3KSx2b2lkIDA9PT1uKXJldHVybiByP3JbaV06ZVt0XTtyP3Iuc2Nyb2xsVG8obz9yLnBhZ2VYT2Zmc2V0Om4sbz9uOnIucGFnZVlPZmZzZXQpOmVbdF09bn0sdCxlLGFyZ3VtZW50cy5sZW5ndGgpfX0pLFMuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLG4pe1MuY3NzSG9va3Nbbl09JGUoeS5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4gdD1CZShlLG4pLE1lLnRlc3QodCk/UyhlKS5wb3NpdGlvbigpW25dKyJweCI6dH0pfSksUy5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxzKXtTLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6cywiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKHIsbyl7Uy5mbltvXT1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGgmJihyfHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxpPXJ8fCghMD09PWV8fCEwPT09dD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuICQodGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHgoZSk/MD09PW8uaW5kZXhPZigib3V0ZXIiKT9lWyJpbm5lciIrYV06ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWUubm9kZVR5cGU/KHI9ZS5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoZS5ib2R5WyJzY3JvbGwiK2FdLHJbInNjcm9sbCIrYV0sZS5ib2R5WyJvZmZzZXQiK2FdLHJbIm9mZnNldCIrYV0sclsiY2xpZW50IithXSkpOnZvaWQgMD09PW4/Uy5jc3MoZSx0LGkpOlMuc3R5bGUoZSx0LG4saSl9LHMsbj9lOnZvaWQgMCxuKX19KX0pLFMuZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGUsdCl7Uy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbih0LGUpfX0pLFMuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX0saG92ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodHx8ZSl9fSksUy5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsbil7Uy5mbltuXT1mdW5jdGlvbihlLHQpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihuLG51bGwsZSx0KTp0aGlzLnRyaWdnZXIobil9fSk7dmFyIEd0PS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZztTLnByb3h5PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKG49ZVt0XSx0PWUsZT1uKSxtKGUpKXJldHVybiByPXMuY2FsbChhcmd1bWVudHMsMiksKGk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0fHx0aGlzLHIuY29uY2F0KHMuY2FsbChhcmd1bWVudHMpKSl9KS5ndWlkPWUuZ3VpZD1lLmd1aWR8fFMuZ3VpZCsrLGl9LFMuaG9sZFJlYWR5PWZ1bmN0aW9uKGUpe2U/Uy5yZWFkeVdhaXQrKzpTLnJlYWR5KCEwKX0sUy5pc0FycmF5PUFycmF5LmlzQXJyYXksUy5wYXJzZUpTT049SlNPTi5wYXJzZSxTLm5vZGVOYW1lPUEsUy5pc0Z1bmN0aW9uPW0sUy5pc1dpbmRvdz14LFMuY2FtZWxDYXNlPVgsUy5 +0eXBlPXcsUy5ub3c9RGF0ZS5ub3csUy5pc051bWVyaWM9ZnVuY3Rpb24oZSl7dmFyIHQ9Uy50eXBlKGUpO3JldHVybigibnVtYmVyIj09PXR8fCJzdHJpbmciPT09dCkmJiFpc05hTihlLXBhcnNlRmxvYXQoZSkpfSxTLnRyaW09ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6KGUrIiIpLnJlcGxhY2UoR3QsIiIpfSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gU30pO3ZhciBZdD1DLmpRdWVyeSxRdD1DLiQ7cmV0dXJuIFMubm9Db25mbGljdD1mdW5jdGlvbihlKXtyZXR1cm4gQy4kPT09UyYmKEMuJD1RdCksZSYmQy5qUXVlcnk9PT1TJiYoQy5qUXVlcnk9WXQpLFN9LCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKEMualF1ZXJ5PUMuJD1TKSxTfSk7Cg==]] + +local TormyLOGO = [[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]] + +local TVCLogo = [[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]] + +local REAPERLogo =[[/9j/4AAQSkZJRgABAQEAYABgAAD/4QA6RXhpZgAATU0AKgAAAAgAA1EQAAEAAAABAQAAAFERAAQAAAABAAAAAFESAAQAAAABAAAAAAAAAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAFaASwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKKKACiiigAooooAKKKKACiior6/h0uzluLmaK3t4FLySyuESNRySSeAB6mgCWivnX4o/8ABTb4c+DZ7iy8NyX3xB1SElCmgqslnG44w925WAAHrsZ2GD8pPFeKeK/22/jB8XN0ej/2T4E0+QnA06AahehfQ3M6iIH/AHYc+jCvXwuR4yuuaMLLu9EefXzTD0nZyu+y1Pu3VtYtNB06W8vrq3srSAbpJ55BHHGPUsxAH41454x/4KF/CbwncyW1v4m/4SS+jz/o+gWkuqEkfwmSFTEp9mcV8dX3whbxzqceoeLNS1DxNeIcrLrF3JqLRnvtWQ+XH9EUD2rqrDwbpthEqiNpAowAzfKPoowK9mjwzTj/ABql/KK/Vnm1M6m/4UPv/wAkeq+Jf+Cm97PNs8N/DXUJ0OQJtc1eGwHsRHCs7n6NtNchq37Znxo8VAizPhHw/G3/AD66RPeyKPaSWVVzyOTHjjpWXbQw2YxDFFH/ALqAVKZ816VPKMDDanf1bf8AwDjnmGJlvK3ojMvfH3xj8SIV1H4l+JljY/dtItPsNvsDFBv/ADYn3rNn8OeLNV/4/vHHja6b1k8U36f+i5FFdJ51HnV2Rw9GPw04r5HPKtVe8397OVh+GuoRHP8Awk3in0wfE+qMP1npF+G+qQPuj8UeLFb1HivVV/8Aa9dX51HnVfLH+Vfcv8iOaf8AM/vZgQWvjzSCDYfEPxzb7egHiGadfyn3g/jWvp/xr+OHhp1aHx9d6jGgwsWpaPYXKfiYUikP1LVY86jzqylhsPL4qUX8jSNetH4Zv7zc0r9v34qeFsf2t4b8HeIY1HPlSXOjyN+LC4UV3Hhb/gp1ociqvibwX4t0FujzWiRarbL6nMLebgepiH0ry37R7/pVW50mzvv9ZbwMfULtb8xXHVyXAz+w4+jf6nTDMsVH7V/VH1h8Nv2vvhl8W7hbfQfGmh3F65wLK4lNnefjBMElH4rXpFfnT4l+E2jeKbUw3VvFNF18u4iWdB9Awz+tQ+FtM8afBxE/4Qrxh4g0S3h+5aRXX2uyUegtrkPGo68R7fzry63DKetCp8pafitDtp530qw+7/I/RyivjPwV/wAFGPG3gyeO38a+EbHxFbrgPeaE5srxR3JtZ2KMf92Ze+F7V798G/2w/h78c7lbPRfEEEOtEZbSNRRrHUU/7YyYZh23JuX3rw8VleKw+tWDt33X3o9TD46hW+CWvbqenUUUV551hRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVT17xBYeFdGuNR1S+s9N0+zQyT3V1MsMMCjqzOxAUe5NeL/tD/ALdOgfCLVLnw94ft/wDhMPGUPyy2VtMEtNKY4wb245EPGSI1DSHj5ADuHzH4ltvFP7QGtxat4+1g6r5TiW309I2h0mxbsYbUk7mGeJZi7+hHSu3D4GdT3nou58jnnGGDwDdGn+8q/wAq6f4nsvzPQP2hv+CvOm6Fqs2g/C/QZPFGprgHWtUR7XR48gEGJRia669ECIe0tfN/iy88dftK363nxG8SX2s2+8SR6bL/AKPpkB5xsskwhIyQGm3vjqx5rovij4WsvDfjKG7t4V8y7tlVpmGXJQkde3G3gVV0+/6c1+m5TlmDoYeFWjC8mtZPV3626LU+fo5zisfSVSvKyf2Y6L/Nmt4a8IabocMapCspjGFMgBVfovQD8K6SC729OnQCubtr3Her0N9gda6qkZSd2dVO0Vob0d3mpBd4/wD11ix32O/61Kl4D/8Arrn9mbcxri8zTjdAf/rrIF2R3/Wnfa8/xVPsyuc1Bcqf4v1pftAHf9ay/tX+1R9p9/5UvZhzmp9oWlE6mswXf+cUouxRyBzGn5w/yaPN/wA5rOF5zT1u+ev6UuUfMaAkz/8ArpRL/tfnVBbz/IpwvM+tTyj5i953+c0ed/nNVVn3ev0pRNmlygT3EUd3FsljjkQ/wuM1y/i/4R6P4utfLmt4ZFU7lWVfMVG9VP3lPupyK6PeaXzM+tXGUo7A4p7lXwD+0B8Vf2djHFYawfFmgxcHTfEMslztXjiG8GZozgYAl81RnoOo+mPgR+314I+M2o2+j3z3Hg3xTcfKmlayyR/a34yLacExXA9Ap345KLggfOJk/Gud8YfDPSvGFjJDPbW7JJy0ckQeJj2JXsfcYIry8ZkuFxOtuSXdbfNHbh8wr0dL8y7Pf7z9IKK/Pn4SftT/ABE/Zdmhsbprrx14Rj4/s/ULkvqNqo7Wl25+cD/nlcE8ABXQcV9nfAn9ovwn+0b4ZfUvC+pC4a1IS9sZ0MN9pshzhJ4W+aNjg4yMMBlSRzXx2YZTiMI71FePRrY+gwuPpYhWi9ez3O4ooorzDtCiiigAooooAKKKKACiisvxr410n4c+E9Q13XL+30vSNLha4urqdtscKDqT/IAZJJAAJIFBMpKK5pbFrW9cs/DWj3Woald2thYWUTTXFzcSrFDBGoyzuzEBVA5JJwK+G/jz+37r3x88Sp4Z+HMl/oHg+aQxT6/GGg1PVh0Btc4NtAT1lYCRgcoEGGbmfj38b/EH7Z/iTy5objSPAFnKJbDR5QVa+wcpdXo7txuSDonBbLD5c9NIh8P2+23GJM7mkI+Z2HQn/CuWOMSqprZPXzPwHjbxIxFaf1TJpctOL96p1lZ6xh2T2cvuNvwT8OdN8E6dHb29vAgjJYIg+RWJyW55ZieSzZJPPWuhMxz2qnb3wvbeOZfuyKGHtmlMuPSvtL3PFp8kY+51/E4748Wpk0GzvF+9az7Gx/dcf4gfnXBaff8AH/169W8d6d/b3hDULVVy7Ql4/wDfX5l/UYrw7T9Q2gV9pw/U58K6fWL/AAev53PqMjr3puHZ/n/TOytL7A6nirkOoe//ANeuVt9Tx/FVpNWwfvV6kqZ9JGodQmo+9SDUcfxfrXLLrCr3x+NB1zb/ABVi6Jqqh1Y1MDuDR/aoFcmdfA/ipv8AwkK/3qn2Q/aHXf2rn+L9ad/ag9f1rjj4kGfvUn/CRL/eo9iP2h2g1VTTl1P3ri08SDP3v1qaPxFn+Kp9kP2h2San/tVIuof7Qrj4/EII+9+tWItdB/iqfZj9odYl/wC/61NHfZ/irl4tayetWodXBNS6bLUzolvMn71SLdE/xVhRalkdasR3+e4 +rP2ZXOba3LY604Tlh96slLvP/AOupkucn0rPkZfMaIkY9/wBafu9/1rPa/WIfeqGTWVP8XFTyMfMaNykVzE0cqrJG3BVuQa47U/Bmo+EvE9v4m8JapfaH4gsB+5vbNh56r/zzdTlZ4T3jkBHcYOCNltXH96pYNS39zV8mjjJXT3T2ZPNrdOzXU+jP2S/2+7L4v6lb+E/GkNn4c8cSDFsY2K6dr2OptWY5WQDloHO4dVLrkj6Qr8x/Hnw9s/HGnSBox5xIk4YoS6nKurDBSRSAQ6kEEde9e8fsW/tz30eu2Pw7+Jl75mpXDi10HxDONh1N+i2l12W6/uPws2McScP8bnGQezTxGF+Hquq/zX5H0WX5pztUq+/R9/8Agn2BRRRXyh7gUUUUAFFFFAFfV9WtdA0q6vr64hs7Kyiee4nmcJHBGgLM7MeAoAJJPAAr8/Pjn8cNQ/bL8fwzQmW2+H+jz+botk6lRqDKfl1KdTg8j/UxsPlU7iAx+Xtf29/j5J8XvHMnwu0KXzNA0eaNvEs0bfLqN1w6adn/AJ5oCkkpB5OxD0kFcXp1jHoVgsMf3jy7Y++3r9PavOxVa75I7dT8Q8QuLHiKksowcrQj/Ekur/kXl/N93qsdrHpdqsMK7VXknux9SfWsrVnyGq5d3ef4v0rH1C4z0rlTPxzGSjy8sTY8Jal52mtCW5t2x+ByR/X8q0mucH1rjND1X7DrKqxws+Yz9eo/Xj8a27nUtlfb5ZiPa4eL6rR/L/gH0GSYj22FinvHT7tvwsaT32014B41t/8AhGPGF/arlY1lLxD/AGG+ZfyBx+Feu3euLEPmZV9yayPF37MPj740Xmn3vhnwtqV8XXyXlk22sOzlg3mSlVIGT0JJyMA19RkePhh67VVpRkt27LTVf5fM+wyWNR4jlppu+miv+R5YmvbP4qc3iNV/ir6J8Af8EjPGmurHJ4k8T6L4fjYZaK1he/mHt1jUfUFsehr2nwP/AMEn/hr4fVG1qbxB4lkA+cT3ptYmPssGxh/31XsYrijLqT0nzPyV/wAXZfifoWHyTGT15eX1f9P8D4Gm8XLEPmkUfjV3w3HrHjiXZomk6trDZwRY2klxg+5QHH41+pngr9lr4c/DxEGkeC/Dtq0f3ZWs1mm+vmPuYn3JzXeoixoqqoVVGAAOAK8KtxpBfwaT+bt+CT/M9Snw3P8A5eVPuV/x0/I/LLQP2T/i54ox9k8B64u7kfavKtAfxmZa6vR/+CdXxi1hVM2k6Ppe7nF3qsZK/wDfoSfpX6R0V5tTjHFv4YxXyb/U7Y8O4dfFJv7v8j8/LH/glt8SrkL9o1nwnbZPOLieTH5RCrX/AA6n+IGf+Rm8J/8Akx/8RX3zRXM+Ksw7r7kbf2DhOz+8+BZP+CVvxChTdH4k8KSN/d3Trn8dlZmpf8E0fitpys0Enhe+29BHqDozfTdGB+tfobRTjxZj1u0/l/kKWQ4V7X+8/MrWv2K/jF4dR2m8G3VzGhxvtL22uN30VZN/5qK4bxR4X8UfD4M2veHdd0eNesl3YyxRj/gRXb+tfrdRXZS4yrr+LTi/S6/zOefDtL7E2vWz/wAj8gbLxcko+WRW+hrTtfEwJ+9X6X+P/wBmL4f/ABQST+3PCOi3Ukud06QeROSep82Pa4PuDmvD/iP/AMEp/DOrCSbwp4g1Tw9NyVgul+3W/wBOSsg9Ml2x6GvYw/FeCqaVU4fivvWv4Hn1sixMNYNS/B/jp+J8o2viDd/FWlba1u/ira+J/wCw98UPhIslw2jf8JDp0XJutHf7QQPeIgS/iFIHrXi9x8SY7J3i3bZImKurDDIw6gg8g/WvocPOliY81CSkvJ3+/seTVU6LtVTXqesprscS/My1Dc+MkjGFbFeN3fxVUk/vP1qsvxCa8Pyt+Nd0Mvb1Zzyxi6Hrtz4yB/iqFfEjTt1/GvN7HxCZOrbq27LVs/xVcsKoijXbO5ttUJ6mtO1v81xdlqecc1rWWo9PmrkqUTeEzsLa+96y/Hvgmz8e6LNBNDHK8kZRlbpMvoT2I6gjkHFQ2moZFalre1yuLi7o6L82jPdP+Cfv7ZV5rWpQ/C/x5fSXGv20Tf8ACP6vcH59at4wN1vMx63cQGSesqDfyyyGvrqvyv8Aih4QbXLKPUbKa4stSsJY7uC6t22zWk0R3RXEZ7SRsAR6gYPHB+4/2Fv2pz+0z8KpF1byYPGnhh0sNft4xtSSQrmO6jH/ADynUbwP4WDpyUNfB8RZOqL+tUF7kt12f+T6H0+U5g6i9hV+JbPuv8z22iiivlT2wryT9tP9oeT9nT4K3F9p3kyeJ9bmGlaDDINym7kVj5rDukSK8rDuI8ZG4V63X5x/tZ/FRv2h/wBrnUY4ZPM8P+BfM0Cww2VacENfzjtkyKkAI/54H1wOfE1vZwutz47jriP+xsqlXg/3k/dh/ifX5K7+Rk/CzwzH4X0BZGkkuLiYvI08zbpbh3YvJM57vI5Ziff3rcu9Qx3rPutTWJdq7QqjAA7CsfVPE8NpxJIobsvVj9B1ryL2R/LzxDS9nG8pP5tvr82al5qHXmsu8v8AdmsG98WSz/6mPaP70hyfyH+NZd5dSXn+ukaT/ZY/L+Q4qJVkjuw/DeYYr3qi9nHz3+5frY0NT8RwxMdknmOvI8v5sH69BX1j8A/2OtN+KvgPR/E2peIZJ7PVrdZ1ttPjCbD0ZGkbJyrAqQFGCDya+LryT5T/AJxX1x/wS3+OKt/a3gC+mwyFtS0oM3UE/v4x9DtcAf3nNd2W5hUhN007J/mfp3BPDOX4bE+zxN583fRXW2i76rVvofS/gP4AeD/hq0cmk6DZQ3EZBW5lBnnB9Q7ksPwIrsaKK9aUnJ3Z+4UcPSox5KMVFdkrL8AoooqTYKKGbaMngDkk9q8j+LH7cfw2+EUktvd69Fquow8NY6UBdzA+jFTsQ+zsDQVGMpO0UeuUV8LfEf8A4Kq+JNc8yHwl4dsdHhbKrc6ixurgD1CKVRT7EuPrXiHjn48+PviuZF17xXrV5bzHLW0c5t7c9f8AllHtQ/iKDqhgZvfQ/Sjxv8f/AAR8ON41zxVoWnyR5zDJdoZjj0jBLk+wFeYeJf8AgpV8MdEZls7nWtaYDj7Hp7KrfjLsr4AtdAVTnb8zdTjk1oW+h/7NB0RwMFuz631n/gq7p6yf8SvwPqlwn968v47c/kiyfzrAvv8Agqj4gmY/ZPBulQrnjzb6STH5KtfOUGiLj7oqePRlP8NBssLSXQ98/wCHovjBpQR4X8OhO6mWbd+ef6Vasf8AgqZ4jV/9J8HaPIuf+WV7Ihx+Kmvn4aOvpSyaOsa5YY+tAfVqXY+odG/4KqWby41LwPf26d2tNRSdvyZE/nXY6F/wU0+F+osq6hca1obHqbuwZ1X8Yi9fCeszxwIQuB71xHiK73K3NAvqNN9D9cfAP7SHgH4o7V0Dxh4f1KZ+kEd6i3A+sTEOPoRWR8fv2Pvh7+0tZSL4p8P2818y7Y9TtSba+h4wCJUwWxgYV9y+oI4r8ctV0x7+Xcwxg8HuK7j4XftUfFL4ICOPw5401yCzhGEs7qb7ZaqPQRTblUf7oFbUMRVozVSjJxa6p2ZhiMnhUhyuzXZo9U/ab/4I6+Pvhe91q3w/v28daLGDJ9gkCwapAvJIAzsnwP7u1j0CE9fk6PVrrRNVnsb+3ubG+s5DFcW9xG0U0DjqrowBUj0Ir77+D3/BaHUrB4bb4geEYbqPhXv9Cby5B7mCViD2ziQd8DtXrvjPw5+z3/wU60MRrqGnt4ojh229zCwsddsvQFXAaWME/dYPHknHPNfoGT8eVIWpZhHmX8y0fzWz+Vn6nwua8GSjephtPJ6r5Pp8/wAD8ytI8R5wd1dPpmvbsfNXQ/tYf8E+fH/7IFzPqM0R8TeDVYmPW7GI4tlycC5i5MJ6fNkxkkDdk7R5NoviPcq4bP41+kYetQxdJVsPJSi+q/Xs/J6nxNSFWhP2dZWa7nrOm6xvA+atyw1TOPmrzXSNd34+aul0vWM4rnq0TanVO9sdRyK2LK/4rh9P1POOe1blhqQPevOq0Tsp1DsrO8zWD4U+Jl1+yX +8d9J8faessmlwqbXWrWMZ+16Y7gzKB3eE4mT/cK5w7VNY3/vT/ABLp6+ItAlhwGlUb489yO34jI/GuCpQhUi6VX4ZaP+vI6oVJRaqQ3WqP0/0fV7XxBpNrf2M8d1Z30KXFvNGdyTRuAysD3BBBB96sV8j/APBJX41nXfhjq/w3vpma98AyI+mmR8vNpdwXaEDPJ8l1lh44VUi6ZAr64r8jx2Enha8qE94ux95hq8a1KNWOzPOv2tfjcv7Of7N/jDxkNrXWj2DGyRhlZbuQiK2Q/wC9NJGv41+YvwYuYfDPhFdsz6hcY8pp924zODmWRnPdpCxPJOQe9fSv/BcX4l/YvAvw78Dxs3/FRavNrF2g6PBYRrtVvrPcW7AHg+We4r5s0KyGi6DZ2oXHkRBWA/vY5/XNfM5hiH7XkXRfmfjfiFl6zPNqVOrNqnRjflXWUurf+FLS3zNm/wDEF1esd0nlr/djOD/311/LFZ+9VJwOpyT6/Wo5J8Gonnwa86Um9zycLgMPhVahBR/N+r3ZO8nNRvLUJmzTWk/zipudNxtydyGpPAvj7UPhR8QdJ8SaW22+0a5W4jUsVEoGQ0Zx/C6llPsxqGRsrVC9TJqoSs7o2o1HCSlHdH68/Db4gad8VPAek+ItJk8zT9YtluIicbkz1RsdGU5UjsQRW5Xwf/wS/wD2kf8AhFPFE3w61e4C2GsSNc6O8jcRXOMvAM9BIBuAH8Qbu9feFfT4esqkFI/Ycrx8cXh41Vvs/J/1qFfL/wC1J/wUt0v4G+LdS8K6L4f1DVvEmmkRzveqbWzgZlVlP9+QFWB+UBSCMNX1BXyb/wAFO/2Vm+InhFPH2h2vma54dh2ajFEvzXtkDktgdXi5b3Qv1worY9bDqDnaZ8ofFf8Aax+IXx6ldNc8QXMWnyHJ07Ty1rZgcHBRTlwMceYzEVx2naSoA2qAPTFZuiyq4Xvkda6TTsECg9yMVFWiTWelhQOK07bTlXtSWqDNaMCUDEt7DH8OKuQ2Kg9KdAuBVqFADQIbHZr6VMlmPT9Kmjj+tR3moLaIcfeoJGzJHbrlqwta1cYIWmaxr+d3zVzd5eveMfvbfXNBcYlfWL9p2KryaxZtN81ssNxra+zg/d3fWg2vPSg1Odl0UN/DVW40EH+Guqazz/DmopLFT25+lAXOMuPD/wDs/pVBtFktbhJomeKaJg0ciEqyH1BHIPuK7uXTM/WqdxpPt+lBSkeofAz/AIKR/Eb4RW8el69LH498NsvlTWursZLryiMFVuOWPHaUODz061B8Tv2dfhp+1f52v/BG8h8LeMZczXfgPVXS0W7OMsbE5Kbup8tWKEdosYPk11o/H3az5tIMcisu5WQ7lYcFSOQQe31r1MrzfFZfV9rhpW7ro/Vf010Z5GaZHhMfT5KsbPo1uv6/4c5MtfeGNYudN1SzvNN1KxlMNza3cLQzW8g4KujAMpHoRXSaNrmdvzVvfEHxxd/FXQ44PFKf2tq1jF5djrp/5Ccaj7sU8v8Ay8xdgJcumflcDKtwUumah4bt4554/Ms5G2rcx/NGW/uk/wALezYP1HNfsuS8SYPNIKKfLU6xf/tr6/muqPybOOHcZlsuaS5qfSS/Xs/w7M9D03WMr96ug03VOnzfrXmOj69kD5q6bS9Z3Y5/WvTrYdo8qnWPRtP1POOa3LDUOnP615/pmrdPm/Wui03Usgc15Vaid9OobXwI+JX/AAz1+2d4O14y/Z9H1e6/sLUxnarW18VRCe2I7tYGz2XcOMk1+qFfjh8e9HbxL4JZY5GimkR4ElVirRswyjAjkFXUEHtX6r/sz/Flfjt+z34L8Y/L5niLR7a9mCrtCTNGPNXHbbJuGO2K/P8AjLB2lSxS+0rP1W34H1HD9e8Z0X0d18z87f8Agqt4p/4Tn/goLYaLuLQ+GPD9ja7c8LJcTzTy8evlpAfcY9K4+WbOetVf2pdX/wCEn/4KYfFW83Fkh1eC1UFshfs+lWsJA9PmDH6k06Sbn9a/HsRLmrTfn+R+c5pV9pmFeo/5mvktBzy+5qJpc+tRPLUbTYP/ANesThJWlz3NJ5nu1Red/kmrOkabda/qCWljbyXVzJyI4+uPUnoB7kgVMpJLmlsTcjZ8it7wj8LtU8cMs0cYtbHvcyj5W5/gHVvwwPevQfAPwGtdK8u61jy7+6HIgH/HvEff++frgex616H9nwoXb8oGAB29hXg4rOvs4f7/APL/AIJ0U6TerPPfDvw4sfh/JDc6eJP7Rt2EiXrH98rqQQVP8OCM8frX3Z+zr8Z4fjN4DjuJCqaxYYt9RhHGJMf6xR/cfqPQ5H8Jr5G1Cw3DpT/hl8R774K+PLfWbJTLEP3V3b5wLqEkbl9mGMg9iB2yDWTZxPDV+aq7xlv/AJ/L8j6jJcx+p1dfhe/+fyPvShlDqQRkHgg96zfB/i7T/Hnhqz1bS51uLG+jEkbjg+4I7MDkEHoQRWlX6ZGSkuaOzP0iMlJc0dj8z/29f2Um/Zy+I39taLasvg3xBKWtwi/Jps/Vrc+inlk9sr/Dk+QaPqG4D5q/XH4mfDbR/i94F1Lw5r1qLzS9Ui8uZM4ZSCCrqf4WVgGB7EA1+Vfx9+Bes/sxfFK48O6sWuLdv32nXwTamoW+eHA7MPusvZh3BBNHtYTEc65Zbkmn3O5f1rWtpeP5VyGkamGArobC73Cg7Ddt2q3CRj+tZltchVzn5ag1PxGkUZVeKCTU1DWVtkIU1zOs+Ic5+asnVvEu9toOSfes9ZjO+5jk/XpQVGJckna7bLHj2705I+fao4uRVgcUFAsWf/1U4Q5pwK1IKAIxHx0/GmmEGrG3Io257UCKbWwFQyWma0tmKjaKgdzHmsM1Rn03P8NdC8G6q01rx0xQO5y91pvBqPStSuPDN3I8KQzwTDZcW06B4blf7rqeD7HqK6C4s89qzbux9qak07oppSXLLYdcfBbTvH9hJqHg2YWd5GN1xo9zJwh/6Zuex7Z49x0ri2e88N6m9nqFvPZ3UXDRSqVYe/uPccV01nNc6DqMd5Zyvb3MJyrp29vcH0NeoaD4i0H45aYmleILKD+0kB2c7WY4+9E/UH1X+Yr73JeOMRRSo4395Hv9pf5/PXzPgs64MpTbrYL3X26f8D5aeR5TpGt7sfN+tdNper5A5qPxz+znrHg1nutHaTWNPXLFAALmEe6/x49V59hXLaRrmG2nO5Tgg8YPvX6Jh8VhsbT9rhZKS6916rdHwNbD18LP2deLT/B+j6nbeLbr7d4NvlzyiCQfVSG/pX2n/wAEb/Hkep/sbLpE0qqfC3iLU9OQu3zFHn+2J+S3QAHYKBXwsupC70u4i/56Qun5qRVf9k39sz/hnjwt4i0vzFUanrP9ogMzDGbO0i4wP+mJr5/ijL5V8v5YrWMk/vTR6mTYpUsVd7OLX4of8SJGk/bs+LzuxY/8JTqeCTk4Doo/IDH0ArWklzWJ8VlfTf2/Pi/byY3f8JRqD468OIpV/wDHWFacsn+cV/N8/jl6s+KxP+81v8cvzHSSZqNpR3ot4Jr+6jt4I5J5522Rxxrudz6AV638N/gFHY+Xea6sdxccMloDmOI/7Z6OR6fdHvXDi8dSw6vPfoupik5OyOQ+Hvwiv/HRW4bNjph5+0MuWmHpGvf/AHjx9ele3eEfBlj4O077Lp9uIUODIxO6SY+rN1J5PsO2BWlDbDA9ug9KuQwYFfK4rGVcS/f0Xbp/wTsp0UvUZFBmpfJ4qZIhT1UY/wDrVjGJ1RiUJ7bevr71i6tpu9TXTSw8f54qneWm8GrtYsvfs6/Hu4+BfiZrW+aSbw1qMgNzGOTaOcDzkHXoAGA6jnqBn7OsL+DVbGG6tZo7i3uEEkUsbbkkUjIII6gjvXwFrOk71PFd/wDsy/tKSfB7UF0PXJJJPDNw/wC7kPzHTGJOWA6mMnqOx5HcH6vIc79i1hq793o+3/A/L0PqMjzn2L+r137vR9v+B+R9iV53+01+zhov7TXw1n0PVAtveRZm03UFTdJp8+MBwMjcp6MucMPQgEegWt1He20c0Mkc0Myh45EYMrqRkEEcEEd6kr74+5jJp80T8b/HH +gjWvgv4+1Dwz4htfseqaa+11zlJUP3JEP8AEjDkH8DgggXNL1hQm5jX6Oftn/siaf8AtSeBB5Pk2PizSUZ9KvyMAnqYJcdYmPfkqfmHcN+UXjjW9R+HXijUNB1i1m03VtJna2uraYYeF16j0IPUEZBBBBIINB7eGrKqvM9F1DxiqptVsVz1/wCKTcNtVuT7154fHZvZNqtz9elamlahvI+b8aDuULHV20+9ssctWjav0rBsLjcK1bWUYoE0asT8fhUyyfQ1Tt5c9/yqwr8dTQQWEkx6fnUiuB/hVdX44Jp6vnvQBOr1Ir5qBW4609W4oETh8j3pTzUatUimgQx4sj+lRSQ7qs43D3pGjoAz57fg/wCcVRurTNbLxVBNBkf55oKTOfuLHms+exKOGUlWU7lIOCCOldLNaZqpNZZoKUjsvhl8bOY9P1yTEnCxXh6N2Ak9D/tfn611Pjv4OaJ8RA000f2TUGHy3tvw5/3h0cfXn3FeL3GnZ7V1Pw5+K114JZLO833emZwo/wCWluP9n1H+yfwxXVhcZVw9RVaMnGS6o83HZbTrwcXFNdn+hg+LPhXrnw2kMs0YvNPU8XkAyo/316p+PHua+A/jL4nurbxZGtvdTRxm2T7khUMcsM8fSv2E0TWrXWbCO6tZ47i3kGQ69CPQ+/sa+B/2oP2WtA8Z/FJ72105LXdaxiVLeZ4Yy/LEhV4GQR0xX6DgeOIug6WPg29PejbW3dNr70/kfA4zhWSqqphZWWukr/g/8/vPdP22NObwl/wVO+JUO3y4dSu7G9i5zuWXSLYE/jNHIPwq54Q8E6h461H7PYw/KhHmzvxFAP8AaPr/ALI5P6169/wUw/Z6bXv+Chvh/wAQSTfY9M1bwxavO6DElxLaXcqsi9s7LiPcxyQNvB7dfoXh218P6dHZ2UEdvbxfdRB+ZPck9yeTX83ZxmioYmpQpayvfyV9fmfn+ZYdwzHEQ/vX++zMT4ffDGw8B2v+jr515IuJbqQfvH9h/dXjoPTnJ5rrIYM06G321Yjhr5d805c83dip00thIYQKsxxYoji4qZEzWkYnRGIiR+1SiOlC04JkVqomiiRsnH3c1BLDVsrj1pjqpHNPlHymLfWW4Vzut6P5itxXaTQZX6Vm6hY7weKgg3f2a/2nbn4OXkWh640lx4Ylf5JMFpNMJySVHUxknle3JHcH7Csb6HU7OK4tpori3nUPHLE4dJFPIII4IPqK/PrW9GDKx2/pXSfAD9rq4/Z91dNJ1jzrzwlcSfMFy0mmsTzJGO6EnLJ9SOchvqMl4g9hahiX7vR9v+B+Xpt9Lk+fKjahiX7vR9v+B+Xpt9zV8j/8FR/+Cen/AA1X4Gk8U+EY4rb4jaDbnyVztXXLdQW+yuegk5PlueATtb5Tlfq7Q9ds/E2j2uoaddW99Y3kYmguIHDxzIRkMrDgg1ar75NNXR97RrODU4M/nP0PVLjStQns72GezvLOZ4LiCZCksEqEq6Op5VlYEEHkEEV3vh/WBIF5r7h/4LHf8E6v+Elsbz4yeA9PP9tWMfmeJ9Nto/8AkIwKP+PxFUczRjG8fxoN33k+f86/CHiRZVQhwQeRg9RTPpaFeNWHNE9g0u93gc1u2Vxkda4TQdV3hfmrqtMu8gcigqSOktpdw61cV8ise1n6VoQybqCC4rfSpFb3FV1PpmpFPpmgROrce9PVuP6VCp9M09T9aBE6txUitmq6njvUinigRYU5FOB3CoVNPU5H+NAD2TIqOSLNSKeO9O25oApvb1DJa57VoGPd/wDqppgz2oAypbLPaqlxYZH863WtqgktOOlBVzL0/wAa3/w2tby8s33RrC7ywOf3c2FOM+h9xz/KvYv2GPhbp/7VPgHxN4k8meNbfXjp6o45QpY2bMMjg4Z25/8A1V4X8Ul+yeB9Q/vSosQ99zAfyzX3Z/wRR8F/8Iz+wZpOpNG0c3ivWtV1d1ZcfL9rkt4iPZoreNge4YU7nFj4x9nz9blr/gp34S3xfDnxMuf+Jbqtxo8x7LHeQZB/7/W0A/4FXA6S4vdPt5u8iAn645r6U/bb+H03xK/Zb8YWNnH5mo2dmNUsQB8xuLV1uY1B7bmiCnHOGI718t/DDVofEHhS3uIG3Qyqs0R9Y3AdT+tfmXFWF9nmKqracfxjp+Vj8g4nw3Jj1V6Tj+Mf+AbyQ8VNHFgUoi4qVI68OMTxYoFUE9amUYFNVf8AJpwrSKLQ7GKdhcfw00dKUGqRYvy01h+NOzRjAoAgdc1WuIMiru32qjqlyIYz696mVkrsiWiuc94lZUiYLXk3j62NyGVRk9q9I8RXm/d+lcbrGm+eG3fePWvExVZt2R42IrNuyNv9jL9sG8/Zq8SLoWvST3XgnUphvyS7aPIx5mjH/PM5y6AZ/iXnIb9GNN1G31jT7e8tJobq1uo1mhmicPHKjDKsrDgggggjqDX5M+KPD3mBvl/Svd/+Cef7XEnw28Q2/wAPfE1039g6hJs0e6lYn7BcMQBAT2ic52/3XOOjZX7HhPiN0pLBYl+6/hfZ9vR9O3pt9bwvxA6bWDxD91/C+3k/J9O3pt96su5cEZB4IPevxt/4Kv8A7Cf/AAyR8W4/GHhe0aP4f+MblisMSYj0S+OWa34GFicZeMdsSJgBVz+yVch8evgjoX7Rvwh13wX4kt/P0nXrYwSFceZA4IaOZCejxuFdT2KjrX6cfqWFxDpTv06n4P8AhTXN4X5s/jXe6JqHmKvzV538Rfhlrn7OXxi17wP4jUR6v4cujbSsoIjuEKh45kz/AASRsjj2bHUGuk8NarvC0H0d01dHoVjc7lHNa1vNxXM6XdbgPm7VuWcvNBmaiNUqN/8AqqtC2VqZSf8Aa/xoJLCvmpEbPSq6sf8AaqVTt9fpQImV81Ij1ApI9akUketAiZW5qRTzUKH61IhoAmVqkVqgU4Pc1KlAEyjd/nrTlizTY/xqZPu0CIzDmo2t+KtbKQx5FAjy39pjXx4a8BSS/eaJJLkL/eManaPxZgK/Xj9l74Vf8KN/Zw8C+D9qpJ4b0Kz0+YA5zLHCqyHPfL7jn3r8svCPgFfjv+2J8O/BbR+fa3WtW8t2h+6ba0Bvpwe2GWEIc9d+O9fsRQcGYz+GHzAjcMHkHqK/PnwZ4X/4VF8RvE3gdtyx+G9Tms7ZT1+yvi4tD/34lVc+qmv0Gr5D/b18GN4I+OHhfxnbx7bXxNbHQ71gMBbuDfcWrH3aM3KdP4EGTwK+X4swvtMIq8d6bv8ALZ/15Hw3FOF9phFWW9N3+WzMwDj60oNQ292Lq3jlXlZFDD8afuye1fBq258Qh/mbf71Hm5/vVGXxRvNO6HzE2/jvSh81CD9KA+B0FFw5ifdSjrUHmHPSiS48pdzU7hckvLsQRe9czrmqZ3c1LrOrYDVzl3dm4kPpmvPxVf7KOHEV+iIbmTz3LN3qjd2/y/8A1qvt696gmXP415Ujy5HM6zpwkB+WuB8W6CCrHbXql7b5Vq5bxBpu9G4rPZma0Z9m/wDBPL9qCT43/DiTQdauDL4p8LokU0jnL39tgCOc+rcbX9wD/HX0RX5KfCj4p337PPxi0jxZYhn+wS7LuEHH2q1cgSx/ivI9GVT2r9X/AA9r9n4q0Cx1TT5lubHUoEureZfuyxuoZWH1BBr9i4Uzd4zC+zqP34aPzXR/o/v6n65wvmzxeG9nUfvw09V0f6P/AIJ+f/8AwXg/ZaXW/Auj/GDSbdVvvDLJpeu7F+aezmkCwSn18qZ9vHO2ck8Jx+ePg7V96r/hX9AHxJ+H2l/Fj4f614Y1qE3Gk+ILKWwu4wcFopEKNg9jg8HscV/PvrngnU/gz8Tde8I6xj+1PDWoTabcsowsjRuV3gc/KwAYc9GFfUn6Dl1bmhyPp+R6Zol7vVee1dLp8+5a4Hw1fb0Wuv0y43AUHfI6S2kJ9aso+azLaXIq6smf6UGZbRuOKkV6qq+akR8mgRaVqkRuaqo/FSq+BQIsq1SK3NVlbFSq+OKALCHJqRDVdHqQS46YoAtK2BUivj/9VU1kx6ZqRH57UCLyPz/9ai4uUtLWSaQ4jiQux9gM1XjeuZ+MniyHwx4L +naWTy1kDNIfSJBuc/oB+NAWuz3j/AII7fDeTx1+0F46+IV1Dut/Ddkmh2bsMg3V0y3Nzg+qRJbD6TfWv0Yrwf/gmx8Dp/gR+x/4WstQh8nXteR/EGrrjDLc3Z83yzyeYozHFxgHys4Ga94oPDxNTnqOQV5z+1h8IJPjf8Bde0Sz2rrEcQv8ASJD/AMs76BhLB+BdQp/2WavRqKzq041IOnPZqz+ZyVKcakHCWzVj8/8A4R+MY/F/hG2uI90fmRrKI2+9Fn7yEeqtuU+4rqCy1k/HTwX/AMM//tSatZRR+Xofi7f4i04gfKjyOFvYB7rMVmwO1x7HGlv3c8c+nevyCrRnh6ssNPeLt8uj+4/JqtGWHqyw894u3y6P7iTdRv8Aeo6M1FyLkm6gOtR0A80cwcxMG/2qzNX1PYCAal1G/wDIjx3rlNa1XcSK58RW5VYwr1uVWGalqHnvtz9arow/Cq6szH+dSCQivJcru55bld3ZOSKifmhZCfShm4oEV7lcj6VjarbbkNbcjEn+dZ+oR7gf88VlJGMjzfxhpnmK3FfZ/wDwSq+MzeKvhVqPgu8k3XnhObfaZPL2cxLKB/uSbx7BkFfJniez3o1bH7FHxLb4RftXeHLiSQx2OuSHRrwZwGWfAjz9JhEfoD6173DOPeFx0JdJe6/R/wCTs/ke9w5jnhsbCT2fuv0f+Ts/kfqNX4//APBb/wCDy/Db9srT/FVvH5dr4+0pJ5W7Nd2u2CTH/bL7NnHfJ6mv2Ar4S/4L6/DNPEX7MvhfxUke668J6+kbOFyVt7qNo3HsDIkB/wCAiv2s/b8DU5ay89D85PCl/lF+ld1pVxlB/jXl3g68zGvNeh6LcZQUHvnWWkvFaEUny/0rHspsitGCTNBmy6kn+fSpEkqqjnPvUyPQItK1SI9VUepkagRYR+KkEuBVYSYpfO+lAFoS5p6zVUWYmnJLzQBcSXFSpJVNJOf61KkmaBF6OTJ/zxWP8HPhh/w1n+2N4T8EtH9p0S2uf7T1kDJT+z7N1klVsfwzTGGD6Sn0yI/GPiQeGvDlxc7sSMPLh93Ocflyfwr6w/4Ip/ANtA+E+t/FHUom+3+Ppxb6Uz9U0q3ZljYdx50xmk908o0GOIqezpt9dj7cooooPCCiiigDxP8Aby+DFx8Vfgk+paTbm48SeC5jrmmxov7y8CIwntRxk+dCzqB0MgiJ+6CPmn4b+L7fxZ4Wtbi3mE0bQpJE/wDfiZQUP5cfhX6BV+f/AMavhy37Mf7SGoaTDC0fhnxQZdb0YqMRQq7j7XZrwAPKlYSKo4EcygfdOPhuLsBblx0FtpL06P5M+J4swNuXHQ6aS9Oj+Ru+b9KPN+lQrIrqGVgysMgjuKXdXxx8jcl836Uklz5Sbs1HurN1bUAi4qZSsrilKyuU9c1bk/N+tc3JdGeXdn6VJqt758pXmqqvtPQ149ao5M8etV5pFhZcdxUiy+4qqsvHepEfFZxITLSyYHUUpkqBZc+tSK9WigkIx/hVO6G5f0q075qvc/db86UiZHO65BvjavN/F0MlrJ5sLtHNCweN1OGRhyCD6g16hq6ZVq4HxhbZVvpSp7hTep+sPwg8eR/FD4V+HfEUZXbrWnQXhC9FZ0BYfg2R+FeQf8FUvBn/AAnP/BPv4oWqqC1lpQ1RT3H2SWO5OPwiI/HFV/8Agl14x/4SX9lKysWYNJ4e1C6sD82W2mTzlz9BLgeyivUP2oNFXxJ+zV8QtPkG5bzw3qMJH+9bSCv3vL8R7fC0638yT+dtfxP3jK8T7ahSr90n8+v4n4EeC7j5V/CvSdAnyi15N4BuN1pC3+yD+leneH5vkWuw+xOxsJPkHWta2kyKwtPlyvf1rWtpMYoIZfV8/wCetSo9VEkqZJKCS0j0/fxVUTYHQ0ed7GgC1upd+KqibJpyyYoAtLJuqVZMiqSy7qmSXmgC4klTRycVTSTis3xr4qXwn4dmusqJmHlwg9N5zg/QdT9KA3M9fAuo/tSfH7wz8MdFlkibXLz7LeXEXJsbVfmvbn6xwgqucZkZBkbsj9ovCXhbT/AvhXTNE0m2js9L0e0isbO3jGEghiQIiAdgFUAfSviL/gib+zJJoHgTVvjFrltt1bxwhstAMgPmQ6Mrh/N5HBupl83uGjjtz7D7toPHx1bnnyrZBRRRQcYUUUUAFeS/tm/s+yftB/Bue101Yk8UaFKNV0GZztAuo1I8pj2jmQtE3YB93VRXrVFY16MK1OVKorqSszKtRhWpulUV01Zn5y/CTxwvivw7ECssE0YIMMoxLAyna8Tjs8bgqR2xXWeYf7xqx+3H8HW+Afxrg8caTEIvDXji6Cago+5Y6sRw/sl0gwf+mqZJzLWTp+pR6lZRzx8pIM/T1H4V+P4rCTwdeWFqbx2fddH/AJn5FisLPCV5YWp9nZ910Zaurjy4j81c5rd6ctWnqE/ymufv28yT1rzsRPSx5+InpYoueaiLMO9SyAY9qhNeczz5Dkc1IsmO9VwwFOVqklFpHyKkWT3qqHFSIwHNaJmkSYnK9fpUMjbvWnFxUcjYX8etDBmbqK5WuJ8WQ7lP0rt9QGBXH+KVzG30qY7kx3Ppn/gj54mYH4gaGzAJHJZ6hCuepcSxyH/yHF+dfXvxLtWvvhx4ghRQzzabcooPQkxMBXwX/wAEpda/s39pfWrHPGo6FIcepjmiP/sx/OvvX4lXL2Xw58QTR8SQ6bcOpI6ERMRX7JwnV58tguza/G/6n7DwpVc8vguza/G/6n86HgVsQxewANen+HZPkX+leW+Bm/cxH2r0zw8/yCvpD9JOy05/lrVtW6fWsTT349a1rZ84oJZoRtmpA9VPMo8360ElvfRvqqJM+tAkA7mjUC2Jef8A61PV6qCXNSLJQBbR/wA6mjeqaSVNG9AFyNqwPhH8H7v9ub9qXQ/h5YyTJoK5vNduYiVNtpcTqLhg38MkzFYEPYvuwQprE+NPxFh8EeFZV8xlmnjJOwbmSPocAclmPygDkk8c1+l3/BKT9jSb9lX9n/8AtPxBarD4+8dGPU9aVh8+nxhf9GsM+kKMd3rLJKemMBhiKvsqd+r2PpjQdCs/C+h2emabawWOn6dAlra20CBIreJFCoiqOAqqAAB0Aq1RRQeEFFFFABRRRQAUUUUAc98V/hhpHxo+HOseFtetzcaTrVubedVO106FXQ/wujBWVuzKD2r88tBttY+D/wAQtZ8C+KG3avocyxPcY2pfROCbe8TttmQcgfddXU8qa/S6vnr9v/8AZfufjN4KtvFPhmzE/jjwjG7WsK4VtYtGwZrJj6nAeMn7sigcB2r5nibJ3jKHtaK/eQ1Xmuq/y8z5viTKXi6HtaK/eQ1Xmuq/y8z571DJU1kXKHNU/ht47tfH3hq3uIZvO3Rh0cgq0icjkHkMp+VgeQRWpdRc1+VyamuZH5dJ865kZcyYP1qs6+lXZ46qSpiuSUTmkmQZIoDn1pSPxphYA1kYk0bZqRXPrVVXWpEIBqkUmWAxIpkrZJ/WkVwRTWfbTCRT1A5BrlfE6/Ia6i8bKVy/iNf3R+lJbkrc7H/gnfqv9l/tp+GIs4/tCC+tvr/oskv/ALSr9Bf2ltUXRP2c/H143C2vhzUJTxnpbSGvzj/Ytvf7M/bK8Bzbgub6aLJH9+1mj/8AZsV9x/8ABSfxP/wiP7BPxYu87Wk8OXVmh9HnXyF/8ekFfq/BMr4GS7Sf5RP1fgeXNhHH+/8ApE/CLwOmy1tx/dRR+lek+H+EWvPPCS4C/hivQtB+6tfYn6qdZpzfL7VqQS4x9axrA4TitGGTIoJL32mj7TVXfTg+KNBFkT5pRJg9ariXdTkkoAtLLmpEk4/zxVVHqVHoEW435/zzTdV1qDQdLmvLltsNuu5iOp7AD3JwKZG244Hfp71yGheCPEX7Ynx40P4ZeCm23OpSs01/5fmQ6Zbpj7RfSDgbYlO1FJG+R0UfeoDRK72R7p/wSg/ZUuP2uP2ip/iZ4ktfM8F/D2+RrSN+Y9U1dBujjHrHaApIezStGOdriv1urk/gX8FPD/7Ofwj0HwR4Vs/sOg+HbYW1rGzbnfks8jt/FI7szs3 +8TOx711lB4OIrOpPm+4KKKKDEKKKKACiiigAooooAKKKKAPg/9vH9n2X9nn4jSfEjw/C0fhHxJdqdciQfu9Ev3IRbkAdILhiFk7LKQ3/LVscpp+pxa5YLcR8dnU9UbuDX6G+KPDGn+NfDl9o+rWdvqOl6nA9td2s6B47iJwVZGB6ggkV+bfxT+FGqfsZ/GD/hF76S8v8AwzqgaXw7qU53NeW68tbSN0NzAO//AC0j2t13AfmfFWS/Vqjx1Fe5L4l2f83o+vmfm3FOT/V6jx1Fe5L4l2ff0fU0blMdqpTpWkzR3cCyxMskcg3Kw6EVSuI+K+NnE+OnEouMGon47VYlj5+tQOuDXNKJzuI3dSiTFNI4ozzSJJlbHOKbI+SM/lTegprvtFAFe8bg1zXiDmM10N22BXO66fk/D/GhbkrcufsuTNaftXeAHXbu/tqFOR2bKn9Ca+qP+C33i5fDf/BPrxBZnG7xBqenaeufa5Sfj8IDXyr+zIP+MpvAP/Ydtv8A0KvTP+Dh7x6bH4W/DPwsjYbV9ZudUcDutrAIwD9Wugen8PtX6jwP/utT/F+iP1jw/wDepyX979Efmn4Xj4X/ADmu+0Q7VriPDMeAvFdrpLYT8K+3P1U6K0lwB+daEcm3vWRbSfJV2GXbQIuiUnv+lKJPeqokyO35U9H5/wAaALQlz/8Aqp6yc1VVqmRv/wBVAi0kmKmjbmqiN/8ArrH+IPj238BaE1xI0ZuHB8iNjgZHVm/2R1J/CgNWZnxl+JDeHrBdK0+O5u9Uv2SFYbWMy3EjSEKkMaDlpJGIVVHPPuK/U/8A4JYfsCj9i74OS6h4hhtpviV4xWO41+eJhIlii7jDYRN02QqxDMOJJC7dCoHzh/wRf/4J/XXiPVbT4/fEKxm8ybdN4K0+7Qq6o4KtqkqEfekUkQA/djJkAy6Ff00oPLx2Iv8Au4bdfMKKKKDzgooooAKKKKACiiigAooooAKKC20VBPerGKAJmYLXB/tFfA/QP2kPhffeF9dEkccxE9new4+06Xcpny7mFj910P4EFlOVYg9Leavs/irHvdf2/wAVRUpxqRcJq6ejRFSnGpFwmrp6NH5y2q658E/iDqHgbxnHHb6tppD+bECLe+gYkR3tvnrDJggj+BwynleeouI+PUdQRX0R+1z8BtP/AGkfBkKJNHpfirRC0+iarsz9nkI+aGXHLW8uAHT2Vh8yivkLwD42vNN1S88N+IrWTSta0eb7Ld2srZNrLxjDfxwuPmjkHDKfqB+P59ksstraa0pfC+z/AJX+jPyLPMmll1XTWlL4X2/uv9DqZovaq0kfHrWhNFzVSaPB714UonhyiVcYpp47VJImKjK4/irBmLiJnjoaZKacQcfe/WoZevNJkSK922F/Guf1o74627puPzrC1fmJqgi5pfsxrn9qPwD7a5b/APoVc9/wXw+IK+KP2v8Aw34djl3x+F/DyPIobIjmuZncjHY+XHEfoVrsf2RrM3X7V/gRQqvjVN+D/sxu2fwxn8K+Vv8AgoR8RB8W/wBvL4oa0rrJCutNpsLKfl2WiJajH18kn6k1+p8C/wC61H/e/RH694bRbo1Zf3v0RwGgLsVfpXWaccAfWuW0ZcAV02nnaBX3B+pG3bPgZq7HJgVmWzVcR+PvUElpX/4FUiP/AJ9Kqq+amRv/AK9AFlG4qaNuaqo1M1TWbfQNNmvLuVYbeEZZj39AB3J9KBEniLxNa+E9HkvbtsRx8Ko+9K3ZVHqf/r13H/BNL9hW8/4KA/FqTxx42tmX4U+GrvY0DqRH4mu42BFnHkYa0jP+ub+Nv3Y/5aFfNv2Vf2ate/4KMfGx7RpbzRfh34dlUa7qkLbWjU4b7Fbt0N3KpG5sEQodx52K37P/AA10PRfhf4I0nw34c0600XQdCtY7KwsbVNkVrCgwqqP5k8kkk5JJoOLGYn2a9nDfr5HpNpHDbW8cUKxxRRKEREAVUUcAADgAelS1z9jrW7+KtS11ESAc0HjlyimpIHFOoAKKKKACiiigAooooAKa77BTicCqN5cYFABd3u3vWPqGqbc80aheYzXP6pf43c0AP1LWdufmrntS13BPzVBq+pbQ3Ncxq+rYJ5oAt6p4i2n71eEftS/BqL4v2sOtaVJBY+MtJhMdndScRXsOdxtJ8dYmYkhusbHcOCwPoWs6yQDzXI63rxAPzVz4rC0sTSdCsrxlujnxWFpYmk6NZXi90eE/DL4nf2mJtL1WKaw1Kwl+y3NvccS2ko6xP2I7q4+Vhgg4NdpPH7VzPx0+Hq+N7mPWNLmj0/xLYx+XHOwzFfRDn7POB1Qk8N95CcjjIOF8LfjCuriTTdUjksb6wYQ3EE5Hm2b9lcjhlPVXHBH44/Hc6yatllTln71N/DL9H5+fU/IM5yerltXlnrTfwy/R+fn1O5lXvioXXnpVuZMH/PNV2TFePKJ47RA44qvM2M1ZlUg81UnPy/WspGUinethaxdR5DD8q17tsg/zrH1DlKxbOeTszb/Z08Y2vw0+N+m+Jr1VktfDdlqerSKW2hhb6bdTAZ9ygr8+9KubjU52uryVp7u6dpp5X5aWRjuZj7liTX01+0f4quPC3wn1f7JJ5c2pxjT3bHIilYLKB/vR7lPsxr5r0ZMYr9Y4Ei1l8pPrN/lE/bvDOH/CbUn3qNfdGJ0mkrjbXQ2DYrB0xMY+lbljyBX2p+jGtbtiravz+lUbYZq1GcmglllX3H3qVHqsjHFRa3r9r4Z0uS8vZvJt4+pxyx7ADuT6CgkualrFvoWmzXd3KsNvCu52P9PUn0rj/hN8MvFH7dnxeXQdHaXSfC+kyI+saoRlNLhJ6LniS7kXOxOQo+ZvlHOJ4C8HeJf20fiI2laXJJo/hrS5cajqewPHpwx9xAcCW6YHheiA5PHDfor8CvAeg/A7wBYeGfDNkun6VYgkLktJcSH780rHl5HIyzHr7AAAObFYpUlyx+L8v+CeyfAnwH4d+Avw00nwj4UsI9L0PR4vLhiDbnlY8vLI55eV2yzOeSSfYD0rTNf3Y+avI9G1vIHzV1mkavkLzQeI23qz1LS9byF5/Wt7TtV3Y5rzbR9Uzt5rp9K1DO2gDvLLUNw61pQz+Ytclpt7lfwrcsbrIoA1aKZDJvWn0AFFFFABRRRQBHOflrLv3ODWpOMrWXfp1oAwdSc8/wCNc5q02N3410epITn/AArm9WhPzfj/AFoA5fWZzhv8+tcnrNzgn611msw8N/n1rk9at/mP1/xoA5HW7o8/59K4zXLxvmrstbtjg/59K4zXLRvmoA4vXr1hury74meGl8Q3MN9bTf2frFmpW2vFXd8p5Mci9HjPcHp1BBr1HXrNsNXE+ILBvm+X1/rWOIw9KvTdGtFSi90zHEYelXpujWjzRe6ZmfCj44sl0dF1mH7Je265aDdvwv8Az0ibH7yP26rnBA7+qxTx3VussMiyRyDKspyGr578ceFI9ZiAlEiSQN5kM0bbJYH/ALyMOQf59DkUeBfjjqPw7vFs9deM28jBVvdu23nPQCQf8sn/ANofKfbpX5PnnDNfL26tC86P3yj6915n5RnnDVfL26tC86P3yj6915nv1yMCqV116VFo3iyz8T26tbyYkxuaJj8y+/uPcU65b5TXy3MpK8dj5fmUo3iUbt8ism/bOa0Lx8CsfUJcL7VzzOWozxX9ri/z4PhhyP8Aj7jH6Mx/kteJ6MMe1eoftUaj9p0jTBn/AI+L15MeoVMD9CK8x0ccLX7dwvh/Y5dCHz+fU/f/AA8pcmTRfeUn+n6HRab0FbVkcisXThgCtq0NfQn3BpW3HpVoHIBqrbf0rg/iZ+0Bp3gy3e3sZI7y8J8veBujjc8BQBzI+eir3/Kgm1zsvGPjuw8Caf515JukkH7qBP8AWTH29B6k8fyrgvhx8PvEP7XfiRb64uJdJ8H27lXvogMzAHDQ2gPU5GGmOQO24jAsfCv9mfVvixqq6549FzDYzEOmku22e7HY3BX/AFadMRLyf4iOVr6t8LaOljawwwwxwwwqEjjjUKkajGAAOAB6Cg4MRjlH3aW/f/I6j4W+F9L+HPhWx0TQrGHTNKsV2Q +W8Wdq55JJOWZieSzEsTkkk16ToN4eK4nQrJsLxXa6FaEUHkb7naaHdHiuw0a4Py1x+h2zDFdhotuePrQB1mjTnC11ekTZC1ymiwHC11WkQ8L+X8qAOm0yU7V/zmug05yf/AK9c/pcZCj6V0GnIRQBs2jVZqtaL0qzQAUUUUAFFFFAAw3CqN3bZFXqbJH5goA5nULTOfpWBqtjndxXb3dhntWPqGlZB+WgDzvV9Nzu4rl9X0okn5e9enano24H5a57U9ByT8v6UAeT6xoxO75a5HWtCJz8tex6r4c3Z+WuZ1XwvnPy/pQB4nrfh9mB+WuR1zwyW3fL617pqvhLdn5f0rmtX8GZz8v6UAfP2ueE2bd8tcfr/AIHFxG6vEGVgQVZchh9K+i9W8Dbt3yfpXOap4A3bvk/SgD5pg0DXPh7OsmhyGa1jO77BNIV8v/rjJ1jP+ycr9K7TwZ+0lb6lOLHVI5re+jHzQzII7pPfZnEi/wC0hI+tehaj8Ot2f3f6Vy3iv4I2Pie08m/sYbqNTlC6/NEf7yN1VvcEGvic44Kw+JbrYN+zm/8AwF+q6eq+4+JzjgvD4luthH7Ob/8AAX6rp6r7jbt/EFnrkPmWdxFOvcK3zL9R1H41i+J73yNPlYHBYbRj1PH9f0rg9Y/Z68SaC/meHtc84LytvqzOzJ7LcRjeP+BK59zXI+LvEvxQ8KtDHdeE9av4oyWeS1txqkbHoMeSfN7nqgr4R8OZlQxMYYii3G/xR1Vlr6r5n51jOH80ws7VqLkv5oe8v8180YH7T1zu1HQbcfwJPIR9TGB/6Ca4nRx92vPv2nf2p9asviFZwy+FbwLDZKC0tpdW+GLsSMMnXGKxvC/xi+IPjUrH4f8Ah9rl8zY5ttDvrvaPXcqhQPc8V+w5XFrCwT8/zZ++8G0vZ5NQUtNG9dN5N6/ee96cmQKo+Jvi3ofgyNlnu1uLlefItyHdev3jnC/ia5fwv+yr8ePi+F/tG1i8KafJ/rP7UuxCce0FvvZvo5Ue4r2z4U/8Ez/DnhdorrxJcXfi++UhjFcoIdOU+1uud/P/AD1ZwfQc16B71TF0YdbvyPC9N8QeNv2krl7Pwvp7Q6OzbJbxi0dkg775sZlbH8EYPvjrXt/wS/ZG0v4bXMWo3TNrfiDHN9cRgLb56rBHyIx78se7HpX0Povwui0+2hgt7eOCCFQkcccYRI1HQKoAAA9BXRab8PsEfu/0oPLr4ydTRaLscHofhBht+Wuw0LwuVC/L+lddpXgTGPk/Sum0nwVjHyfpQcZzejeHGG35a7DRNCIx8tbOl+ENoX5f0rptJ8K7cfL+lAGdo2i42/LXV6RpBAXirmleG8Y+X9K6XTPD+APl/SgCvo+mEbflrptK0/G3in6Zom3b8tb+naTjHy/pQAadZcf/AFq3LG2xTbLTtq9P0rTgt/LFADoU2rT6KKACiiigAooooAKKKKABl3Cq9xZK4qxRQBi3mj7z92si90Hcfu12DIG61FLZLJQB53f+G938NYeoeFd38NeqXGjK3as258PA/wANAHj+oeD938NYmoeCdxPyfpXtN14XB/h/Ss288JbifloA8N1DwJuz8n6ViX3w/wB3/LP9K95vPBoYH5RWfdeCQc/L+lAHgN58O8/8s/0rLufhtn/ln+lfQVz4FX+5+lU5vAQ/ufpQB88z/DPP/LP9KryfDH/pn+lfQkvgAf8APP8ASoH+Hw/55/pQB4EPh5LH93zF/E0H4cPKfmDt9ea97Pw9Un7n6ClHw+Gf9X+lAHhEPwyx/wAs/wBKu23w1x/yz/Svb4/h+M/6v9KsQ+AgP4P0oA8atPhzj/ln+latn8PcY+T9K9dt/Ag/ufpV638EY/hoA8tsPAeD9z9K3NP8E7QPk/SvRrXwYBj5f0rStPCOCPl/SgDgrDwbgD5f0rdsPCm3+GuztfC20fdrTtPDgH8NAHK6f4Yxj5a2rHw/tH3a6K10MKPu1eh01YxQBkWWibcfLWna6aEHSriQqnanUANSIIKdRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUhQN2paKAI3tEftUMmlI9WqKAM2XQVbtVWbw2rH7tblFAHNy+FlP8NQSeE1P8NdXTWHy0Acg/hBT/DUZ8HqP4a7HFNI6/SgDjj4NUn7o/KlHg9f7tddinKPlNAHJp4PUfw1JH4SUfw11WKVBzQBzkXhVR/DViLwyo/hrexiigDJi8PKv8NWYtHRO1XaKAIUsUSpFiVe1OooAKKKKACiiigAooooAKKKKACiiigD/2Q==]] + + +local ModalScript = [[ + ]] + +local help = [[ +

This script is useful when you migrate REAPER

+

When you reinstall a plugin, tick the checkbox related the resintaled plugin

+
+
Open REAPER Folder
+
It opens the main directory of REAPER
+
 
+
EXPORT
+
+ The export button allows you to save all the checked boxes, so that they are not lost, when the PC is turned off or when the browser is closed +
    +
  • Check the boxes of the plugins you have reinstalled
  • +
  • Click on EXPORT
  • +
  • Save the generated file:"REAPER.VSTinstalled.json", in a folder of your choice
  • +
  • Now you can close the browser or turn off your PC.
  • +
  • When you reload the page the JSON file is automatically reload and parsed.
  • +
+
+
HIDE CHECKED (SHOW CHECKED)
+
+ The HIDE CHECKED button allows you to hide the rows with the ticked checkboxes +
    +
  • Click on HIDE CHECKED
  • +
  • All checked boxes rows, are hidden
  • +
  • the button SHOW CHECKED appears
  • +
  • by clicking the button SHOW CHECKED, all the previous hidden rows, are displayed
  • +
+
+
RESET
+
quite self-exmplanatory: it resets the form
+
+
Made by Tormy Van Cool
+]] + +local HeaderHTML = [[ + + + + REAPER VST/VSTI INSTALLED EXTRACTOR + + + + + + + + + + + + + + + + + + + + + + + +
REAPER INSTALLED PLUGINS EXTRACTOR]]..date..[[ - v.]]..version..[[ by Tormy Van Cool
 Instr.VST/VSTi/AU/CLAP NAME (Manufacturer)FILE (VSTs & CLAPs)
INST-NotINST (AUs)
+ + +
+
+
+ + + + + + + +
+ + + +]] +local FooterHTML = [[ + +
+
+
+ IMPORTANT
These HTML & CSV files, are into the Reaper's main folder
+
+ +
+ ]]..ModalScript..[[ + +]] +local HeaderCSV = "REAPER,VST/VSTi INSTALLED EXTRACTOR\nVersion:,"..version.."\nby:,Tormy Van Cool\nDate:,"..date.."\n\n" +HeaderCSV = HeaderCSV.."CHECK,N.,INSTR.,VST/VSTi/AU/CLAP NAME (Manufacturer),FILE (VSTs) - INST-NotINST (AUs) - CLAP (for Clap Plugins)\n" + + +--------------------------------------------- +-- VIARIABLES SETUP +--------------------------------------------- +if getOS().os == "w" then path_CLAP = reaper.GetResourcePath()..'/reaper-clap-win64.ini' end +if getOS().os ~= "w" then + if getOS().os == "OSX32" or OS == "OSX64" then + path_CLAP = reaper.GetResourcePath()..'/reaper-clap-macos-x86_64.ini' + end + + if getOS().os == "macOS-arm64" then + path_CLAP = reaper.GetResourcePath()..'/reaper-clap-macos-aarch64.ini' + end +end + +--------------------------------------------- +-- FILES +--------------------------------------------- +local handle = io.open(path, "r") +local handle32 = io.open(path32, "r") +local handle_CLAP = io.open(path_CLAP, "r") +local HTML = io.open(VST_RegisterHTML, 'w') +local CSV = io.open(VST_RegisterCSV, 'w') + +if handle == nil and handle32 == nil then + reaper.MB("WTF!!! Not existing VST cache (nor 32bit nor64 bit). Install at least 1 plugin!!!", "ERROR" ,0) + return +end + + +function main() + HTML:write(HeaderHTML) + CSV:write(HeaderCSV) + local lineHTML = '' + local lineCSV = '' + local n = 1 + + --------------------------------------------- + -- ALL PLATFORMS + --------------------------------------------- + function all() + local lineHTML = '' + local lineCSV = '' + local CLAP_File = '' + + -- VST and VSTi 64bit + if handle ~= nil then + for _ in handle:lines() do + --s = handle:read("*l") + s = _ + + if _ == nil then + handle:close() + else + + if s ~= nil then + match = string.gsub(s, "%,", "|",2) + VST_dll,VST_Integer1,VST_Integer2,VST_Name = match:match("^(.+)=(.+)|(.+)|(.+)$") + end + + if VST_Name ~= nil and VST_dll ~= nil then + VST_Name = string.gsub(VST_Name, "%,", " / ") + local instr = "" + if string.find(VST_Name, "VSTi") then + instr= "Instr." + else + instr= "" + end + lineHTML = lineHTML..''..instr..''..n..' - '..VST_Name..''..VST_dll..'\n' + lineCSV = lineCSV..','..n..','..instr..','..VST_Name..','..VST_dll..'\n' + n=n+1 + end + end -- if 2 + end -- for + handle:close() + end -- if 1 + + -- VST and VSTi 32bit + if handle32 ~= nil then + for _ in handle32:lines() do + --s = handle:read("*l") + s = _ + + if _ == nil then + handle32:close() + else + + if s ~= nil then + match = string.gsub(s, "%,", "|",2) + VST_dll,VST_Integer1,VST_Integer2,VST_Name = match:match("^(.+)=(.+)|(.+)|(.+)$") + end + + if VST_Name ~= nil and VST_dll ~= nil then + VST_Name = string.gsub(VST_Name, "%,", " / ") + local instr = "" + if string.find(VST_Name, "VSTi") then + instr= "Instr." + else + instr= "" + end + lineHTML = lineHTML..''..instr..''..n..' - '..VST_Name..' (32bit)'..VST_dll..'\n' + lineCSV = lineCSV..','..n..','..instr..','..VST_Name..' (32bit),'..VST_dll..'\n' + n=n+1 + end + end -- if 2 + end -- for + handle32:close() + end -- if 1 + + + if handle_CLAP ~= nil then + -- CLAP and CLAPi + for _ in handle_CLAP:lines() do + + if not string.match(_, "_=") then + + BLOCK,CLAP_Name = string.match(_, "(.+)|(.+)$") + --reaper.ShowConsoleMsg(_ .. '\n') + if string.match(_, "%[") then + CLAP_FileName = _:gsub('[%[%]]', '') + CLAP_File = CLAP_File..CLAP_FileName..'
' + --reaper.ShowConsoleMsg(CLAP_File .. '\n') + end + + if CLAP_Name ~= nil then + --CLAP_File = CLAP_File..CLAP_Name + if string.match(BLOCK, "=(.+)") == "1" then + instr= "Instr." + else + instr= "" + end + --reaper.ShowConsoleMsg(instr ..' - ' .. CLAP_Name .. CLAP_File..'\n') + + lineHTML = lineHTML..''..instr..''..n..' - '..CLAP_Name..''..CLAP_File..'\n' + lineCSV = lineCSV..','..n..','..instr..','..CLAP_Name..','..CLAP_File..'\n' + n=n+1 + --reaper.ShowConsoleMsg(CLAP_File .. '\n') + CLAP_File = '' + end -- if 2 + end + end -- for + handle_CLAP:close() + end -- if 1 + HTML:write(lineHTML) + CSV:write(lineCSV) + end -- function + + --------------------------------------------- + -- MAC + --------------------------------------------- + function mac(handle_MAC) + local lineHTML = '' + local lineCSV = '' + if handle_CLAP ~= nil then + for _ in handle_MAC:lines() do + --s = handle_MAC:read("*l") + s = _ + + if _ == nil then + handle_MAC:close() + else + + if s ~= nil then + AU_Manufacturer,AU_Name,AU_Inst = s:match("^(.+): (.+)=(.+)$") + end + + if AU_Manufacturer ~= nil and AU_Name ~= nil then + if AU_Inst == '' then + class = 'installed' + AU_InstCSV = 'INSTALLED' + else + class = 'notinstalled' + AU_InstCSV= 'NOT INSTALLED' + end + lineHTML = lineHTML..''..n..' - MAC AU - '..AU_Name..' ('..AU_Manufacturer..')'..AU_InstCSV..'\n' + lineCSV = lineCSV..','..n..',MAC AU - '..AU_Name..' ('..AU_Manufacturer..'),'..AU_InstCSV..'\n' + n=n+1 + end -- if 3 + end -- if 2 + end -- for + handle_MAC:close() + end -- if 1 + HTML:write(lineHTML) + CSV:write(lineCSV) + end -- function + + function InterHEADAER() + local IntermediateHTML = 'MAC "AU PLUGINS"' + local IntermediateCSV = '\nMAC "AU PLUGINS"\nCHECk,N.,NAME (Manufacturer),INSTALLED / NOT INSTALLED\n' + HTML:write(IntermediateHTML) + CSV:write(IntermediateCSV) + end + + all() + + if getOS().os == "m" then + local handle_MAC = io.open(path_MAC, "r") + if handle_MAC ~= nil then + InterHEADAER() + mac(handle_MAC) + else + reaper.MB("Not existing cache. Install at least 1 plugin!!!", "ERROR" ,0) + return + end + end + HTML:write(FooterHTML) + HTML:close() + CSV:close() + + --------------------------------------------- + -- USER INFO + --------------------------------------------- + VST_RegisterHTML = string.gsub(VST_RegisterHTML, '/', getOS().slash) + VST_RegisterCSV = string.gsub(VST_RegisterCSV, '/', getOS().slash) + local sucessfulStrig = "The HTML and CSV files are saved into the main folder of Reaper\n\n"..VST_RegisterHTML..'\n'..VST_RegisterCSV + reaper.MB(sucessfulStrig, "HTML & CSV: Succesfuly Saved",0) +end +main() From aef8a0cd1435051d43e1617d6bf7a1b344578d5c Mon Sep 17 00:00:00 2001 From: Tormy Van Cool <32305535+tormyvancool@users.noreply.github.com> Date: Thu, 31 Oct 2024 18:38:28 +0100 Subject: [PATCH 08/10] VST Extractor It extract a list of all installed VSTs etc, and put the list into an HTML and CSV file into the REAPER's main dir. --- Various/tormyvanvool_VSTs-VSTis Extractor.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Various/tormyvanvool_VSTs-VSTis Extractor.lua b/Various/tormyvanvool_VSTs-VSTis Extractor.lua index c081d28f7..d6c4cbe4e 100644 --- a/Various/tormyvanvool_VSTs-VSTis Extractor.lua +++ b/Various/tormyvanvool_VSTs-VSTis Extractor.lua @@ -2,8 +2,7 @@ -- @author Tormy Van Cool -- @version 3.1 FERRETS -- @screenshot ENGLISH https://www.youtube.com/watch?v=J5Ko4uIya9w ITALIAN https://www.youtube.com/watch?v=OqNFQt3hOC8 --- @changelog --- v1.0 (30 May 2021) +-- @changelog v1.0 (30 May 2021) -- + Initial release -- v1.1 (31 May 2021) -- + Save status of HTML File From b3fa9dbff3a109ed4ee240674928e5625da279c0 Mon Sep 17 00:00:00 2001 From: Tormy Van Cool <32305535+tormyvancool@users.noreply.github.com> Date: Fri, 1 Nov 2024 15:42:14 +0100 Subject: [PATCH 09/10] Release YOUTUBE Downloader v2.4 2.4 2024-29-10 # Adjusted header style for production 1.0 2024-26-10 # First Release 1.1 2024-26-10 + Processes Notifications - /Video/ + /Videos/ 1.2 2024-26-10 - --merge-output-format mp4 + -S vcodec:h264,res,acodec:aac 1.3 2024-26-10 - 10 + 2 1.4 2024-26-10 - 2 + 5 1.5 2024-26-10 - 5 + 1 # Unified Update 1.6 2024-26-10 - 1 + 2 + Version 1.7 2024-27-10 - 'start "" "' from all O.S.s + 'start "UPDATE & DOWNLOAD" "' Win 1.8 2024-27-10 - Start = '' - 1 + Start = '"' + 2 1.9 2024-27-10 + Check saved project - 1 + 2 2.0 2024-27-10 - "chmod +x " .. MainPath + 'chmod +x "' .. MainPath .. '"' # Ordered Variables - 2 + 1 + Apple Trial 2.3 2024-27-10 # Linux execution correction + Credits # 2.1 and 2.2 just trials due issues with Linux and Apple 2.31 2024-28-10 # Binaries directly form the source 2.32 2024-28-10 - yt-dlp + yt-dlp_linux 2.4 2024-29-10 # Adjusted header style for production --- Video/tormyvancool_YOUTUBE Downloader.lua | 272 ++++++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 Video/tormyvancool_YOUTUBE Downloader.lua diff --git a/Video/tormyvancool_YOUTUBE Downloader.lua b/Video/tormyvancool_YOUTUBE Downloader.lua new file mode 100644 index 000000000..2476a6e73 --- /dev/null +++ b/Video/tormyvancool_YOUTUBE Downloader.lua @@ -0,0 +1,272 @@ +-- @description YOUTUBE Downloader +-- @author Tormy Van Cool +-- @version 2.4 +-- @changelog +-- 2.4 2024-29-10 # Adjusted header style for production +-- 1.0 2024-26-10 +-- # First Release +-- 1.1 2024-26-10 +-- + Processes Notifications +-- - /Video/ +-- + /Videos/ +-- 1.2 2024-26-10 +-- - --merge-output-format mp4 +-- + -S vcodec:h264,res,acodec:aac +-- 1.3 2024-26-10 +-- - 10 +-- + 2 +-- 1.4 2024-26-10 +-- - 2 +-- + 5 +-- 1.5 2024-26-10 +-- - 5 +-- + 1 +-- # Unified Update +-- 1.6 2024-26-10 - 1 +-- + 2 +-- + Version +-- 1.7 2024-27-10 +-- - 'start "" "' from all O.S.s +-- + 'start "UPDATE & DOWNLOAD" "' Win +-- 1.8 2024-27-10 +-- - Start = '' +-- - 1 +-- + Start = '"' +-- + 2 +-- 1.9 2024-27-10 +-- + Check saved project +-- - 1 +-- + 2 +-- 2.0 2024-27-10 +-- - "chmod +x " .. MainPath +-- + 'chmod +x "' .. MainPath .. '"' +-- # Ordered Variables +-- - 2 +-- + 1 +-- + Apple Trial +-- 2.3 2024-27-10 +-- # Linux execution correction +-- + Credits +-- # 2.1 and 2.2 just trials due issues with Linux and Apple +-- 2.31 2024-28-10 +-- # Binaries directly form the source +-- 2.32 2024-28-10 +-- - yt-dlp +-- + yt-dlp_linux +-- 2.4 2024-29-10 +-- # Adjusted header style for production +-- @provides +-- [windows] yt-dlp/yt-dlp.exe https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe +-- [linux] yt-dlp/yt-dlp_linux https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp +-- [darwin] yt-dlp/yt-dlp_macos https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_macos +-- @about +-- # Import VIDEOs directly in TimeLine from YouTUBE, VIMEO, PATREONS and thousand other ones. +-- +-- Key Features: +-- +-- - 4 click operation: Start the script, enter the URL, give a title, click on OK +-- - Import any Video in TimeLine by giving just the URL +-- - Videos are saved into the project folder under the dedicated /Videos/ folder +-- - Videos are imported into a new track, having the given name, and at the cursor position +-- - Auto-update of the binaries "yt-dlp" each time the script is invoked, to ensure top quality at each use +-- - Compatible with about thousand platforms included: +-- - YouTUBE +-- - Vimeo +-- - Patreons +-- and several other ones ... +-- +-- [Full list here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md) + +reaper.ClearConsole() + +--------------------------------------------- +-- MAIN VARIABLES +--------------------------------------------- +local LF = "\n" +local pipe = "|" +local colon = ":" +local quote = '"' +local clock = os.clock +local debug = false +local zzz = 1 +local ver = 2.4 +local InputVariable = "" +local dlpWin = 'yt-dlp.exe' +local dlpMac = 'yt-dlp_macos' +local dlpLnx = 'yt-dlp_linux' +local version = reaper.GetAppVersion() +local pj_name_ = reaper.GetProjectName(0, "") +local ProjDir = reaper.GetProjectPathEx(0) +local ResourcePATH = reaper.GetResourcePath() +local CallPath = ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/Various/yt-dlp/' -- Get FullPath to yt-dlp + +--------------------------------------------- +-- FUNCTIONS +--------------------------------------------- + + -- SLEEP(SECONDS) + function sleep(n) + local t0 = clock() + while clock() - t0 <= n do end + end + + -- IDENTIFIES THE O.S. + function getOS() + local OS = reaper.GetOS() + local a = {} + local MainPath = '' + if OS == "Win32" or OS == "Win64" then + MainPath = '"' .. ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/Various/yt-dlp/' .. dlpWin .. '"' + Start = 'start "UPDATE & DOWNLOAD" ' + end + if OS == "OSX32" or OS == "OSX64" or OS == "macOS-arm64" then + MainPath = './yt-dlp_macos' + Start = 'cd "' .. CallPath .. '" && chmod +x ' .. dlpMac .. ' && ' + os.execute('chmod +x "' .. MainPath .. '"') + end + if OS == "Other" then + -- MainPath = ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/Various/yt-dlp/' .. dlpLnx .. '"' + -- Start = '"' + -- os.execute('chmod +x "' .. MainPath .. '"') + MainPath = '"' .. ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/Various/yt-dlp/' .. dlpLnx .. '"' + Start = '' + os.execute('chmod +x ' .. MainPath) + end + return MainPath + end + + local MainPath = getOS() + + -- FILTER OUT PROHIITED CHARACTERS + function GetRid(chappy, seed, subs) -- Get rid of not-admitted characters to prevent any error by user + local ridchap + if subs == nil then subs = "" end + if chappy == nil then return end + local ridchap = string.gsub (chappy, seed, subs) + return ridchap + end + + -- CHECK FOR URL VALIDITY + function is_valid_url(url) + -- Pattern to match a basic URL structure + local pattern = "^https?://[%w-_%.%?%.:/%+=&]+$" + return url:match(pattern) ~= nil + end + + local minVersion = '7.26' + if minVersion > version then + reaper.MB('your Reaper verions is '..version..'\nPlease update REAPER to the last version!', 'ERROR: REAPER '..version..' OUTDATED', 0) + goto done + end +--------------------------------------------- +-- INTERACTIONS +--------------------------------------------- + + -- CHECK WHETHER PROJECT IS SAVED + if pj_name_ == "" then + reaper.MB("YOU MUST SAVE THE PROJECT FIRST! Then relaunch this script!",'WARNING',0) + return + end + + -- GET URL + repeat + retval, url=reaper.GetUserInputs("DOWNLOAD VIDEO", 1, "Paste URL,extrawidth=400", InputVariable) + if retval==false then return end + if retval then + t = {} + i = 0 + for line in url:gmatch("[^" .. LF .. "]*") do + i = i + 1 + t[i] = line + end + end + if t[1]== "" then + reaper.MB("VIDEO URL is MANDATORY","ERROR",0,0) + end + if is_valid_url(t[1]) == false then + reaper.MB("URL NOT VALID","ERROR",0,0) + end + until( t[1] ~= "" and is_valid_url(t[1]) == true) + + + -- GET FILENAME + repeat + retval_1, FileName=reaper.GetUserInputs("DOWNLOAD VIDEO", 1, "Insert FILE NAME,extrawidth=400", InputVariable) + FileName = GetRid(GetRid(GetRid(FileName, pipe), colon), quote) -- No reserved characters can be written + if retval_1==false then return end + if retval_1 then + t = {} + i = 0 + for line in FileName:gmatch("[^" .. LF .. "]*") do + i = i + 1 + t[i] = line + end + end + if t[1]== "" then + reaper.MB("VIDEO TITLE is MANDATORY","ERROR",0,0) + end + until( t[1] ~= "") + reaper.MB("STARTED THE FOLLOWING PROCESSES v" .. ver .. ":\n\n1. Update YT-DLP\n2. Downlaod the video: " ..url .. "\n3. Naming the video: " .. FileName .. ".mp4 \n4. Saving the video into " .. ProjDir .. "/Videos/\n5. Import the video into the project\n\nHEY it will take a little while. DON'T PANIC!\n\nCLICK ON \"OK\" TO CONTINUE", "PROCESS STARTED. PROCESSES LISTED HERE BELOW",0) + +--Pics = "curl -X GET " .. url .. ' --output "' .. Destination ..'"' + +--------------------------------------------- +-- ARGS & TRIGGERS +--------------------------------------------- + + if FileName ~= "" + then + if string.find(FileName, ".mp4") == nil then + FileName = FileName .. ".mp4" + end + argument = ' -o "' .. FileName .. '"' + end + + -- ARGS + args = " --update-to master -S vcodec:h264,res,acodec:aac " .. url .. ' -P "' .. ProjDir .. '/Videos/"' .. argument + + -- TRIGGERS + Video = Start .. MainPath .. args + Destination = ProjDir ..'/Videos/' .. FileName + Destination = Destination:gsub('\\','/') + + +--cd ~/Library/"Application Support"/REAPER/Scripts/Tormy\ Van\ Cool\ ReaPack\ Scripts/Various/yt-dlp/ && ./yt-dlp_macos + +--------------------------------------------- +-- UPDATE AND IMPORT VIDEO +--------------------------------------------- + if url ~= "" then + os.execute(Video) + if debug == true then + reaper.ShowConsoleMsg("FileName: " .. FileName .. "\n") + reaper.ShowConsoleMsg("Destination: " .. Destination .. "\n") + end + + -- GET FILE SIZE + function get_file_size(filename) + local file = io.open(filename, "rb") + if not file then return 0 end + local size = file:seek("end") + file:close() + return size + end + + -- WAIT UNTIL THE OUTPUT FILE SIZE IS STABLE (NOT CHANGING) + local stable = false + local last_size = get_file_size(Destination) + while not stable do + + sleep(zzz) + local new_size = get_file_size(Destination) + + if new_size > 0 and new_size == last_size then + stable = true + else + last_size = new_size + end + end + + reaper.InsertMedia(Destination, 1) + end +::done:: From 1f229400c55d419258d55e11f71e450a97fa2985 Mon Sep 17 00:00:00 2001 From: Tormy Van Cool <32305535+tormyvancool@users.noreply.github.com> Date: Mon, 4 Nov 2024 12:31:00 +0100 Subject: [PATCH 10/10] Update tormyvancool_YOUTUBE Downloader.lua v2.5 Changed the path from 'Various' to 'Video' --- Video/tormyvancool_YOUTUBE Downloader.lua | 160 ++++++++++++---------- 1 file changed, 84 insertions(+), 76 deletions(-) diff --git a/Video/tormyvancool_YOUTUBE Downloader.lua b/Video/tormyvancool_YOUTUBE Downloader.lua index 2476a6e73..a5ff44214 100644 --- a/Video/tormyvancool_YOUTUBE Downloader.lua +++ b/Video/tormyvancool_YOUTUBE Downloader.lua @@ -1,81 +1,88 @@ -- @description YOUTUBE Downloader +-- @about Import VIDEOs directly in TimeLine from YouTUBE, VIMEO, PATREONS and thousand other ones. -- @author Tormy Van Cool --- @version 2.4 --- @changelog --- 2.4 2024-29-10 # Adjusted header style for production --- 1.0 2024-26-10 --- # First Release --- 1.1 2024-26-10 --- + Processes Notifications --- - /Video/ --- + /Videos/ --- 1.2 2024-26-10 --- - --merge-output-format mp4 --- + -S vcodec:h264,res,acodec:aac --- 1.3 2024-26-10 --- - 10 --- + 2 --- 1.4 2024-26-10 --- - 2 --- + 5 --- 1.5 2024-26-10 --- - 5 --- + 1 --- # Unified Update --- 1.6 2024-26-10 - 1 --- + 2 --- + Version --- 1.7 2024-27-10 --- - 'start "" "' from all O.S.s --- + 'start "UPDATE & DOWNLOAD" "' Win --- 1.8 2024-27-10 --- - Start = '' --- - 1 --- + Start = '"' --- + 2 --- 1.9 2024-27-10 --- + Check saved project --- - 1 --- + 2 --- 2.0 2024-27-10 --- - "chmod +x " .. MainPath --- + 'chmod +x "' .. MainPath .. '"' --- # Ordered Variables --- - 2 --- + 1 --- + Apple Trial --- 2.3 2024-27-10 --- # Linux execution correction --- + Credits --- # 2.1 and 2.2 just trials due issues with Linux and Apple --- 2.31 2024-28-10 --- # Binaries directly form the source --- 2.32 2024-28-10 --- - yt-dlp --- + yt-dlp_linux --- 2.4 2024-29-10 --- # Adjusted header style for production +-- @version 2.5 +-- @Changelog: +-- 2.4 2024-29-10 # Adjusted header style for production +-- 1.0 2024-26-10 +-- # First Release +-- 1.1 2024-26-10 +-- + Processes Notifications +-- - /Video/ +-- + /Videos/ +-- 1.2 2024-26-10 +-- - --merge-output-format mp4 +-- + -S vcodec:h264,res,acodec:aac +-- 1.3 2024-26-10 +-- - 10 +-- + 2 +-- 1.4 2024-26-10 +-- - 2 +-- + 5 +-- 1.5 2024-26-10 +-- - 5 +-- + 1 +-- # Unified Update +-- 1.6 2024-26-10 - 1 +-- + 2 +-- + Version +-- 1.7 2024-27-10 +-- - 'start "" "' from all O.S.s +-- + 'start "UPDATE & DOWNLOAD" "' Win +-- 1.8 2024-27-10 +-- - Start = '' +-- - 1 +-- + Start = '"' +-- + 2 +-- 1.9 2024-27-10 +-- + Check saved project +-- - 1 +-- + 2 +-- 2.0 2024-27-10 +-- - "chmod +x " .. MainPath +-- + 'chmod +x "' .. MainPath .. '"' +-- # Ordered Variables +-- - 2 +-- + 1 +-- + Apple Trial +-- 2.3 2024-27-10 +-- # Linux execution correction +-- + Credits +-- # 2.1 and 2.2 just trials due issues with Linux and Apple +-- 2.31 2024-28-10 +-- # Binaries directly form the source +-- 2.32 2024-28-10 +-- - yt-dlp +-- + yt-dlp_linux +-- 2.4 2024-29-10 +-- # Adjusted header style for production +-- 2.5 2024-11-04 +-- - Various +-- + VideoPath = 'Video' +-- @about: +-- # Import VIDEOs directly in TimeLine from YouTUBE, VIMEO, PATREONS and thousand other ones. +-- +-- Key Features: +-- +-- - 4 click operation: Start the script, enter the URL, give a title, click on OK +-- - Import any Video in TimeLine by giving just the URL +-- - Videos are saved into the project folder under the dedicated /Videos/ folder +-- - Videos are imported into a new track, having the given name, and at the cursor position +-- - Auto-update of the binaries "yt-dlp" each time the script is invoked, to ensure top quality at each use +-- - Compatible with about thousand platforms included: +-- - YouTUBE +-- - Vimeo +-- - Patreons +-- and several other ones ... +-- +-- [Full list here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md) +-- @Credits: +-- Stefano marcantoni and Talagan - to have helped for MAC implementation +-- Paolo Saggese - to have helped for Linux implementation -- @provides -- [windows] yt-dlp/yt-dlp.exe https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe -- [linux] yt-dlp/yt-dlp_linux https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -- [darwin] yt-dlp/yt-dlp_macos https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_macos --- @about --- # Import VIDEOs directly in TimeLine from YouTUBE, VIMEO, PATREONS and thousand other ones. --- --- Key Features: --- --- - 4 click operation: Start the script, enter the URL, give a title, click on OK --- - Import any Video in TimeLine by giving just the URL --- - Videos are saved into the project folder under the dedicated /Videos/ folder --- - Videos are imported into a new track, having the given name, and at the cursor position --- - Auto-update of the binaries "yt-dlp" each time the script is invoked, to ensure top quality at each use --- - Compatible with about thousand platforms included: --- - YouTUBE --- - Vimeo --- - Patreons --- and several other ones ... --- --- [Full list here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md) reaper.ClearConsole() @@ -89,7 +96,7 @@ local quote = '"' local clock = os.clock local debug = false local zzz = 1 -local ver = 2.4 +local ver = 2.5 local InputVariable = "" local dlpWin = 'yt-dlp.exe' local dlpMac = 'yt-dlp_macos' @@ -98,7 +105,8 @@ local version = reaper.GetAppVersion() local pj_name_ = reaper.GetProjectName(0, "") local ProjDir = reaper.GetProjectPathEx(0) local ResourcePATH = reaper.GetResourcePath() -local CallPath = ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/Various/yt-dlp/' -- Get FullPath to yt-dlp +local VideoPath = 'Video' +local CallPath = ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/' .. VideoPath .. '/yt-dlp/' -- Get FullPath to yt-dlp --------------------------------------------- -- FUNCTIONS @@ -116,7 +124,7 @@ local CallPath = ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/Variou local a = {} local MainPath = '' if OS == "Win32" or OS == "Win64" then - MainPath = '"' .. ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/Various/yt-dlp/' .. dlpWin .. '"' + MainPath = '"' .. ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/' .. VideoPath .. '/yt-dlp/' .. dlpWin .. '"' Start = 'start "UPDATE & DOWNLOAD" ' end if OS == "OSX32" or OS == "OSX64" or OS == "macOS-arm64" then @@ -128,7 +136,7 @@ local CallPath = ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/Variou -- MainPath = ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/Various/yt-dlp/' .. dlpLnx .. '"' -- Start = '"' -- os.execute('chmod +x "' .. MainPath .. '"') - MainPath = '"' .. ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/Various/yt-dlp/' .. dlpLnx .. '"' + MainPath = '"' .. ResourcePATH .. '/Scripts/Tormy Van Cool ReaPack Scripts/' .. VideoPath .. '/yt-dlp/' .. dlpLnx .. '"' Start = '' os.execute('chmod +x ' .. MainPath) end