------------
MAX_PODS = 98
MIN_MONSTERS = 1
MAX_MONSTERS = 2
OPEN_BAGS = true -- Autorisation d'ouverture des sacs de récolte
FOLLOW_NORMAL = true -- Les mules se déplacent en même temps, après le chef
-----------
function move()
if inventory:itemCount(13294) < 10 then
if character:kamas() < 8000 then
zone = 1
end
else if inventory:itemCount(13294) >= 10 then
zone = 2
else if (10200 >= character:kamas() and character:kamas() >= 8000) then
zone = 3
end
end
if zone == 1 then
return queteG1()
elseif zone == 2 then
return queteG2()
elseif zone == 3 then
return queteS1()
end
return null
end
function queteG1()
return {
{ map = "-5,-1", incarnam = true, path = "bottom" },
{ map = "-2,2", incarnam = true, path = "bottom" },
{ map = "-4,0", incarnam = true, path = "right" },
{ map = "-3,1", incarnam = true, path = "right" },
{ map = "0,3", incarnam = true, path = "right" },
{ map = "1,3", incarnam = true, path = "right" },
{ map = "1,2", incarnam = true, path = "bottom" },
{ map = "0,2", incarnam = true, path = "bottom" },
{ map = "2,3", incarnam = true, path = "right" },
{ map = "3,3", incarnam = true, path = "right" },
{ map = "4,3", incarnam = true, path = "right" },
{ map = "5,3", incarnam = true, path = "right" },
{ map = "6,3", incarnam = true, path = "right" },
{ map = "7,3", incarnam = true, path = "right" },
{ map = "8,3", incarnam = true, path = "right" },
{ map = "9,3", incarnam = true, custom = customNpcToAstrub },
{ map = "-1,-14", path = "bottom" },
{ map = "-1,-13", path = "left" },
{ map = "-2,-13", path = "left" },
{ map = "-3,-13", path = "top" },
{ map = "-3,-14", path = "top" },
{ map = "-3,-15", path = "top" },
{ map = "-3,-16", path = "top" },
{ map = "-3,-17", path = "top" },
{ map = "-3,-18", path = "top" },
{ map = "-3,-19", path = "top" },
{ map = "-3,-20", path = "top" },
{ map = "-3,-21", path = "top" },
{ map = "-3,-22", path = "left" },
{ map = "-4,-22", path = "left" },
{ map = "-5,-22", path = "top" },
{ map = "-5,-23", path = "top" },
{ map = "-5,-24", path = "top" },
{ map = "-5,-25", path = "top" },
{ map = "-5,-26", path = "top" },
{ map = "-5,-27", path = "top" },
{ map = "-5,-28", path = "top" },
{ map = "-5,-29", path = "top" },
{ map = "-5,-30", path = "top" },
{ map = "-5,-31", path = "top" },
{ map = "-5,-32", path = "top" },
{ map = "-5,-33", path = "top" },
{ map = "-5,-34", path = "top" },
{ map = "-5,-35", path = "top" },
{ map = "-5,-36", path = "top" },
{ map = "-5,-37", path = "right" },
{ map = "-4,-37", path = "top" },
{ map = "-4,-38", path = "top" },
{ map = "-4,-39", path = "top" },
{ map = "-4,-40", path = "top" },
{ map = "-4,-41", path = "top" },
{ map = "-4,-42", path = "top" },
{ map = "-4,-43", path = "top" },
{ map = "-4,-44", path = "top" },
{ map = "-4,-45", path = "top" },
{ map = "-4,-46", path = "top" },
{ map = "-4,-47", path = "top" },
{ map = "-4,-48", path = "top" },
{ map = "-6,-56", path = "bottom" },
{ map = "-6,-55", path = "left" },
{ map = "-5,-56", path = "left" },
{ map = "-4,-56", path = "left" },
{ map = "-4,-55", path = "top" },
{ map = "-4,-53", path = "top" },
{ map = "-4,-54", path = "top" },
{ map = "-4,-51", path = "top" },
{ map = "-4,-52", path = "top" },
{ map = "-4,-50", path = "top" },
{ map = "-4,-49", path = "top" },
{ map = "-7,-56", path = "bottom" },
{ map = "-7,-55", path = "left" },
{ map = "-8,-55", path = "left" },
{ map = "-9,-55", path = "bottom" },
{ map = "-9,-54", path = "left" },
{ map = "-10,-54", path = "left" },
{ map = "-11,-54", path = "left" },
{ map = "-12,-53", path = "bottom" },
{ map = "-12,-54", path = "bottom" },
{ map = "-12,-52", path = "bottom" },
{ map = "-12,-51", path = "bottom" },
{ map = "-12,-50", path = "bottom" },
{ map = "-12,-49", path = "bottom" },
{ map = "-12,-47", path = "bottom" },
{ map = "-12,-48", path = "bottom" },
{ map = "-12,-46", path = "bottom" },
{ map = "-12,-45", path = "left" },
{ map = "-13,-45", path = "left" },
{ map = "-14,-45", path = "left" },
{ map = "-15,-45", path = "left" },
{ map = "-16,-45", path = "bottom" },
{ map = "-16,-44", path = "bottom" },
{ map = "-16,-43", path = "left" },
{ map = "-17,-43", path = "left" },
{ map = "-18,-43", path = "left" },
{ map = "-19,-43", path = "left" },
{ map = "-20,-43", path = "left" },
{ map = "-21,-43", path = "left" },
{ map = "-22,-43", path = "left" },
{ map = "-23,-43", path = "left" },
{ map = "-24,-43", path = "left" },
{ map = "-25,-43", path = "left" },
{ map = "-26,-43", path = "left" },
{ map = "-27,-43", path = "bottom" },
{ map = "-27,-42", path = "bottom" },
{ map = "-27,-41", path = "bottom" },
{ map = "-27,-39", path = "bottom" },
{ map = "-27,-40", path = "bottom" },
{ map = "-27,-38", path = "bottom" },
{ map = "-27,-37", path = "bottom" },
{ map = "-27,-36", path = "bottom" },
{ map = "-27,-35", path = "bottom" },
{ map = "-27,-34", path = "bottom" },
{ map = "-27,-33", path = "bottom" },
{ map = "-27,-32", path = "bottom" },
{ map = "-27,-31", path = "bottom" },
{ map = "-27,-29", path = "left" },
{ map = "-27,-30", path = "bottom" },
{ map = "-28,-29", path = "bottom" },
{ map = "-28,-28", path = "left" },
{ map = "-29,-28", path = "bottom" },
{ map = "-29,-27", path = "bottom" },
{ map = "-29,-26", path = "bottom" },
{ map = "-29,-25", path = "bottom" },
{ map = "-29,-24", path = "bottom" },
{ map = "-29,-23", path = "bottom" },
{ map = "-29,-22", path = "bottom" },
{ map = "-29,-21", path = "bottom" },
{ map = "-29,-20", path = "bottom" },
{ map = "-29,-19", path = "right" },
{ map = "-28,-19", path = "bottom" },
{ map = "-28,-18", path = "bottom" },
{ map = "-28,-17", path = "bottom" },
{ map = "-28,-16", path = "bottom" },
{ map = "-28,-15", path = "bottom" },
{ map = "-28,-14", path = "bottom" },
{ map = "-28,-13", path = "bottom" },
{ map = "-28,-12", path = "right" },
{ map = "-27,-12", path = "bottom" },
{ map = "-27,-11", path = "right" },
{ map = "-26,-11", path = "right" },
{ map = "-25,-11", path = "right" },
{ map = "-24,-11", path = "top" },
{ map = "-24,-12", path = "top" },
{ map = "-24,-13", path = "top" },
{ map = "-24,-14", path = "top" },
{ map = "-23,-15", path = "right" },
{ map = "-24,-15", path = "right" },
{ map = "-22,-15", path = "right" },
{ map = "-21,-15", path = "right" },
{ map = "-20,-15", path = "right" },
{ map = "-19,-15", path = "top" },
{ map = "-19,-16", path = "top" },
{ map = "-19,-17", path = "top" },
{ map = "-19,-18", path = "top" },
{ map = "-19,-19", path = "top" },
{ map = "-19,-20", path = "right" },
{ map = "-18,-20", path = "right" },
{ map = "-17,-20", path = "right" },
{ map = "-16,-20", path = "right" },
{ map = "-15,-20", path = "bottom" },
{ map = "-15,-18", path = "bottom" },
{ map = "-15,-19", path = "bottom" },
{ map = "-15,-17", path = "bottom" },
{ map = "-15,-16", path = "bottom" },
{ map = "-15,-15", path = "bottom" },
{ map = "-15,-14", path = "bottom" },
{ map = "-15,-13", path = "bottom" },
{ map = "-15,-12", path = "bottom" },
{ map = "-15,-11", path = "right" },
{ map = "-14,-11", path = "right" },
{ map = "-13,-11", path = "right" },
{ map = "-12,-10", path = "bottom" },
{ map = "-12,-11", path = "bottom" },
{ map = "-12,-9", path = "right" },
{ map = "-11,-9", path = "right" },
{ map = "-10,-9", path = "right" },
{ map = "-9,-9", path = "right" },
{ map = "-8,-9", path = "right" },
{ map = "-7,-9", path = "top" },
{ map = "-7,-10", path = "right" },
{ map = "-6,-10", path = "bottom" },
{ map = "-6,-9", path = "right" },
{ map = "-5,-9", path = "bottom" },
{ map = "-5,-8", path = "right" },
{ map = "-4,-8", path = "right" },
{ map = "-3,-8", path = "top" },
{ map = "-3,-9", path = "right" },
{ map = "-2,-9", path = "right" },
{ map = "-1,-9", path = "right" },
{ map = "0,-9", path = "right" },
{ map = "1,-9", path = "right" },
{ map = "2,-9", path = "right" },
{ map = "3,-9", path = "right" },
{ map = "4,-9", path = "bottom" },
{ map = "4,-8", path = "bottom" },
{ map = "4,-7", path = "bottom" },
{ map = "4,-6", path = "bottom" },
{ map = "4,-5", path = "bottom" },
{ map = "4,-4", path = "bottom" },
{ map = "4,-3", path = "bottom" },
{ map = "4,-2", path = "right" },
{ map = "5,-2", path = "right" },
{ map = "6,-2", path = "right" },
{ map = "7,-2", path = "bottom" },
{ map = "7,-1", path = "bottom" },
{ map = "7,0", path = "bottom" },
{ map = "7,1", path = "left" },
{ map = "6,1", path = "left" },
{ map = "5,1", path = "bottom" },
{ map = "5,2", path = "bottom" },
{ map = "5,3", path = "bottom" },
{ map = "5,4", path = "left" },
{ map = "4,4", path = "bottom" },
{ map = "4,5", path = "bottom" },
{ map = "4,6", path = "bottom" },
{ map = "4,7", path = "bottom" },
{ map = "4,8", path = "right" },
{ map = "5,8", path = "right" },
{ map = "6,8", path = "right" },
{ map = "7,8", path = "right" },
{ map = "8,8", path = "right" },
{ map = "9,8", path = "right" },
{ map = "10,8", path = "right" },
{ map = "11,8", path = "right" },
{ map = "12,8", path = "bottom" },
{ map = "12,9", path = "left" },
{ map = "11,9", path = "left" },
{ map = "10,9", path = "left" },
{ map = "9,9", path = "left" },
{ map = "8,9", path = "left" },
{ map = "7,9", path = "left" },
{ map = "6,9", path = "left" },
{ map = "5,9", path = "bottom" },
{ map = "5,10", path = "bottom" },
{ map = "5,11", path = "bottom" },
{ map = "5,12", path = "bottom" },
{ map = "5,13", path = "bottom" },
{ map = "5,14", path = "bottom" },
{ map = "5,15", path = "left" },
{ map = "4,15", path = "left" },
{ map = "3,15", path = "left" },
{ map = "2,15", path = "bottom" },
{ map = "2,16", path = "bottom" },
{ map = "2,17", path = "bottom" },
{ map = "2,18", path = "bottom" },
{ map = "2,19", path = "bottom" },
{ map = "2,20", path = "bottom" },
{ map = "2,21", path = "bottom" },
{ map = "2,22", path = "right" },
{ map = "3,22", path = "right" },
{ map = "4,22", path = "right" },
{ map = "5,22", path = "top" },
{ map = "12,29", path = "left" },
{ map = "11,29", path = "top", fight = true },
{ map = "11,28", path = "left", fight = true },
{ map = "10,29", path = "left", fight = true },
{ map = "9,29", path = "left|top", fight = true },
{ map = "8,29", path = "left", fight = true },
{ map = "7,29", path = "left", fight = true },
{ map = "10,28", path = "bottom", fight = true },
{ map = "6,29", path = "bottom", fight = true },
{ map = "6,31", path = "right", fight = true },
{ map = "7,30", path = "right", fight = true },
{ map = "6,30", path = "bottom", fight = true },
{ map = "7,31", path = "top", fight = true },
{ map = "8,30", path = "right", fight = true },
{ map = "9,30", path = "top", fight = true },
{ map = "9,28", path = "right", fight = true },
{ map = "90964481", path = "439" },
{ map = "90703363", path = "right" },
{ map = "14,28", path = "bottom" },
{ map = "14,29", path = "left(364)" },
{ map = "13,29", path = "left(280)" },
{ map = "90965505", door = "274" },
{ map = "5,21", path = "right" },
{ map = "6,21", path = "right" },
{ map = "7,21", path = "right" },
{ map = "8,21", path = "right" },
{ map = "9,21", path = "right" },
{ map = "10,21", path = "bottom" },
{ map = "10,22", path = "right" },
{ map = "11,22", path = "right" },
{ map = "12,22", path = "right" },
{ map = "13,22", path = "right" },
{ map = "14,22", path = "right" },
{ map = "15,22", path = "bottom" },
{ map = "15,23", path = "bottom" },
{ map = "15,24", path = "bottom" },
{ map = "15,25", path = "left" },
{ map = "14,25", path = "bottom" },
{ map = "14,26", path = "left" },
{ map = "13,26", path = "top" },
{ map = "13,25", custom = queteGelees1, path = "left" },
{ map = "12,25", path = "left" },
{ map = "11,25", path = "bottom" },
{ map = "11,26", path = "right" },
{ map = "12,26", path = "bottom" },
{ map = "12,27", path = "right" },
{ map = "13,27", path = "bottom" },
}
end
function queteG2()
MAX_MONSTERS = 2
--Déplacement sortie du temple
return {
{ map = "6,29", path = "right" },
{ map = "7,29", path = "right" },
{ map = "8,29", path = "right" },
{ map = "9,29", path = "right" },
{ map = "10,29", path = "right" },
{ map = "11,29", path = "right" },
{ map = "12,29", path = "right" },
{ map = "6,30", path = "top" },
{ map = "6,31", path = "top" },
{ map = "7,31", path = "top" },
{ map = "7,30", path = "top" },
{ map = "8,30", path = "top" },
{ map = "9,30", path = "top" },
{ map = "9,28", path = "bottom" },
{ map = "10,28", path = "bottom" },
{ map = "11,28", path = "bottom" },
{ map = "12,29", path = "right" },
{ map = "13,29", path = "right(363)" },
{ map = "14,29", path = "top" },
{ map = "14,28", path = "left" },
{ map = "13,25", custom = queteGelees2 },
{ map = "12,25", path = "right" },
{ map = "11,25", path = "right" },
{ map = "11,26", path = "top" },
{ map = "12,26", path = "left" },
{ map = "12,27", path = "top" },
{ map = "13,27", path = "left" },
{ map = "13,28", path = "top" },
}
end
function queteS1()
MAX_MONSTERS = 4
FORCE_MONSTERS = {194, 198, 241}
FORBIDDEN_MONSTERS = {240}
return {
{map = map:currentMap(), custom = processMap, gather = false, fight = true}
}
end
end
mapsWithChangeMap = {
{ map = "11,25", changeMap = "bottom" },
{ map = "11,26", changeMap = "bottom" },
{ map = "11,27", changeMap = "right" },
{ map = "12,27", changeMap = "right" },
{ map = "13,28", changeMap = "right" },
{ map = "14,28", changeMap = "bottom", nextMap = "right", doNextMap = "no" },
{ map = "15,28", changeMap = "top" },
{ map = "15,27", changeMap = "right" },
{ map = "16,27", changeMap = "top" },
{ map = "16,26", changeMap = "top" },
{ map = "14,29", changeMap = "left(364)", nextMap = "top", doNextMap = "no" },
{ map = "13,29", changeMap = "left(280)", nextMap = "right(363)", doNextMap = "no" },
{ map = "12,29", changeMap = "left", nextMap = "right", doNextMap = "no" },
{ map = "11,29", changeMap = "left", nextMap = "right", doNextMap = "no" },
{ map = "10,29", changeMap = "left", nextMap = "right", doNextMap = "no" },
{ map = "9,29", changeMap = "left", nextMap = "right", doNextMap = "no" },
{ map = "8,29", changeMap = "left" },
{ map = "7,29", changeMap = "left" },
{ map = "6,29", changeMap = "left" },
{ map = "5,29", changeMap = "left" },
{ map = "4,29", changeMap = "left" },
{ map = "3,29", changeMap = "left" },
{ map = "2,29", changeMap = "left" },
{ map = "1,29", changeMap = "bottom" },
{ map = "1,30", changeMap = "right" },
{ map = "2,30", changeMap = "right" },
{ map = "3,30", changeMap = "right" },
{ map = "4,30", changeMap = "right" },
{ map = "5,30", changeMap = "right" },
{ map = "6,30", changeMap = "right" },
{ map = "7,30", changeMap = "right" },
{ map = "8,30", changeMap = "right" },
{ map = "9,30", changeMap = "top" },
{ map = "13,27", changeMap = "bottom" },
{ map = "12,25", changeMap = "left" },
{ map = "13,25", changeMap = "right", nextMap = "left", doNextMap = "no" },
{ map = "14,25", changeMap = "right", nextMap = "left", doNextMap = "no" },
{ map = "15,25", changeMap = "right", nextMap = "left", doNextMap = "no" },
{ map = "90704896", changeMapDoor = "255", nextMap = "left", doNextMap = "no" },
{ map = "91751941", changeMap = "442" },
}
function processMap()
for index, actualMap in pairs(mapsWithChangeMap) do
if (map:onMap(actualMap.map)) then
if (actualMap.doNextMap) and (actualMap.doThirdMap) and (actualMap.doFourthMap) then
if (actualMap.doFourthMap) == "yes" then
actualMap.doFourthMap = "no"
if (actualMap.fourthMapDoor) then
actualMap.fourthMapDoor = tonumber(actualMap.fourthMapDoor)
map:door(actualMap.fourthMapDoor)
elseif (actualMap.fourthMapCustom) then
return (actualMap.fourthMapCustom)()
else
map:changeMap(actualMap.fourthMap)
end
elseif (actualMap.doThirdMap) == "yes" then
actualMap.doThirdMap = "no"
actualMap.doFourthMap = "yes"
if (actualMap.thirdMapDoor) then
actualMap.thirdMapDoor = tonumber(actualMap.thirdMapDoor)
map:door(actualMap.thirdMapDoor)
elseif (actualMap.thirdMapCustom) then
return (actualMap.thirdMapCustom)()
else
map:changeMap(actualMap.thirdMap)
end
elseif (actualMap.doNextMap == "yes") then
actualMap.doNextMap = "no"
actualMap.doThirdMap = "yes"
if (actualMap.nextMapDoor) then
actualMap.nextMapDoor = tonumber(actualMap.nextMapDoor)
map:door(actualMap.nextMapDoor)
elseif (actualMap.nextMapCustom) then
return (actualMap.nextMapCustom)()
else
map:changeMap(actualMap.nextMap)
end
elseif (actualMap.changeMapDoor) then
actualMap.doNextMap = "yes"
actualMap.changeMapDoor = tonumber(actualMap.changeMapDoor)
map:door(actualMap.changeMapDoor)
elseif (actualMap.changeMapCustom) then
actualMap.doNextMap = "yes"
return (actualMap.changeMapCustom)()
elseif (actualMap.changeMap) then
actualMap.doNextMap = "yes"
map:changeMap(actualMap.changeMap)
end
elseif (actualMap.doNextMap) and (actualMap.doThirdMap) then
if (actualMap.doThirdMap) == "yes" then
actualMap.doThirdMap = "no"
if (actualMap.thirdMapDoor) then
actualMap.thirdMapDoor = tonumber(actualMap.thirdMapDoor)
map:door(actualMap.thirdMapDoor)
elseif (actualMap.thirdMapCustom) then
return (actualMap.thirdMapCustom)()
else
map:changeMap(actualMap.thirdMap)
end
elseif (actualMap.doNextMap == "yes") then
actualMap.doNextMap = "no"
actualMap.doThirdMap = "yes"
if (actualMap.nextMapDoor) then
actualMap.nextMapDoor = tonumber(actualMap.nextMapDoor)
map:door(actualMap.nextMapDoor)
elseif (actualMap.nextMapCustom) then
return (actualMap.nextMapCustom)()
else
map:changeMap(actualMap.nextMap)
end
elseif (actualMap.changeMapDoor) then
actualMap.doNextMap = "yes"
actualMap.changeMapDoor = tonumber(actualMap.changeMapDoor)
map:door(actualMap.changeMapDoor)
elseif (actualMap.changeMapCustom) then
actualMap.doNextMap = "yes"
return (actualMap.changeMapCustom)()
elseif (actualMap.changeMap) then
actualMap.doNextMap = "yes"
map:changeMap(actualMap.changeMap)
end
elseif (actualMap.doNextMap) then
if (actualMap.doNextMap == "yes") then
actualMap.doNextMap = "no"
if (actualMap.nextMapDoor) then
actualMap.nextMapDoor = tonumber(actualMap.nextMapDoor)
map:door(actualMap.nextMapDoor)
elseif (actualMap.nextMapCustom) then
return (actualMap.nextMapCustom)()
else
map:changeMap(actualMap.nextMap)
end
elseif (actualMap.changeMapDoor) then
actualMap.doNextMap = "yes"
actualMap.changeMapDoor = tonumber(actualMap.changeMapDoor)
map:door(actualMap.changeMapDoor)
elseif (actualMap.changeMapCustom) then
actualMap.doNextMap = "yes"
return (actualMap.changeMapCustom)()
elseif (actualMap.changeMap) then
actualMap.doNextMap = "yes"
map:changeMap(actualMap.changeMap)
end
elseif (actualMap.changeMapDoor) then
actualMap.changeMapDoor = tonumber(actualMap.changeMapDoor)
map:door(actualMap.changeMapDoor)
elseif (actualMap.changeMapCustom) then
return (actualMap.changeMapCustom)()
elseif (actualMap.changeMap) then
map:changeMap(actualMap.changeMap)
end
end
end
if map:currentMapId(91751941) then
npc:npc(1600,3)
global:delay(1000)
if inventory:itemCount(13287) < 5 then
npc:reply(-1)
global:delay(1000)
npc:reply(-1)
global:delay(1000)
npc:reply(-1)
global:delay(300)
else
npc:reply(-2)
global:delay(1000)
npc:reply(-1)
global:delay(300)
end
end
end
function queteGelees1()
npc:npc(1601,3)
global:delay(1000)
npc:reply(-1)
global:delay(1000)
npc:reply(-1)
global:delay(1000)
npc:reply(-1)
global:delay(300)
end
function queteGelees2()
npc:npc(1601,3)
global:delay(1000)
npc:reply(-1)
global:delay(1000)
npc:reply(-1)
global:delay(260)
end
function customNpcToAstrub()
npc:npc(888, 3)
global:delay(654)
npc:reply(-1)
global:delay(435)
npc:reply(-1)
global:delay(435)
npc:reply(-1)
end
function bank()
return {
{ map = "91751941", custom = quetePerle1, path = "442" }
}
end
LS0tLS0tLS0tLS0tCk1BWF9QT0RTID0gOTgKTUlOX01PTlNURVJTID0gMQpNQVhfTU9OU1RFUlMgPSAyCk9QRU5fQkFHUyA9IHRydWUgLS0gQXV0b3Jpc2F0aW9uIGQnb3V2ZXJ0dXJlIGRlcyBzYWNzIGRlIHLDqWNvbHRlCkZPTExPV19OT1JNQUwgPSB0cnVlIC0tIExlcyBtdWxlcyBzZSBkw6lwbGFjZW50IGVuIG3Dqm1lIHRlbXBzLCBhcHLDqHMgbGUgY2hlZgotLS0tLS0tLS0tLQoKZnVuY3Rpb24gbW92ZSgpCgogICAgaWYgaW52ZW50b3J5Oml0ZW1Db3VudCgxMzI5NCkgPCAxMCB0aGVuCiAgICAgICAgaWYgY2hhcmFjdGVyOmthbWFzKCkgPCA4MDAwIHRoZW4KICAgICAgICAgICAgem9uZSA9IDEKICAgICAgICBlbmQKICAgIGVsc2UgaWYgaW52ZW50b3J5Oml0ZW1Db3VudCgxMzI5NCkgPj0gMTAgdGhlbgogICAgICAgIHpvbmUgPSAyCiAgICBlbHNlIGlmICgxMDIwMCA+PSBjaGFyYWN0ZXI6a2FtYXMoKSBhbmQgY2hhcmFjdGVyOmthbWFzKCkgPj0gODAwMCkgdGhlbgogICAgICAgIHpvbmUgPSAzCiAgICAgICAgZW5kCiAgICAgICAgZW5kCgppZiB6b25lID09IDEgdGhlbiAKCQlyZXR1cm4gcXVldGVHMSgpCgllbHNlaWYgem9uZSA9PSAyIHRoZW4KCQlyZXR1cm4gcXVldGVHMigpCgllbHNlaWYgem9uZSA9PSAzIHRoZW4KCQlyZXR1cm4gcXVldGVTMSgpCgllbmQKCXJldHVybiBudWxsCmVuZAoKCmZ1bmN0aW9uIHF1ZXRlRzEoKQogICAgcmV0dXJuIHsKICAgICAgICB7IG1hcCA9ICItNSwtMSIsIGluY2FybmFtID0gdHJ1ZSwgcGF0aCA9ICJib3R0b20iIH0sCiAgICAgICAgeyBtYXAgPSAiLTIsMiIsIGluY2FybmFtID0gdHJ1ZSwgcGF0aCA9ICJib3R0b20iIH0sCiAgICAgICAgeyBtYXAgPSAiLTQsMCIsIGluY2FybmFtID0gdHJ1ZSwgcGF0aCA9ICJyaWdodCIgfSwKICAgICAgICB7IG1hcCA9ICItMywxIiwgaW5jYXJuYW0gPSB0cnVlLCBwYXRoID0gInJpZ2h0IiB9LAogICAgICAgIHsgbWFwID0gIjAsMyIsIGluY2FybmFtID0gdHJ1ZSwgcGF0aCA9ICJyaWdodCIgfSwKICAgICAgICB7IG1hcCA9ICIxLDMiLCBpbmNhcm5hbSA9IHRydWUsIHBhdGggPSAicmlnaHQiIH0sCiAgICAgICAgeyBtYXAgPSAiMSwyIiwgaW5jYXJuYW0gPSB0cnVlLCBwYXRoID0gImJvdHRvbSIgfSwKICAgICAgICB7IG1hcCA9ICIwLDIiLCBpbmNhcm5hbSA9IHRydWUsIHBhdGggPSAiYm90dG9tIiB9LAogICAgICAgIHsgbWFwID0gIjIsMyIsIGluY2FybmFtID0gdHJ1ZSwgcGF0aCA9ICJyaWdodCIgfSwKICAgICAgICB7IG1hcCA9ICIzLDMiLCBpbmNhcm5hbSA9IHRydWUsIHBhdGggPSAicmlnaHQiIH0sCiAgICAgICAgeyBtYXAgPSAiNCwzIiwgaW5jYXJuYW0gPSB0cnVlLCBwYXRoID0gInJpZ2h0IiB9LAogICAgICAgIHsgbWFwID0gIjUsMyIsIGluY2FybmFtID0gdHJ1ZSwgcGF0aCA9ICJyaWdodCIgfSwKICAgICAgICB7IG1hcCA9ICI2LDMiLCBpbmNhcm5hbSA9IHRydWUsIHBhdGggPSAicmlnaHQiIH0sCiAgICAgICAgeyBtYXAgPSAiNywzIiwgaW5jYXJuYW0gPSB0cnVlLCBwYXRoID0gInJpZ2h0IiB9LAogICAgICAgIHsgbWFwID0gIjgsMyIsIGluY2FybmFtID0gdHJ1ZSwgcGF0aCA9ICJyaWdodCIgfSwKICAgICAgICB7IG1hcCA9ICI5LDMiLCBpbmNhcm5hbSA9IHRydWUsIGN1c3RvbSAgPSBjdXN0b21OcGNUb0FzdHJ1YiB9LAogICAgICAgIHsgbWFwID0gIi0xLC0xNCIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMSwtMTMiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi0yLC0xMyIsIHBhdGggPSAibGVmdCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTMsLTEzIiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi0zLC0xNCIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItMywtMTUiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTMsLTE2IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi0zLC0xNyIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItMywtMTgiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTMsLTE5IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi0zLC0yMCIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItMywtMjEiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTMsLTIyIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItNCwtMjIiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi01LC0yMiIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNSwtMjMiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTUsLTI0IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi01LC0yNSIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNSwtMjYiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTUsLTI3IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi01LC0yOCIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNSwtMjkiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTUsLTMwIiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi01LC0zMSIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNSwtMzIiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTUsLTMzIiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi01LC0zNCIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNSwtMzUiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTUsLTM2IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi01LC0zNyIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIi00LC0zNyIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNCwtMzgiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTQsLTM5IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi00LC00MCIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNCwtNDEiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTQsLTQyIiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi00LC00MyIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNCwtNDQiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTQsLTQ1IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi00LC00NiIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNCwtNDciLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTQsLTQ4IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi02LC01NiIsIHBhdGggPSAiYm90dG9tIiB9LAogICAgICAgIHsgbWFwID0gIi02LC01NSIsIHBhdGggPSAibGVmdCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTUsLTU2IiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItNCwtNTYiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi00LC01NSIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNCwtNTMiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTQsLTU0IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi00LC01MSIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNCwtNTIiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTQsLTUwIiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi00LC00OSIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItNywtNTYiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTcsLTU1IiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItOCwtNTUiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi05LC01NSIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItOSwtNTQiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi0xMCwtNTQiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi0xMSwtNTQiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi0xMiwtNTMiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTEyLC01NCIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMTIsLTUyIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0xMiwtNTEiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTEyLC01MCIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMTIsLTQ5IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0xMiwtNDciLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTEyLC00OCIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMTIsLTQ2IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0xMiwtNDUiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi0xMywtNDUiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi0xNCwtNDUiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi0xNSwtNDUiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi0xNiwtNDUiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTE2LC00NCIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMTYsLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMTcsLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMTgsLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMTksLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjAsLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjEsLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjIsLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjMsLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjQsLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjUsLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjYsLTQzIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjcsLTQzIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0yNywtNDIiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI3LC00MSIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjcsLTM5IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0yNywtNDAiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI3LC0zOCIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjcsLTM3IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0yNywtMzYiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI3LC0zNSIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjcsLTM0IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0yNywtMzMiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI3LC0zMiIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjcsLTMxIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0yNywtMjkiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIi0yNywtMzAiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI4LC0yOSIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjgsLTI4IiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjksLTI4IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0yOSwtMjciLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI5LC0yNiIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjksLTI1IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0yOSwtMjQiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI5LC0yMyIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjksLTIyIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0yOSwtMjEiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI5LC0yMCIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjksLTE5IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI4LC0xOSIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjgsLTE4IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0yOCwtMTciLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI4LC0xNiIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjgsLTE1IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0yOCwtMTQiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI4LC0xMyIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjgsLTEyIiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI3LC0xMiIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjcsLTExIiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI2LC0xMSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIi0yNSwtMTEiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjQsLTExIiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi0yNCwtMTIiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTI0LC0xMyIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItMjQsLTE0IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi0yMywtMTUiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjQsLTE1IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTIyLC0xNSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIi0yMSwtMTUiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMjAsLTE1IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTE5LC0xNSIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItMTksLTE2IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi0xOSwtMTciLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTE5LC0xOCIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItMTksLTE5IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi0xOSwtMjAiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMTgsLTIwIiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTE3LC0yMCIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIi0xNiwtMjAiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMTUsLTIwIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0xNSwtMTgiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTE1LC0xOSIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMTUsLTE3IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0xNSwtMTYiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTE1LC0xNSIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMTUsLTE0IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0xNSwtMTMiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTE1LC0xMiIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItMTUsLTExIiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTE0LC0xMSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIi0xMywtMTEiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMTIsLTEwIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi0xMiwtMTEiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTEyLC05IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTExLC05IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTEwLC05IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTksLTkiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICItOCwtOSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIi03LC05IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIi03LC0xMCIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIi02LC0xMCIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICItNiwtOSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIi01LC05IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIi01LC04IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTQsLTgiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICItMywtOCIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICItMywtOSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIi0yLC05IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiLTEsLTkiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICIwLC05IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMSwtOSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIjIsLTkiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICIzLC05IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiNCwtOSIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICI0LC04IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjQsLTciLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiNCwtNiIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICI0LC01IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjQsLTQiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiNCwtMyIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICI0LC0yIiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiNSwtMiIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIjYsLTIiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICI3LC0yIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjcsLTEiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiNywwIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjcsMSIsIHBhdGggPSAibGVmdCIgfSwgCiAgICAgICAgeyBtYXAgPSAiNiwxIiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICI1LDEiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiNSwyIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjUsMyIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICI1LDQiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIjQsNCIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICI0LDUiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiNCw2IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjQsNyIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICI0LDgiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICI1LDgiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICI2LDgiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICI3LDgiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICI4LDgiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICI5LDgiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICIxMCw4IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTEsOCIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIjEyLDgiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTIsOSIsIHBhdGggPSAibGVmdCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTEsOSIsIHBhdGggPSAibGVmdCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTAsOSIsIHBhdGggPSAibGVmdCIgfSwgCiAgICAgICAgeyBtYXAgPSAiOSw5IiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICI4LDkiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIjcsOSIsIHBhdGggPSAibGVmdCIgfSwgCiAgICAgICAgeyBtYXAgPSAiNiw5IiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICI1LDkiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiNSwxMCIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICI1LDExIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjUsMTIiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiNSwxMyIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICI1LDE0IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjUsMTUiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIjQsMTUiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIjMsMTUiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIjIsMTUiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiMiwxNiIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICIyLDE3IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjIsMTgiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiMiwxOSIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICIyLDIwIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjIsMjEiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiMiwyMiIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIjMsMjIiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICI0LDIyIiwgcGF0aCA9ICJyaWdodCIgfSwKICAgICAgICB7IG1hcCA9ICI1LDIyIiwgcGF0aCA9ICJ0b3AiIH0sCiAgICAgICAgeyBtYXAgPSAiMTIsMjkiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIjExLDI5IiwgcGF0aCA9ICJ0b3AiLCBmaWdodCA9IHRydWUgfSwgCiAgICAgICAgeyBtYXAgPSAiMTEsMjgiLCBwYXRoID0gImxlZnQiLCBmaWdodCA9IHRydWUgfSwgCiAgICAgICAgeyBtYXAgPSAiMTAsMjkiLCBwYXRoID0gImxlZnQiLCBmaWdodCA9IHRydWUgfSwgCiAgICAgICAgeyBtYXAgPSAiOSwyOSIsIHBhdGggPSAibGVmdHx0b3AiLCBmaWdodCA9IHRydWUgfSwgCiAgICAgICAgeyBtYXAgPSAiOCwyOSIsIHBhdGggPSAibGVmdCIsIGZpZ2h0ID0gdHJ1ZSB9LCAKICAgICAgICB7IG1hcCA9ICI3LDI5IiwgcGF0aCA9ICJsZWZ0IiwgZmlnaHQgPSB0cnVlIH0sIAogICAgICAgIHsgbWFwID0gIjEwLDI4IiwgcGF0aCA9ICJib3R0b20iLCBmaWdodCA9IHRydWUgfSwgCiAgICAgICAgeyBtYXAgPSAiNiwyOSIsIHBhdGggPSAiYm90dG9tIiwgZmlnaHQgPSB0cnVlIH0sIAogICAgICAgIHsgbWFwID0gIjYsMzEiLCBwYXRoID0gInJpZ2h0IiwgZmlnaHQgPSB0cnVlIH0sIAogICAgICAgIHsgbWFwID0gIjcsMzAiLCBwYXRoID0gInJpZ2h0IiwgZmlnaHQgPSB0cnVlIH0sIAogICAgICAgIHsgbWFwID0gIjYsMzAiLCBwYXRoID0gImJvdHRvbSIsIGZpZ2h0ID0gdHJ1ZSB9LCAKICAgICAgICB7IG1hcCA9ICI3LDMxIiwgcGF0aCA9ICJ0b3AiLCBmaWdodCA9IHRydWUgfSwgCiAgICAgICAgeyBtYXAgPSAiOCwzMCIsIHBhdGggPSAicmlnaHQiLCBmaWdodCA9IHRydWUgfSwgCiAgICAgICAgeyBtYXAgPSAiOSwzMCIsIHBhdGggPSAidG9wIiwgZmlnaHQgPSB0cnVlIH0sIAogICAgICAgIHsgbWFwID0gIjksMjgiLCBwYXRoID0gInJpZ2h0IiwgZmlnaHQgPSB0cnVlIH0sCiAgICAgICAgeyBtYXAgPSAiOTA5NjQ0ODEiLCBwYXRoICA9ICI0MzkiIH0sCiAgICAgICAgeyBtYXAgPSAiOTA3MDMzNjMiLCBwYXRoID0gInJpZ2h0IiB9LAogICAgICAgIHsgbWFwID0gIjE0LDI4IiwgcGF0aCA9ICJib3R0b20iIH0sCiAgICAgICAgeyBtYXAgPSAiMTQsMjkiLCBwYXRoID0gImxlZnQoMzY0KSIgfSwKICAgICAgICB7IG1hcCA9ICIxMywyOSIsIHBhdGggPSAibGVmdCgyODApIiB9LAogICAgICAgIHsgbWFwID0gIjkwOTY1NTA1IiwgZG9vciA9ICIyNzQiIH0sIAogICAgICAgIHsgbWFwID0gIjUsMjEiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICI2LDIxIiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiNywyMSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIjgsMjEiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICI5LDIxIiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTAsMjEiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTAsMjIiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICIxMSwyMiIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIjEyLDIyIiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTMsMjIiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICIxNCwyMiIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIjE1LDIyIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjE1LDIzIiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjE1LDI0IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjE1LDI1IiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICIxNCwyNSIsIHBhdGggPSAiYm90dG9tIiB9LCAKICAgICAgICB7IG1hcCA9ICIxNCwyNiIsIHBhdGggPSAibGVmdCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTMsMjYiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTMsMjUiLCBjdXN0b20gPSBxdWV0ZUdlbGVlczEsIHBhdGggPSAibGVmdCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTIsMjUiLCBwYXRoID0gImxlZnQiIH0sIAogICAgICAgIHsgbWFwID0gIjExLDI1IiwgcGF0aCA9ICJib3R0b20iIH0sIAogICAgICAgIHsgbWFwID0gIjExLDI2IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTIsMjYiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTIsMjciLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICIxMywyNyIsIHBhdGggPSAiYm90dG9tIiB9LAogICAgfQogICAgICAgIGVuZAoKZnVuY3Rpb24gcXVldGVHMigpCiAgICAgICAgTUFYX01PTlNURVJTID0gMgogICAgICAgIC0tRMOpcGxhY2VtZW50IHNvcnRpZSBkdSB0ZW1wbGUKICAgICAgICByZXR1cm4gewogICAgICAgIHsgbWFwID0gIjYsMjkiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICI3LDI5IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiOCwyOSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIjksMjkiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICIxMCwyOSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIjExLDI5IiwgcGF0aCA9ICJyaWdodCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTIsMjkiLCBwYXRoID0gInJpZ2h0IiB9LAogICAgICAgIHsgbWFwID0gIjYsMzAiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiNiwzMSIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICI3LDMxIiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIjcsMzAiLCBwYXRoID0gInRvcCIgfSwgCiAgICAgICAgeyBtYXAgPSAiOCwzMCIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICI5LDMwIiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIjksMjgiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTAsMjgiLCBwYXRoID0gImJvdHRvbSIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTEsMjgiLCBwYXRoID0gImJvdHRvbSIgfSwKICAgICAgICB7IG1hcCA9ICIxMiwyOSIsIHBhdGggPSAicmlnaHQiIH0sCiAgICAgICAgeyBtYXAgPSAiMTMsMjkiLCBwYXRoID0gInJpZ2h0KDM2MykiIH0sCiAgICAgICAgeyBtYXAgPSAiMTQsMjkiLCBwYXRoID0gInRvcCIgfSwKICAgICAgICB7IG1hcCA9ICIxNCwyOCIsIHBhdGggPSAibGVmdCIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTMsMjUiLCBjdXN0b20gPSBxdWV0ZUdlbGVlczIgfSwgCiAgICAgICAgeyBtYXAgPSAiMTIsMjUiLCBwYXRoID0gInJpZ2h0IiB9LCAKICAgICAgICB7IG1hcCA9ICIxMSwyNSIsIHBhdGggPSAicmlnaHQiIH0sIAogICAgICAgIHsgbWFwID0gIjExLDI2IiwgcGF0aCA9ICJ0b3AiIH0sIAogICAgICAgIHsgbWFwID0gIjEyLDI2IiwgcGF0aCA9ICJsZWZ0IiB9LCAKICAgICAgICB7IG1hcCA9ICIxMiwyNyIsIHBhdGggPSAidG9wIiB9LCAKICAgICAgICB7IG1hcCA9ICIxMywyNyIsIHBhdGggPSAibGVmdCIgfSwKICAgICAgICB7IG1hcCA9ICIxMywyOCIsIHBhdGggPSAidG9wIiB9LAogICAgICAgICAgICAKICAgfQogICAgZW5kCgoKZnVuY3Rpb24gcXVldGVTMSgpCiAgICBNQVhfTU9OU1RFUlMgPSA0CiAgICBGT1JDRV9NT05TVEVSUyA9IHsxOTQsIDE5OCwgMjQxfQogICAgRk9SQklEREVOX01PTlNURVJTID0gezI0MH0KICAgIHJldHVybiB7CiAgICAgICAge21hcCA9IG1hcDpjdXJyZW50TWFwKCksIGN1c3RvbSA9IHByb2Nlc3NNYXAsIGdhdGhlciA9IGZhbHNlLCBmaWdodCA9IHRydWV9CiAgICB9CmVuZAplbmQKCm1hcHNXaXRoQ2hhbmdlTWFwID0gewogICAgeyBtYXAgPSAiMTEsMjUiLCBjaGFuZ2VNYXAgPSAiYm90dG9tIiB9LAogICAgeyBtYXAgPSAiMTEsMjYiLCBjaGFuZ2VNYXAgPSAiYm90dG9tIiB9LAogICAgeyBtYXAgPSAiMTEsMjciLCBjaGFuZ2VNYXAgPSAicmlnaHQiIH0sCiAgICB7IG1hcCA9ICIxMiwyNyIsIGNoYW5nZU1hcCA9ICJyaWdodCIgfSwKICAgIHsgbWFwID0gIjEzLDI4IiwgY2hhbmdlTWFwID0gInJpZ2h0IiB9LAogICAgeyBtYXAgPSAiMTQsMjgiLCBjaGFuZ2VNYXAgPSAiYm90dG9tIiwgbmV4dE1hcCA9ICJyaWdodCIsIGRvTmV4dE1hcCA9ICJubyIgIH0sCiAgICB7IG1hcCA9ICIxNSwyOCIsIGNoYW5nZU1hcCA9ICJ0b3AiIH0sCiAgICB7IG1hcCA9ICIxNSwyNyIsIGNoYW5nZU1hcCA9ICJyaWdodCIgfSwKICAgIHsgbWFwID0gIjE2LDI3IiwgY2hhbmdlTWFwID0gInRvcCIgfSwKICAgIHsgbWFwID0gIjE2LDI2IiwgY2hhbmdlTWFwID0gInRvcCIgfSwKICAgIHsgbWFwID0gIjE0LDI5IiwgY2hhbmdlTWFwID0gImxlZnQoMzY0KSIsIG5leHRNYXAgPSAidG9wIiwgZG9OZXh0TWFwID0gIm5vIiB9LAogICAgeyBtYXAgPSAiMTMsMjkiLCBjaGFuZ2VNYXAgPSAibGVmdCgyODApIiwgbmV4dE1hcCA9ICJyaWdodCgzNjMpIiwgZG9OZXh0TWFwID0gIm5vIiB9LAogICAgeyBtYXAgPSAiMTIsMjkiLCBjaGFuZ2VNYXAgPSAibGVmdCIsIG5leHRNYXAgPSAicmlnaHQiLCBkb05leHRNYXAgPSAibm8iIH0sCiAgICB7IG1hcCA9ICIxMSwyOSIsIGNoYW5nZU1hcCA9ICJsZWZ0IiwgbmV4dE1hcCA9ICJyaWdodCIsIGRvTmV4dE1hcCA9ICJubyIgfSwKICAgIHsgbWFwID0gIjEwLDI5IiwgY2hhbmdlTWFwID0gImxlZnQiLCBuZXh0TWFwID0gInJpZ2h0IiwgZG9OZXh0TWFwID0gIm5vIiB9LAogICAgeyBtYXAgPSAiOSwyOSIsIGNoYW5nZU1hcCA9ICJsZWZ0IiwgbmV4dE1hcCA9ICJyaWdodCIsIGRvTmV4dE1hcCA9ICJubyIgfSwKICAgIHsgbWFwID0gIjgsMjkiLCBjaGFuZ2VNYXAgPSAibGVmdCIgfSwKICAgIHsgbWFwID0gIjcsMjkiLCBjaGFuZ2VNYXAgPSAibGVmdCIgfSwKICAgIHsgbWFwID0gIjYsMjkiLCBjaGFuZ2VNYXAgPSAibGVmdCIgfSwKICAgIHsgbWFwID0gIjUsMjkiLCBjaGFuZ2VNYXAgPSAibGVmdCIgfSwKICAgIHsgbWFwID0gIjQsMjkiLCBjaGFuZ2VNYXAgPSAibGVmdCIgfSwKICAgIHsgbWFwID0gIjMsMjkiLCBjaGFuZ2VNYXAgPSAibGVmdCIgfSwKICAgIHsgbWFwID0gIjIsMjkiLCBjaGFuZ2VNYXAgPSAibGVmdCIgfSwKICAgIHsgbWFwID0gIjEsMjkiLCBjaGFuZ2VNYXAgPSAiYm90dG9tIiB9LAogICAgeyBtYXAgPSAiMSwzMCIsIGNoYW5nZU1hcCA9ICJyaWdodCIgfSwKICAgIHsgbWFwID0gIjIsMzAiLCBjaGFuZ2VNYXAgPSAicmlnaHQiIH0sCiAgICB7IG1hcCA9ICIzLDMwIiwgY2hhbmdlTWFwID0gInJpZ2h0IiB9LAogICAgeyBtYXAgPSAiNCwzMCIsIGNoYW5nZU1hcCA9ICJyaWdodCIgfSwKICAgIHsgbWFwID0gIjUsMzAiLCBjaGFuZ2VNYXAgPSAicmlnaHQiIH0sCiAgICB7IG1hcCA9ICI2LDMwIiwgY2hhbmdlTWFwID0gInJpZ2h0IiB9LAogICAgeyBtYXAgPSAiNywzMCIsIGNoYW5nZU1hcCA9ICJyaWdodCIgfSwKICAgIHsgbWFwID0gIjgsMzAiLCBjaGFuZ2VNYXAgPSAicmlnaHQiIH0sCiAgICB7IG1hcCA9ICI5LDMwIiwgY2hhbmdlTWFwID0gInRvcCIgfSwKICAgIHsgbWFwID0gIjEzLDI3IiwgY2hhbmdlTWFwID0gImJvdHRvbSIgfSwKICAgIHsgbWFwID0gIjEyLDI1IiwgY2hhbmdlTWFwID0gImxlZnQiIH0sCiAgICB7IG1hcCA9ICIxMywyNSIsIGNoYW5nZU1hcCA9ICJyaWdodCIsIG5leHRNYXAgPSAibGVmdCIsIGRvTmV4dE1hcCA9ICJubyIgfSwKICAgIHsgbWFwID0gIjE0LDI1IiwgY2hhbmdlTWFwID0gInJpZ2h0IiwgbmV4dE1hcCA9ICJsZWZ0IiwgZG9OZXh0TWFwID0gIm5vIiB9LAogICAgeyBtYXAgPSAiMTUsMjUiLCBjaGFuZ2VNYXAgPSAicmlnaHQiLCBuZXh0TWFwID0gImxlZnQiLCBkb05leHRNYXAgPSAibm8iIH0sCiAgICB7IG1hcCA9ICI5MDcwNDg5NiIsIGNoYW5nZU1hcERvb3IgPSAiMjU1IiwgbmV4dE1hcCA9ICJsZWZ0IiwgZG9OZXh0TWFwID0gIm5vIiB9LAogICAgeyBtYXAgPSAiOTE3NTE5NDEiLCBjaGFuZ2VNYXAgPSAiNDQyIiB9LAp9CgpmdW5jdGlvbiBwcm9jZXNzTWFwKCkKICAgIGZvciBpbmRleCwgYWN0dWFsTWFwIGluIHBhaXJzKG1hcHNXaXRoQ2hhbmdlTWFwKSBkbwogICAgICAgIGlmIChtYXA6b25NYXAoYWN0dWFsTWFwLm1hcCkpIHRoZW4KICAgICAgICAgICAgaWYgKGFjdHVhbE1hcC5kb05leHRNYXApIGFuZCAoYWN0dWFsTWFwLmRvVGhpcmRNYXApIGFuZCAoYWN0dWFsTWFwLmRvRm91cnRoTWFwKSB0aGVuCiAgICAgICAgICAgICAgICBpZiAoYWN0dWFsTWFwLmRvRm91cnRoTWFwKSA9PSAieWVzIiB0aGVuCiAgICAgICAgICAgICAgICAgICAgYWN0dWFsTWFwLmRvRm91cnRoTWFwID0gIm5vIgogICAgICAgICAgICAgICAgICAgIGlmIChhY3R1YWxNYXAuZm91cnRoTWFwRG9vcikgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuZm91cnRoTWFwRG9vciA9IHRvbnVtYmVyKGFjdHVhbE1hcC5mb3VydGhNYXBEb29yKQogICAgICAgICAgICAgICAgICAgICAgICBtYXA6ZG9vcihhY3R1YWxNYXAuZm91cnRoTWFwRG9vcikKICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKGFjdHVhbE1hcC5mb3VydGhNYXBDdXN0b20pIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhY3R1YWxNYXAuZm91cnRoTWFwQ3VzdG9tKSgpCiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBtYXA6Y2hhbmdlTWFwKGFjdHVhbE1hcC5mb3VydGhNYXApCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbHNlaWYgKGFjdHVhbE1hcC5kb1RoaXJkTWFwKSA9PSAieWVzIiB0aGVuCiAgICAgICAgICAgICAgICAgICAgYWN0dWFsTWFwLmRvVGhpcmRNYXAgPSAibm8iCiAgICAgICAgICAgICAgICAgICAgYWN0dWFsTWFwLmRvRm91cnRoTWFwID0gInllcyIKICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsTWFwLnRoaXJkTWFwRG9vcikgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAudGhpcmRNYXBEb29yID0gdG9udW1iZXIoYWN0dWFsTWFwLnRoaXJkTWFwRG9vcikKICAgICAgICAgICAgICAgICAgICAgICAgbWFwOmRvb3IoYWN0dWFsTWFwLnRoaXJkTWFwRG9vcikKICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKGFjdHVhbE1hcC50aGlyZE1hcEN1c3RvbSkgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGFjdHVhbE1hcC50aGlyZE1hcEN1c3RvbSkoKQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgbWFwOmNoYW5nZU1hcChhY3R1YWxNYXAudGhpcmRNYXApCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbHNlaWYgKGFjdHVhbE1hcC5kb05leHRNYXAgPT0gInllcyIpIHRoZW4KICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuZG9OZXh0TWFwID0gIm5vIgogICAgICAgICAgICAgICAgICAgIGFjdHVhbE1hcC5kb1RoaXJkTWFwID0gInllcyIKICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsTWFwLm5leHRNYXBEb29yKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbE1hcC5uZXh0TWFwRG9vciA9IHRvbnVtYmVyKGFjdHVhbE1hcC5uZXh0TWFwRG9vcikKICAgICAgICAgICAgICAgICAgICAgICAgbWFwOmRvb3IoYWN0dWFsTWFwLm5leHRNYXBEb29yKQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoYWN0dWFsTWFwLm5leHRNYXBDdXN0b20pIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhY3R1YWxNYXAubmV4dE1hcEN1c3RvbSkoKQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgbWFwOmNoYW5nZU1hcChhY3R1YWxNYXAubmV4dE1hcCkKICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgIGVsc2VpZiAoYWN0dWFsTWFwLmNoYW5nZU1hcERvb3IpIHRoZW4KICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuZG9OZXh0TWFwID0gInllcyIKICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuY2hhbmdlTWFwRG9vciA9IHRvbnVtYmVyKGFjdHVhbE1hcC5jaGFuZ2VNYXBEb29yKQogICAgICAgICAgICAgICAgICAgIG1hcDpkb29yKGFjdHVhbE1hcC5jaGFuZ2VNYXBEb29yKQogICAgICAgICAgICAgICAgZWxzZWlmIChhY3R1YWxNYXAuY2hhbmdlTWFwQ3VzdG9tKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgYWN0dWFsTWFwLmRvTmV4dE1hcCA9ICJ5ZXMiCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhY3R1YWxNYXAuY2hhbmdlTWFwQ3VzdG9tKSgpCiAgICAgICAgICAgICAgICBlbHNlaWYgKGFjdHVhbE1hcC5jaGFuZ2VNYXApIHRoZW4KICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuZG9OZXh0TWFwID0gInllcyIKICAgICAgICAgICAgICAgICAgICBtYXA6Y2hhbmdlTWFwKGFjdHVhbE1hcC5jaGFuZ2VNYXApCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZWxzZWlmIChhY3R1YWxNYXAuZG9OZXh0TWFwKSBhbmQgKGFjdHVhbE1hcC5kb1RoaXJkTWFwKSB0aGVuCiAgICAgICAgICAgICAgICBpZiAoYWN0dWFsTWFwLmRvVGhpcmRNYXApID09ICJ5ZXMiIHRoZW4KICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuZG9UaGlyZE1hcCA9ICJubyIKICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsTWFwLnRoaXJkTWFwRG9vcikgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAudGhpcmRNYXBEb29yID0gdG9udW1iZXIoYWN0dWFsTWFwLnRoaXJkTWFwRG9vcikKICAgICAgICAgICAgICAgICAgICAgICAgbWFwOmRvb3IoYWN0dWFsTWFwLnRoaXJkTWFwRG9vcikKICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKGFjdHVhbE1hcC50aGlyZE1hcEN1c3RvbSkgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGFjdHVhbE1hcC50aGlyZE1hcEN1c3RvbSkoKQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgbWFwOmNoYW5nZU1hcChhY3R1YWxNYXAudGhpcmRNYXApCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbHNlaWYgKGFjdHVhbE1hcC5kb05leHRNYXAgPT0gInllcyIpIHRoZW4KICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuZG9OZXh0TWFwID0gIm5vIgogICAgICAgICAgICAgICAgICAgIGFjdHVhbE1hcC5kb1RoaXJkTWFwID0gInllcyIKICAgICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsTWFwLm5leHRNYXBEb29yKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbE1hcC5uZXh0TWFwRG9vciA9IHRvbnVtYmVyKGFjdHVhbE1hcC5uZXh0TWFwRG9vcikKICAgICAgICAgICAgICAgICAgICAgICAgbWFwOmRvb3IoYWN0dWFsTWFwLm5leHRNYXBEb29yKQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoYWN0dWFsTWFwLm5leHRNYXBDdXN0b20pIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhY3R1YWxNYXAubmV4dE1hcEN1c3RvbSkoKQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgbWFwOmNoYW5nZU1hcChhY3R1YWxNYXAubmV4dE1hcCkKICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgIGVsc2VpZiAoYWN0dWFsTWFwLmNoYW5nZU1hcERvb3IpIHRoZW4KICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuZG9OZXh0TWFwID0gInllcyIKICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuY2hhbmdlTWFwRG9vciA9IHRvbnVtYmVyKGFjdHVhbE1hcC5jaGFuZ2VNYXBEb29yKQogICAgICAgICAgICAgICAgICAgIG1hcDpkb29yKGFjdHVhbE1hcC5jaGFuZ2VNYXBEb29yKQogICAgICAgICAgICAgICAgZWxzZWlmIChhY3R1YWxNYXAuY2hhbmdlTWFwQ3VzdG9tKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgYWN0dWFsTWFwLmRvTmV4dE1hcCA9ICJ5ZXMiCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhY3R1YWxNYXAuY2hhbmdlTWFwQ3VzdG9tKSgpCiAgICAgICAgICAgICAgICBlbHNlaWYgKGFjdHVhbE1hcC5jaGFuZ2VNYXApIHRoZW4KICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuZG9OZXh0TWFwID0gInllcyIKICAgICAgICAgICAgICAgICAgICBtYXA6Y2hhbmdlTWFwKGFjdHVhbE1hcC5jaGFuZ2VNYXApCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZWxzZWlmIChhY3R1YWxNYXAuZG9OZXh0TWFwKSB0aGVuCiAgICAgICAgICAgICAgICBpZiAoYWN0dWFsTWFwLmRvTmV4dE1hcCA9PSAieWVzIikgdGhlbgogICAgICAgICAgICAgICAgICAgIGFjdHVhbE1hcC5kb05leHRNYXAgPSAibm8iCiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdHVhbE1hcC5uZXh0TWFwRG9vcikgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAubmV4dE1hcERvb3IgPSB0b251bWJlcihhY3R1YWxNYXAubmV4dE1hcERvb3IpCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcDpkb29yKGFjdHVhbE1hcC5uZXh0TWFwRG9vcikKICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKGFjdHVhbE1hcC5uZXh0TWFwQ3VzdG9tKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoYWN0dWFsTWFwLm5leHRNYXBDdXN0b20pKCkKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcDpjaGFuZ2VNYXAoYWN0dWFsTWFwLm5leHRNYXApCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbHNlaWYgKGFjdHVhbE1hcC5jaGFuZ2VNYXBEb29yKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgYWN0dWFsTWFwLmRvTmV4dE1hcCA9ICJ5ZXMiCiAgICAgICAgICAgICAgICAgICAgYWN0dWFsTWFwLmNoYW5nZU1hcERvb3IgPSB0b251bWJlcihhY3R1YWxNYXAuY2hhbmdlTWFwRG9vcikKICAgICAgICAgICAgICAgICAgICBtYXA6ZG9vcihhY3R1YWxNYXAuY2hhbmdlTWFwRG9vcikKICAgICAgICAgICAgICAgIGVsc2VpZiAoYWN0dWFsTWFwLmNoYW5nZU1hcEN1c3RvbSkgdGhlbgogICAgICAgICAgICAgICAgICAgIGFjdHVhbE1hcC5kb05leHRNYXAgPSAieWVzIgogICAgICAgICAgICAgICAgICAgIHJldHVybiAoYWN0dWFsTWFwLmNoYW5nZU1hcEN1c3RvbSkoKQogICAgICAgICAgICAgICAgZWxzZWlmIChhY3R1YWxNYXAuY2hhbmdlTWFwKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgYWN0dWFsTWFwLmRvTmV4dE1hcCA9ICJ5ZXMiCiAgICAgICAgICAgICAgICAgICAgbWFwOmNoYW5nZU1hcChhY3R1YWxNYXAuY2hhbmdlTWFwKQogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVsc2VpZiAoYWN0dWFsTWFwLmNoYW5nZU1hcERvb3IpIHRoZW4KICAgICAgICAgICAgICAgIGFjdHVhbE1hcC5jaGFuZ2VNYXBEb29yID0gdG9udW1iZXIoYWN0dWFsTWFwLmNoYW5nZU1hcERvb3IpCiAgICAgICAgICAgICAgICBtYXA6ZG9vcihhY3R1YWxNYXAuY2hhbmdlTWFwRG9vcikKICAgICAgICAgICAgZWxzZWlmIChhY3R1YWxNYXAuY2hhbmdlTWFwQ3VzdG9tKSB0aGVuCiAgICAgICAgICAgICAgICByZXR1cm4gKGFjdHVhbE1hcC5jaGFuZ2VNYXBDdXN0b20pKCkKICAgICAgICAgICAgZWxzZWlmIChhY3R1YWxNYXAuY2hhbmdlTWFwKSB0aGVuCiAgICAgICAgICAgICAgICBtYXA6Y2hhbmdlTWFwKGFjdHVhbE1hcC5jaGFuZ2VNYXApCiAgICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgZW5kCiAgICBpZiBtYXA6Y3VycmVudE1hcElkKDkxNzUxOTQxKSB0aGVuCiAgICAgICAgbnBjOm5wYygxNjAwLDMpCiAgICAgICAgZ2xvYmFsOmRlbGF5KDEwMDApCiAgICAgICAgaWYgaW52ZW50b3J5Oml0ZW1Db3VudCgxMzI4NykgPCA1IHRoZW4KICAgICAgICAgICAgbnBjOnJlcGx5KC0xKQogICAgICAgICAgICBnbG9iYWw6ZGVsYXkoMTAwMCkKICAgICAgICAgICAgbnBjOnJlcGx5KC0xKQogICAgICAgICAgICBnbG9iYWw6ZGVsYXkoMTAwMCkKICAgICAgICAgICAgbnBjOnJlcGx5KC0xKQogICAgICAgICAgICBnbG9iYWw6ZGVsYXkoMzAwKQogICAgICAgIGVsc2UKICAgICAgICAgICAgbnBjOnJlcGx5KC0yKQogICAgICAgICAgICBnbG9iYWw6ZGVsYXkoMTAwMCkKICAgICAgICAgICAgbnBjOnJlcGx5KC0xKQogICAgICAgICAgICBnbG9iYWw6ZGVsYXkoMzAwKQogICAgICAgIGVuZAogICAgZW5kCmVuZAoKZnVuY3Rpb24gcXVldGVHZWxlZXMxKCkKICAgICAgICBucGM6bnBjKDE2MDEsMykKICAgICAgICBnbG9iYWw6ZGVsYXkoMTAwMCkKICAgICAgICBucGM6cmVwbHkoLTEpCiAgICAgICAgZ2xvYmFsOmRlbGF5KDEwMDApCiAgICAgICAgbnBjOnJlcGx5KC0xKQogICAgICAgIGdsb2JhbDpkZWxheSgxMDAwKQogICAgICAgIG5wYzpyZXBseSgtMSkKICAgICAgICBnbG9iYWw6ZGVsYXkoMzAwKQplbmQKCmZ1bmN0aW9uIHF1ZXRlR2VsZWVzMigpCiAgICAgICAgbnBjOm5wYygxNjAxLDMpCiAgICAgICAgZ2xvYmFsOmRlbGF5KDEwMDApCiAgICAgICAgbnBjOnJlcGx5KC0xKQogICAgICAgIGdsb2JhbDpkZWxheSgxMDAwKQogICAgICAgIG5wYzpyZXBseSgtMSkKICAgICAgICBnbG9iYWw6ZGVsYXkoMjYwKQplbmQKCmZ1bmN0aW9uIGN1c3RvbU5wY1RvQXN0cnViKCkKICAgIG5wYzpucGMoODg4LCAzKQogICAgZ2xvYmFsOmRlbGF5KDY1NCkKICAgIG5wYzpyZXBseSgtMSkgCiAgICBnbG9iYWw6ZGVsYXkoNDM1KQogICAgbnBjOnJlcGx5KC0xKSAKICAgIGdsb2JhbDpkZWxheSg0MzUpCiAgICBucGM6cmVwbHkoLTEpCmVuZAoKZnVuY3Rpb24gYmFuaygpCglyZXR1cm4gewoJCXsgbWFwID0gIjkxNzUxOTQxIiwgY3VzdG9tID0gcXVldGVQZXJsZTEsIHBhdGggPSAiNDQyIiB9Cgl9CmVuZAo=