local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_getType_0 = require(l_Parent_1.JestGetType).getType;
local v3 = require(l_Parent_1.LuauPolyfill);
local l_instanceof_0 = v3.instanceof;
local l_Error_0 = v3.Error;
local _ = require(l_Parent_1.RegExp);
local v7 = require(l_Parent_1.JestMatcherUtils);
local l_EXPECTED_COLOR_0 = v7.EXPECTED_COLOR;
local l_RECEIVED_COLOR_0 = v7.RECEIVED_COLOR;
local l_matcherErrorMessage_0 = v7.matcherErrorMessage;
local l_matcherHint_0 = v7.matcherHint;
local l_printDiffOrStringify_0 = v7.printDiffOrStringify;
local l_printExpected_0 = v7.printExpected;
local l_printReceived_0 = v7.printReceived;
local l_printWithType_0 = v7.printWithType;
local l_stringify_0 = v7.stringify;
local l_formatStackTrace_0 = require(l_Parent_1.JestMessageUtil).formatStackTrace;
local v18 = require(l_Parent_0.print);
local l_printExpectedConstructorName_0 = v18.printExpectedConstructorName;
local l_printExpectedConstructorNameNot_0 = v18.printExpectedConstructorNameNot;
local l_printReceivedConstructorName_0 = v18.printReceivedConstructorName;
local l_printReceivedConstructorNameNot_0 = v18.printReceivedConstructorNameNot;
local l_printReceivedStringContainExpectedResult_0 = v18.printReceivedStringContainExpectedResult;
local l_printReceivedStringContainExpectedSubstring_0 = v18.printReceivedStringContainExpectedSubstring;
local _ = require(l_Parent_0.types);
local l_isError_0 = require(l_Parent_0.utils).isError;
local v27 = nil;
local v28 = nil;
local v29 = nil;
local v30 = nil;
local v31 = nil;
local v32 = nil;
local v33 = nil;
local v34 = nil;
local v35 = nil;
local function v38(v36)
    local v37 = false;
    if v36 ~= nil then
        v37 = true;
        if typeof(v36.message) ~= "string" then
            v37 = typeof(v36.message) == "table";
        end;
    end;
    if (v37 and typeof(v36.name) == "string") and typeof(v36.stack) == "string" then
        return {
            hasMessage = v37,
            isError = true,
            message = v36.message,
            value = v36
        };
    elseif not v37 then
        return {
            hasMessage = v37,
            isError = false,
            message = tostring(v36),
            value = v36
        };
    else
        return {
            hasMessage = v37,
            isError = false,
            message = v36.message,
            value = v36
        };
    end;
end;
local function v67(v39, v40)
    return function(v41, v42, v43)
        local v44 = {
            isNot = v41.isNot,
            promise = v41.promise
        };
        local v45 = nil;
        if not v40 or not l_isError_0(v42) then
            if not (typeof(v42) ~= "function") or not (not (typeof(v42) == "table") or not getmetatable(v42)) and getmetatable(v42).__call then
                local function _(v46)
                    return string.match(v46, "[^\n]+");
                end;
                local function v54(v48, v49)
                    local v50 = "";
                    local v51 = "";
                    local v52 = string.match(v48, "[^\n]+");
                    for v53 in string.gmatch(v49, "[^\n]+") do
                        if v53 == v52 then
                            return v51;
                        else
                            v51 = v50;
                            v50 = v50 .. "\n" .. v53;
                        end;
                    end;
                    return nil;
                end;
                local v55 = nil;
                do
                    local l_v55_0 = v55;
                    local v64, v65 = xpcall(function()
                        l_v55_0 = debug.traceback(nil, 2);
                        v42();
                    end, function(v57)
                        if v57 == nil then
                            v57 = "nil";
                        elseif l_getType_0(v57) ~= "error" and (not (typeof(v57) == "table") or not v57.message) then
                            if typeof(v57) == "string" then
                                local _, _, v60 = v57:find("[%S+\\.]+:[0-9]+:%s(.*)");
                                if v60 ~= nil then
                                    v57 = v60;
                                end;
                            elseif typeof(v57) == "table" then
                                v57 = l_stringify_0(v57);
                            end;
                        elseif v57.stack == nil then
                            v57.stack = v54(l_v55_0, debug.traceback());
                            return v57;
                        else
                            if not v57.stack:find("ThrowMatchers%-test%.js") then
                                v57.stack = v54(l_v55_0, v57.stack);
                            end;
                            return v57;
                        end;
                        local v61 = l_Error_0.new(v57);
                        l_Error_0.__captureStackTrace(v61, 3);
                        local _, v63 = string.find(v61.stack, string.match(v61.stack, "[^\n]+"), 1, true);
                        v61.stack = string.sub(v61.stack, (v63 + 1) + 1);
                        v61.stack = v54(l_v55_0, v61.stack);
                        v61["$$robloxInternalJestError"] = true;
                        return v61;
                    end);
                    if not v64 then
                        v45 = v38(v65);
                    end;
                end;
            elseif not v40 then
                local _ = nil;
                error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0(v39, nil, v43 == nil and "" or "expected", v44), l_RECEIVED_COLOR_0("received") .. " value must be a function", l_printWithType_0("Received", v42, l_printReceived_0))));
            end;
        else
            v45 = v38(v42);
        end;
        if v43 == nil then
            return v32(v39, v44, v45);
        elseif typeof(v43) == "table" and typeof(v43.asymmetricMatch) == "function" then
            return v28(v39, v44, v45, v43);
        elseif typeof(v43) == "string" then
            return v31(v39, v44, v45, v43);
        elseif l_getType_0(v43) == "regexp" then
            return v27(v39, v44, v45, v43);
        elseif (typeof(v43) == "table" and typeof(v43.test) == "function") and typeof(v43.exec) == "function" then
            return v27(v39, v44, v45, v43);
        elseif not (typeof(v43) == "table") or v43.message then
            if typeof(v43) == "table" then
                return v29(v39, v44, v45, v43);
            else
                error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0(v39, nil, nil, v44), l_EXPECTED_COLOR_0("expected") .. " value must be a string or regular expression or class or error", l_printWithType_0("Expected", v43, l_printExpected_0))));
                return ;
            end;
        else
            return v30(v39, v44, v45, v43);
        end;
    end;
end;
local v68 = {};
local v69 = nil;
local v70 = "toThrow";
local l_v69_0 = v69 --[[ copy: 41 -> 43 ]];
local l_v70_0 = v70 --[[ copy: 42 -> 44 ]];
v68.toThrow = function(v73, v74, v75)
    local v76 = {
        isNot = v73.isNot,
        promise = v73.promise
    };
    local v77 = nil;
    if not l_v69_0 or not l_isError_0(v74) then
        if not (typeof(v74) ~= "function") or not (not (typeof(v74) == "table") or not getmetatable(v74)) and getmetatable(v74).__call then
            local function _(v78)
                return string.match(v78, "[^\n]+");
            end;
            local function v86(v80, v81)
                local v82 = "";
                local v83 = "";
                local v84 = string.match(v80, "[^\n]+");
                for v85 in string.gmatch(v81, "[^\n]+") do
                    if v85 == v84 then
                        return v83;
                    else
                        v83 = v82;
                        v82 = v82 .. "\n" .. v85;
                    end;
                end;
                return nil;
            end;
            local v87 = nil;
            do
                local l_v87_0 = v87;
                local v96, v97 = xpcall(function()
                    l_v87_0 = debug.traceback(nil, 2);
                    v74();
                end, function(v89)
                    if v89 == nil then
                        v89 = "nil";
                    elseif l_getType_0(v89) ~= "error" and (not (typeof(v89) == "table") or not v89.message) then
                        if typeof(v89) == "string" then
                            local _, _, v92 = v89:find("[%S+\\.]+:[0-9]+:%s(.*)");
                            if v92 ~= nil then
                                v89 = v92;
                            end;
                        elseif typeof(v89) == "table" then
                            v89 = l_stringify_0(v89);
                        end;
                    elseif v89.stack == nil then
                        v89.stack = v86(l_v87_0, debug.traceback());
                        return v89;
                    else
                        if not v89.stack:find("ThrowMatchers%-test%.js") then
                            v89.stack = v86(l_v87_0, v89.stack);
                        end;
                        return v89;
                    end;
                    local v93 = l_Error_0.new(v89);
                    l_Error_0.__captureStackTrace(v93, 3);
                    local _, v95 = string.find(v93.stack, string.match(v93.stack, "[^\n]+"), 1, true);
                    v93.stack = string.sub(v93.stack, (v95 + 1) + 1);
                    v93.stack = v86(l_v87_0, v93.stack);
                    v93["$$robloxInternalJestError"] = true;
                    return v93;
                end);
                if not v96 then
                    v77 = v38(v97);
                end;
            end;
        elseif not l_v69_0 then
            local _ = nil;
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0(l_v70_0, nil, v75 == nil and "" or "expected", v76), l_RECEIVED_COLOR_0("received") .. " value must be a function", l_printWithType_0("Received", v74, l_printReceived_0))));
        end;
    else
        v77 = v38(v74);
    end;
    if v75 == nil then
        return v32(l_v70_0, v76, v77);
    elseif typeof(v75) == "table" and typeof(v75.asymmetricMatch) == "function" then
        return v28(l_v70_0, v76, v77, v75);
    elseif typeof(v75) == "string" then
        return v31(l_v70_0, v76, v77, v75);
    elseif l_getType_0(v75) == "regexp" then
        return v27(l_v70_0, v76, v77, v75);
    elseif (typeof(v75) == "table" and typeof(v75.test) == "function") and typeof(v75.exec) == "function" then
        return v27(l_v70_0, v76, v77, v75);
    elseif not (typeof(v75) == "table") or v75.message then
        if typeof(v75) == "table" then
            return v29(l_v70_0, v76, v77, v75);
        else
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0(l_v70_0, nil, nil, v76), l_EXPECTED_COLOR_0("expected") .. " value must be a string or regular expression or class or error", l_printWithType_0("Expected", v75, l_printExpected_0))));
            return ;
        end;
    else
        return v30(l_v70_0, v76, v77, v75);
    end;
end;
v69 = nil;
v70 = "toThrowError";
v68.toThrowError = function(v99, v100, v101)
    local v102 = {
        isNot = v99.isNot,
        promise = v99.promise
    };
    local v103 = nil;
    if not v69 or not l_isError_0(v100) then
        if not (typeof(v100) ~= "function") or not (not (typeof(v100) == "table") or not getmetatable(v100)) and getmetatable(v100).__call then
            local function _(v104)
                return string.match(v104, "[^\n]+");
            end;
            local function v112(v106, v107)
                local v108 = "";
                local v109 = "";
                local v110 = string.match(v106, "[^\n]+");
                for v111 in string.gmatch(v107, "[^\n]+") do
                    if v111 == v110 then
                        return v109;
                    else
                        v109 = v108;
                        v108 = v108 .. "\n" .. v111;
                    end;
                end;
                return nil;
            end;
            local v113 = nil;
            do
                local l_v113_0 = v113;
                local v122, v123 = xpcall(function()
                    l_v113_0 = debug.traceback(nil, 2);
                    v100();
                end, function(v115)
                    if v115 == nil then
                        v115 = "nil";
                    elseif l_getType_0(v115) ~= "error" and (not (typeof(v115) == "table") or not v115.message) then
                        if typeof(v115) == "string" then
                            local _, _, v118 = v115:find("[%S+\\.]+:[0-9]+:%s(.*)");
                            if v118 ~= nil then
                                v115 = v118;
                            end;
                        elseif typeof(v115) == "table" then
                            v115 = l_stringify_0(v115);
                        end;
                    elseif v115.stack == nil then
                        v115.stack = v112(l_v113_0, debug.traceback());
                        return v115;
                    else
                        if not v115.stack:find("ThrowMatchers%-test%.js") then
                            v115.stack = v112(l_v113_0, v115.stack);
                        end;
                        return v115;
                    end;
                    local v119 = l_Error_0.new(v115);
                    l_Error_0.__captureStackTrace(v119, 3);
                    local _, v121 = string.find(v119.stack, string.match(v119.stack, "[^\n]+"), 1, true);
                    v119.stack = string.sub(v119.stack, (v121 + 1) + 1);
                    v119.stack = v112(l_v113_0, v119.stack);
                    v119["$$robloxInternalJestError"] = true;
                    return v119;
                end);
                if not v122 then
                    v103 = v38(v123);
                end;
            end;
        elseif not v69 then
            local _ = nil;
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0(v70, nil, v101 == nil and "" or "expected", v102), l_RECEIVED_COLOR_0("received") .. " value must be a function", l_printWithType_0("Received", v100, l_printReceived_0))));
        end;
    else
        v103 = v38(v100);
    end;
    if v101 == nil then
        return v32(v70, v102, v103);
    elseif typeof(v101) == "table" and typeof(v101.asymmetricMatch) == "function" then
        return v28(v70, v102, v103, v101);
    elseif typeof(v101) == "string" then
        return v31(v70, v102, v103, v101);
    elseif l_getType_0(v101) == "regexp" then
        return v27(v70, v102, v103, v101);
    elseif (typeof(v101) == "table" and typeof(v101.test) == "function") and typeof(v101.exec) == "function" then
        return v27(v70, v102, v103, v101);
    elseif not (typeof(v101) == "table") or v101.message then
        if typeof(v101) == "table" then
            return v29(v70, v102, v103, v101);
        else
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0(v70, nil, nil, v102), l_EXPECTED_COLOR_0("expected") .. " value must be a string or regular expression or class or error", l_printWithType_0("Expected", v101, l_printExpected_0))));
            return ;
        end;
    else
        return v30(v70, v102, v103, v101);
    end;
end;
v27 = function(v125, v126, v127, v128)
    local v129 = false;
    if v127 ~= nil then
        v129 = v128:test(v127.message);
    end;
    local v130 = nil;
    if not v129 then
        v130 = function()
            local v131 = l_matcherHint_0(v125, nil, nil, v126) .. "\n\n" .. v33("Expected pattern: ", v128);
            if v127 == nil then
                return v131 .. "\n" .. "Received function never threw";
            elseif not v127.hasMessage or v127.value["$$robloxInternalJestError"] then
                return v131 .. v34("Received value:   ", v127, "message") .. v35(v127);
            else
                return v131 .. v34("Received message: ", v127, "message") .. v35(v127);
            end;
        end;
    else
        assert(v127 ~= nil);
        v130 = function()
            local v132 = l_matcherHint_0(v125, nil, nil, v126) .. "\n\n" .. v33("Expected pattern: never ", v128);
            if (not (v127 ~= nil) or not v127.hasMessage) or v127.value["$$robloxInternalJestError"] then
                return v132 .. v34("Received value:         ", v127, "message") .. v35(v127);
            else
                return v132 .. v34("Received message:       ", v127, "message", v128) .. v35(v127);
            end;
        end;
    end;
    return {
        message = v130,
        pass = v129
    };
end;
v28 = function(v133, v134, v135, v136)
    local v137 = false;
    if v135 ~= nil then
        v137 = v136:asymmetricMatch(v135.value);
    end;
    local v138 = nil;
    if not v137 then
        v138 = function()
            local v139 = l_matcherHint_0(v133, nil, nil, v134) .. "\n\n" .. v33("Expected asymmetric matcher: ", v136) .. "\n";
            if v135 == nil then
                return v139 .. "Received function never threw";
            elseif not v135.hasMessage or v135.value["$$robloxInternalJestError"] then
                return v139 .. v34("Thrown value: ", v135, "message") .. v35(v135);
            else
                return v139 .. v34("Received name:    ", v135, "name") .. v34("Received message: ", v135, "message") .. v35(v135);
            end;
        end;
    else
        assert(v135 ~= nil);
        v138 = function()
            local v140 = l_matcherHint_0(v133, nil, nil, v134) .. "\n\n" .. v33("Expected asymmetric matcher: never ", v136) .. "\n";
            if (not (v135 ~= nil) or not v135.hasMessage) or v135.value["$$robloxInternalJestError"] then
                return v140 .. v34("Thrown value: ", v135, "message") .. v35(v135);
            else
                return v140 .. v34("Received name:    ", v135, "name") .. v34("Received message: ", v135, "message") .. v35(v135);
            end;
        end;
    end;
    return {
        message = v138,
        pass = v137
    };
end;
v29 = function(v141, v142, v143, v144)
    local v145 = false;
    if v143 ~= nil then
        v145 = v143.message == v144.message;
    end;
    local v146 = nil;
    if not v145 then
        v146 = function()
            local v147 = l_matcherHint_0(v141, nil, nil, v142) .. "\n\n";
            if v143 == nil then
                return v147 .. v33("Expected message: ", v144.message) .. "\n" .. "Received function never threw";
            elseif not v143.hasMessage or v143.value["$$robloxInternalJestError"] then
                return v147 .. v33("Expected message: ", v144.message) .. v34("Received value:   ", v143, "message") .. v35(v143);
            else
                return v147 .. l_printDiffOrStringify_0(v144.message, v143.message, "Expected message", "Received message", true) .. "\n" .. v35(v143);
            end;
        end;
    else
        assert(v143 ~= nil);
        v146 = function()
            local v148 = l_matcherHint_0(v141, nil, nil, v142) .. "\n\n" .. v33("Expected message: never ", v144.message);
            if (not (v143 ~= nil) or not v143.hasMessage) or v143.value["$$robloxInternalJestError"] then
                return v148 .. v34("Received value:         ", v143, "message") .. v35(v143);
            else
                return v148 .. v35(v143);
            end;
        end;
    end;
    return {
        message = v146,
        pass = v145
    };
end;
v30 = function(v149, v150, v151, v152)
    local function _(v153)
        return (v153 and getmetatable(v153)) and getmetatable(v153).__index;
    end;
    local v155 = false;
    if v151 ~= nil then
        v155 = false;
        if v151.value ~= nil then
            v155 = l_instanceof_0(v151.value, v152);
        end;
    end;
    local _ = nil;
    return {
        message = not v155 and function()
            local v157 = l_matcherHint_0(v149, nil, nil, v150) .. "\n\n" .. l_printExpectedConstructorName_0("Expected constructor", v152);
            if v151 == nil then
                return v157 .. "\n" .. "Received function never threw";
            else
                if v151.value ~= nil then
                    local l_value_0 = v151.value;
                    if not (not ((l_value_0 and getmetatable(l_value_0)) and getmetatable(l_value_0).__index) or v151.value["$$robloxInternalJestError"]) then
                        v157 = v157 .. l_printReceivedConstructorName_0("Received constructor", (getmetatable(v151.value)));
                    end;
                end;
                v157 = v157 .. "\n";
                if not v151.hasMessage or v151.value["$$robloxInternalJestError"] then
                    return v157 .. v34("Received value: ", v151, "message") .. v35(v151);
                else
                    return v157 .. v34("Received message: ", v151, "message") .. v35(v151);
                end;
            end;
        end or function()
            local v159 = l_matcherHint_0(v149, nil, nil, v150) .. "\n\n" .. l_printExpectedConstructorNameNot_0("Expected constructor", v152);
            if v151 ~= nil then
                local l_value_1 = v151.value;
                if (l_value_1 and getmetatable(l_value_1)) and getmetatable(l_value_1).__index then
                    l_value_1 = v152;
                    if not (not (((l_value_1 and getmetatable(l_value_1)) and getmetatable(l_value_1).__index) and getmetatable(v151.value).__index ~= v152) or v151.value["$$robloxInternalJestError"]) then
                        v159 = v159 .. l_printReceivedConstructorNameNot_0("Received constructor", getmetatable(v151.value), v152);
                    end;
                end;
            end;
            v159 = v159 .. "\n";
            if (not (v151 ~= nil) or not v151.hasMessage) or v151.value["$$robloxInternalJestError"] then
                return v159 .. v34("Received value: ", v151, "message") .. v35(v151);
            else
                return v159 .. v34("Received message: ", v151, "message") .. v35(v151);
            end;
        end,
        pass = v155
    };
end;
v31 = function(v161, v162, v163, v164)
    local v165 = false;
    if not (not (v163 ~= nil and typeof(v163.message) == "string") or not v163.message:find(v164, 1, true)) then
        v165 = true;
    end;
    local v166 = nil;
    if not v165 then
        v166 = function()
            local v167 = l_matcherHint_0(v161, nil, nil, v162) .. "\n\n" .. v33("Expected substring: ", v164);
            if v163 == nil then
                return v167 .. "\n" .. "Received function never threw";
            elseif not v163.hasMessage or v163.value["$$robloxInternalJestError"] then
                return v167 .. v34("Received value:     ", v163, "message") .. v35(v163);
            else
                return v167 .. v34("Received message:   ", v163, "message") .. v35(v163);
            end;
        end;
    else
        assert(v163 ~= nil);
        v166 = function()
            local v168 = l_matcherHint_0(v161, nil, nil, v162) .. "\n\n" .. v33("Expected substring: never ", v164);
            if (not (v163 ~= nil) or not v163.hasMessage) or v163.value["$$robloxInternalJestError"] then
                return v168 .. v34("Received value:           ", v163, "message") .. v35(v163);
            else
                return v168 .. v34("Received message:         ", v163, "message", v164) .. v35(v163);
            end;
        end;
    end;
    return {
        message = v166,
        pass = v165
    };
end;
v32 = function(v169, v170, v171)
    local v172 = v171 ~= nil;
    local v173 = nil;
    if not v172 then
        v173 = function()
            return l_matcherHint_0(v169, nil, "", v170) .. "\n\n" .. "Received function never threw";
        end;
    else
        assert(v171 ~= nil);
        v173 = function()
            local v174 = l_matcherHint_0(v169, nil, "", v170) .. "\n\n";
            if (not (v171 ~= nil) or not v171.hasMessage) or v171.value["$$robloxInternalJestError"] then
                return v174 .. v34("Thrown value: ", v171, "message") .. v35(v171);
            else
                return v174 .. v34("Error name:    ", v171, "name") .. v34("Error message: ", v171, "message") .. v35(v171);
            end;
        end;
    end;
    return {
        message = v173,
        pass = v172
    };
end;
v33 = function(v175, v176)
    return v175 .. l_printExpected_0(v176) .. "\n";
end;
v34 = function(v177, v178, v179, v180)
    if v178 == nil then
        return "";
    elseif v179 == "message" then
        local l_message_0 = v178.message;
        if typeof(v180) == "string" then
            local v182 = l_message_0:find(v180);
            if v182 then
                return v177 .. l_printReceivedStringContainExpectedSubstring_0(l_message_0, v182, #v180) .. "\n";
            end;
        elseif l_getType_0(v180) == "regexp" then
            return v177 .. l_printReceivedStringContainExpectedResult_0(l_message_0, v180:exec(l_message_0)) .. "\n";
        end;
        return v177 .. l_printReceived_0(l_message_0) .. "\n";
    elseif v179 == "name" then
        if not v178.isError then
            return "";
        else
            return v177 .. l_printReceived_0(v178.value.name) .. "\n";
        end;
    elseif v179 == "value" then
        if not v178.isError then
            return v177 .. l_printReceived_0(v178.value) .. "\n";
        else
            return "";
        end;
    else
        return "";
    end;
end;
v35 = function(v183)
    if v183 ~= nil and v183.isError then
        return l_formatStackTrace_0(v183.value.stack, {
            testMatch = {}
        }, {
            noStackTrace = true
        });
    else
        return "";
    end;
end;
return {
    createMatcher = v67,
    matchers = v68
};


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.RegExp);
local _ = require(l_Parent_0.LuauPolyfill);
local _ = require(l_Parent_0.JestMatcherUtils);
return {};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Error_0 = v2.Error;
local l_instanceof_0 = v2.instanceof;
local l_Object_0 = v2.Object;
local v7 = require(l_Parent_1.RegExp);
local v8 = require(l_Parent_1.RobloxShared);
local l_equals_0 = require(l_Parent_0.jasmineUtils).equals;
local v10 = nil;
local function v11(v12, v13)
    if not l_Array_0.isArray(v13) then
        v13 = v10(v13);
    end;
    if #v13 > 0 then
        local v14 = #v13 == 1;
        local v15 = v13[1];
        local l_status_0, l_result_0 = pcall(function()
            return v12[v15];
        end);
        if not l_status_0 or not v14 and l_result_0 == nil then
            return {
                hasEndProp = false,
                lastTraversedObject = v12,
                traversedPath = {}
            };
        else
            local v18 = v11(l_result_0, l_Array_0.slice(v13, 2));
            if v18.lastTraversedObject == nil then
                v18.lastTraversedObject = v12;
            end;
            table.insert(v18.traversedPath, 1, v15);
            if v14 then
                v18.hasEndProp = l_result_0 ~= nil;
                if not v18.hasEndProp then
                    l_Array_0.shift(v18.traversedPath);
                end;
            end;
            return v18;
        end;
    else
        return {
            lastTraversedObject = nil,
            traversedPath = {},
            value = v12
        };
    end;
end;
local l_getObjectSubset_0 = v8.expect.getObjectSubset;
local l_iterableEquality_0 = v8.expect.iterableEquality;
local l_subsetEquality_0 = v8.expect.subsetEquality;
local function v24(v22, v23)
    if not (v22 ~= nil) or v23 == nil then
        return nil;
    elseif typeof(v22) ~= typeof(v23) then
        return false;
    elseif getmetatable(v22) or getmetatable(v23) then
        if not (((not getmetatable(v22) or not getmetatable(v23)) or not getmetatable(v22).__index) or not getmetatable(v23).__index) and getmetatable(v22).__index == getmetatable(v23).__index then
            return nil;
        else
            return false;
        end;
    else
        return nil;
    end;
end;
local function v27(v25, v26)
    if l_Array_0.isArray(v25) and l_Array_0.isArray(v26) then
        return l_equals_0(v25, v26, {
            v24
        }, true) and l_equals_0(l_Object_0.keys(v25), (l_Object_0.keys(v26)));
    else
        return nil;
    end;
end;
local function v33(v28, v29)
    local v30 = {
        {},
        {}
    };
    for _, v32 in ipairs(v28) do
        table.insert(v30[not v29(v32) and 2 or 1], v32);
    end;
    return v30;
end;
v10 = function(v34)
    local v35 = v7("[^.[\\]]+|(?=(?:\\.)(?:\\.|$))");
    local v36 = {};
    if v34:sub(1, 1) == "." then
        table.insert(v36, "");
    end;
    local v37 = 0;
    local l_v34_0 = v34;
    local v39 = v35:exec(l_v34_0);
    while v39 ~= nil and v37 < #v34 do
        local v40 = v39[1];
        local v41 = v39.index + #v40;
        local v42 = v37 + v39.index;
        if v34:sub(v42 - 1, v42 - 1) == "[" then
            local v43 = tonumber(v40, 10);
            if not v43 then
                table.insert(v36, v40);
            else
                table.insert(v36, v43);
            end;
        else
            table.insert(v36, v40);
        end;
        v37 = v37 + v41;
        l_v34_0 = l_v34_0:sub(v41 + 1);
        v39 = v35:exec(l_v34_0);
    end;
    return v36;
end;
return {
    getPath = v11,
    getObjectSubset = l_getObjectSubset_0,
    iterableEquality = l_iterableEquality_0,
    subsetEquality = l_subsetEquality_0,
    typeEquality = v24,
    sparseArrayEquality = v27,
    partition = v33,
    pathAsArray = v10,
    isError = function(v44)
        return l_instanceof_0(v44, l_Error_0);
    end,
    emptyObject = function(v45)
        local v46;
        if typeof(v45) == "table" then
            v46 = true;
            if not (#l_Object_0.keys(v45) ~= 0) then
                goto label0;
            end;
        end;
        v46 = false;
        ::label0::;
        return v46;
    end,
    isOneline = function(v47, v48)
        local v49 = false;
        if typeof(v47) == "string" then
            v49 = false;
            if typeof(v48) == "string" then
                v49 = not v48:match("[\r\n]") or not v47:match("[\r\n]");
            end;
        end;
        return v49;
    end
};


local _ = require(script.Parent.Parent.FocusNavigation);
return function(...)
    local v1 = {
        ...
    };
    return {
        onDescendantFocusChanged = function(v2)
            for _, v4 in v1, nil, nil do
                if v4.onDescendantFocusChanged then
                    v4.onDescendantFocusChanged(v2);
                end;
            end;
        end,
        getTargets = function()
            local v5 = {};
            for _, v7 in v1, nil, nil do
                for _, v9 in (v7.getTargets()), nil, nil do
                    table.insert(v5, v9);
                end;
            end;
            return v5;
        end
    };
end;


local _ = require(script.Parent.FocusNavigation);
local v1 = require(script.composeFocusBehaviors);
local function v3(v2)
    return {
        getTargets = function()
            if not v2 then
                return {};
            else
                return {
                    v2
                };
            end;
        end
    };
end;
local function v6()
    local v4 = nil;
    return {
        onDescendantFocusChanged = function(v5)
            v4 = v5 or v4;
        end,
        getTargets = function()
            if not v4 then
                return {};
            else
                return {
                    v4
                };
            end;
        end
    };
end;
return {
    default = v3,
    mostRecent = v6,
    mostRecentOrDefault = function(v7)
        return v1(v6(), {
            getTargets = function()
                if not v7 then
                    return {};
                else
                    return {
                        v7
                    };
                end;
            end
        });
    end,
    composeFocusBehaviors = v1
};


local l_GuiService_0 = game:GetService("GuiService");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_mockableWarn_0 = require(script.Parent.Parent.FocusNavigationUtils).mockableWarn;
local _ = require(script.Parent.types);
local l_status_0, l_result_0 = pcall(function()
    return l_GuiService_0:GetPropertyChangedSignal("SelectedCoreObject");
end);
local l_status_1, l_result_1 = pcall(function()
    return game:GetService("CoreGui");
end);
return {
    CoreGui = {
        getSelection = function()
            return l_GuiService_0.SelectedCoreObject;
        end,
        setSelection = function(v8)
            if not (not (not (not _G.__DEV__ or not l_status_1) and v8 ~= nil) or v8:IsDescendantOf(l_result_1)) then
                l_mockableWarn_0(string.format("Attempting to focus non-CoreGui descendant '%s' from a CoreGui FocusNavigationService " .. "instance. Consider creating this FocusNavigationService with " .. "`FocusNavigation.EnginInterface.PlayerGui` instead", v8:GetFullName()));
            end;
            if not v8 or v8.Selectable then
                l_GuiService_0.SelectedCoreObject = v8;
                return ;
            else
                l_GuiService_0:Select(v8);
                return ;
            end;
        end,
        SelectionChanged = if not l_status_0 then {
            Connect = function()
                error("Could not access SelectedCoreObject signal; you may not have the correct permissions");
            end
        } else l_result_0,
        InputBegan = l_UserInputService_0.InputBegan,
        InputChanged = l_UserInputService_0.InputChanged,
        InputEnded = l_UserInputService_0.InputEnded,
        LastInputTypeChanged = l_UserInputService_0.LastInputTypeChanged
    },
    PlayerGui = {
        getSelection = function()
            return l_GuiService_0.SelectedObject;
        end,
        setSelection = function(v9)
            if not (not (not (not _G.__DEV__ or not l_status_1) and v9 ~= nil) or not v9:IsDescendantOf(l_result_1)) then
                l_mockableWarn_0(string.format("Attempting to focus CoreGui descendant '%s' from a non-CoreGui FocusNavigationService instance." .. "Consider creating this FocusNavigationService with " .. "`FocusNavigation.EnginInterface.CoreGui` instead", v9:GetFullName()));
            end;
            if not v9 or v9.Selectable then
                l_GuiService_0.SelectedObject = v9;
                return ;
            else
                l_GuiService_0:Select(v9);
                return ;
            end;
        end,
        SelectionChanged = l_GuiService_0:GetPropertyChangedSignal("SelectedObject"),
        InputBegan = l_UserInputService_0.InputBegan,
        InputChanged = l_UserInputService_0.InputChanged,
        InputEnded = l_UserInputService_0.InputEnded,
        LastInputTypeChanged = l_UserInputService_0.LastInputTypeChanged
    }
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.EventPropagation);
local v2 = require(l_Parent_0.FocusNavigationUtils);
local l_createSignal_0 = v2.createSignal;
local l_shallowEqual_0 = v2.shallowEqual;
local l_getAncestors_0 = v2.getAncestors;
local l_mockableWarn_0 = v2.mockableWarn;
local v7 = require(script.Parent.isValidFocusTarget);
local _ = require(script.Parent.types);
local v9 = {};
v9.__index = v9;
v9.new = function(v10)
    local v11, v12 = l_createSignal_0({});
    local v13, v14 = l_createSignal_0(v10.getSelection());
    local v15 = setmetatable({
        _eventPropagationService = v1.new(),
        _engineInterface = v10,
        _eventMapByInstance = setmetatable({}, {
            __mode = "k"
        }),
        _focusBehaviorByInstance = setmetatable({}, {
            __mode = "k"
        }),
        _engineEventConnections = {},
        _silentFocusTarget = nil,
        _silentBlurTarget = nil,
        _fireActiveEventMapSignal = v12,
        _fireFocusedGuiObjectSignal = v14,
        activeEventMap = v11,
        focusedGuiObject = v13
    }, v9);
    v15:_connectToInputEvents();
    return v15;
end;
v9._fireInputEvent = function(v16, v17, v18, v19)
    local v20 = v16.activeEventMap:getValue()[v18.KeyCode];
    if v20 then
        v16._eventPropagationService:propagateEvent(v17, v20, {
            Delta = v18.Delta,
            KeyCode = v18.KeyCode,
            Position = v18.Position,
            UserInputState = v18.UserInputState,
            UserInputType = v18.UserInputType,
            wasProcessed = v19
        }, false);
    end;
end;
v9._connectToInputEvents = function(v21)
    local function v25(v22, v23)
        local v24 = v21._engineInterface.getSelection();
        if v24 then
            v21:_fireInputEvent(v24, v22, v23);
        end;
    end;
    table.insert(v21._engineEventConnections, v21._engineInterface.InputBegan:Connect(v25));
    table.insert(v21._engineEventConnections, v21._engineInterface.InputChanged:Connect(v25));
    table.insert(v21._engineEventConnections, v21._engineInterface.InputEnded:Connect(v25));
    table.insert(v21._engineEventConnections, v21._engineInterface.SelectionChanged:Connect(function()
        local v26 = v21.focusedGuiObject:getValue();
        local v27 = v21._engineInterface.getSelection();
        if v26 then
            v21._eventPropagationService:propagateEvent(v26, "blur", nil, v21._silentBlurTarget == v26);
            v21._silentBlurTarget = nil;
        end;
        v21._fireFocusedGuiObjectSignal(v27);
        if v27 then
            v21._eventPropagationService:propagateEvent(v27, "focus", nil, v27 == v21._silentFocusTarget);
            v21._silentFocusTarget = nil;
        end;
        v21:_updateActiveEventMap(v26);
    end));
end;
v9._cancelHandler = function(v28, v29, v30)
    if v30 ~= "blur" and v30 ~= "focus" then
        v28._eventPropagationService:propagateEvent(v29, v30, {
            KeyCode = Enum.KeyCode.Unknown,
            UserInputType = Enum.UserInputType.None,
            UserInputState = Enum.UserInputState.Cancel
        }, false);
    end;
end;
v9._updateActiveEventMap = function(v31, v32)
    local v33 = {};
    local v34 = v31._engineInterface.getSelection();
    if v34 then
        local v35 = l_getAncestors_0(v34);
        local v36 = {};
        for v37 = #v35, 1, -1 do
            local v38 = v35[v37];
            local v39 = v31._eventMapByInstance[v38];
            if v39 then
                for v40, v41 in v39, nil, nil do
                    v36[v40] = v41;
                    v33[v40] = nil;
                end;
            end;
            local v42 = v31._eventPropagationService:getRegisteredEventHandlers(v38);
            if v42 then
                for v43, v44 in v36, nil, nil do
                    if v42[v44] then
                        v33[v43] = v44;
                    end;
                end;
            end;
        end;
    end;
    local v45 = v31.activeEventMap:getValue();
    if not l_shallowEqual_0(v45, v33) then
        if v32 then
            for v46, v47 in v45, nil, nil do
                if not v33[v46] then
                    v31:_cancelHandler(v32, v47);
                end;
            end;
        end;
        v31._fireActiveEventMapSignal(v33);
    end;
end;
v9.registerEventMap = function(v48, v49, v50)
    local v51 = v48._eventMapByInstance[v49] or {};
    for v52, v53 in v50, nil, nil do
        if not (not (v51[v52] and v51[v52] ~= v53) or not _G.__DEV__) then
            l_mockableWarn_0(string.format("New event will replace existing registered event mapped to %s:" .. "\n\t     new event: %s\n\texisting event: %s", tostring(v52), v53, v51[v52]));
        end;
        v51[v52] = v53;
    end;
    v48._eventMapByInstance[v49] = v51;
    v48:_updateActiveEventMap();
end;
v9.deregisterEventMap = function(v54, v55, v56)
    local v57 = v54._eventMapByInstance[v55] or {};
    for v58, v59 in v56, nil, nil do
        if v57[v58] == v59 then
            v57[v58] = nil;
        elseif _G.__DEV__ then
            l_mockableWarn_0(string.format("Cannot deregister non-matching event input %s:" .. "\n\t  provided event: %s\n\tregistered event: %s", tostring(v58), v59, v57[v58]));
        end;
    end;
    v54._eventMapByInstance[v55] = v57;
    v54:_updateActiveEventMap(v54.focusedGuiObject:getValue());
end;
v9.registerEventHandler = function(v60, v61, v62, v63, v64)
    v60._eventPropagationService:registerEventHandler(v61, v62, v63, v64);
    v60:_updateActiveEventMap();
end;
v9.deregisterEventHandler = function(v65, v66, v67, v68, v69)
    v65:_cancelHandler(v66, v67);
    v65._eventPropagationService:deregisterEventHandler(v66, v67, v68, v69);
    v65:_updateActiveEventMap(v65.focusedGuiObject:getValue());
end;
v9.registerEventHandlers = function(v70, v71, v72)
    v70._eventPropagationService:registerEventHandlers(v71, v72);
    v70:_updateActiveEventMap();
end;
v9.deregisterEventHandlers = function(v73, v74, v75)
    for v76, _ in v75, nil, nil do
        v73:_cancelHandler(v74, v76);
    end;
    v73._eventPropagationService:deregisterEventHandlers(v74, v75);
    v73:_updateActiveEventMap(v73.focusedGuiObject:getValue());
end;
v9.registerFocusBehavior = function(v78, v79, v80)
    if _G.__DEV__ then
        local v81 = v78._focusBehaviorByInstance[v79];
        if v81 ~= nil then
            l_mockableWarn_0(string.format("New focus behavior will replace existing registered focus behavior:" .. "\n\t     new behavior: %s\n\texisting behavior: %s", tostring(v80), (tostring(v81.behavior))));
        end;
    end;
    v78._focusBehaviorByInstance[v79] = {
        behavior = v80,
        connection = v79.SelectionChanged:Connect(function(v82, v83, v84)
            if not (not v84 or not v82 and not v84:IsDescendantOf(v79)) then
                if v83 and v83:IsDescendantOf(v79) then
                    if v80.onDescendantFocusChanged then
                        v80.onDescendantFocusChanged(v84);
                    end;
                else
                    local v85 = false;
                    for _, v87 in v80.getTargets() do
                        if v7(v87) then
                            v78:focusGuiObject(v87, false);
                            v85 = true;
                            break;
                        end;
                    end;
                    if not (v85 or not v80.onDescendantFocusChanged) then
                        v80.onDescendantFocusChanged(v84);
                        return ;
                    end;
                end;
            end;
        end)
    };
end;
v9.deregisterFocusBehavior = function(v88, v89, v90)
    local v91 = v88._focusBehaviorByInstance[v89];
    if _G.__DEV__ then
        if not v91 then
            l_mockableWarn_0(string.format("Cannot deregister an unregistered focus behavior:" .. "\n\t  provided behavior: %s", (tostring(v90))));
        end;
        if v91 and v91.behavior ~= v90 then
            l_mockableWarn_0(string.format("Cannot deregister non-matching focus behavior:" .. "\n\t  provided behavior: %s\n\tregistered behavior: %s", tostring(v90), (tostring(v91.behavior))));
        end;
    end;
    if v91 then
        v91.connection:Disconnect();
        v88._focusBehaviorByInstance[v89] = nil;
    end;
end;
v9.focusGuiObject = function(v92, v93, v94)
    if not v94 then
        v92._silentBlurTarget = nil;
        v92._silentFocusTarget = nil;
    else
        v92._silentBlurTarget = v92._engineInterface.getSelection();
        v92._silentFocusTarget = v93;
    end;
    v92._engineInterface.setSelection(v93);
end;
v9.teardown = function(v95)
    for _, v97 in v95._engineEventConnections, nil, nil do
        v97:Disconnect();
    end;
    for _, v99 in v95._focusBehaviorByInstance, nil, nil do
        v99.connection:Disconnect();
    end;
end;
return v9;


local _ = require(script.Parent.EventPropagation);
local v1 = require(script.FocusNavigationService);
local v2 = require(script.isValidFocusTarget);
local v3 = require(script.EngineInterface);
local _ = require(script.types);
return {
    isValidFocusTarget = v2,
    FocusNavigationService = v1,
    EngineInterface = {
        CoreGui = v3.CoreGui,
        PlayerGui = v3.PlayerGui
    }
};


return function(v0)
    if v0 then
        if v0:IsA("GuiBase2d") then
            if v0:FindFirstAncestorWhichIsA("LayerCollector") then
                if v0:FindFirstAncestorWhichIsA("BasePlayerGui") then
                    return true;
                else
                    return false, "provided Instance is not a descendant of a BasePlayerGui like PlayerGui or CoreGui";
                end;
            else
                return false, "provided Instance is not a descendant of a LayerCollector like a ScreenGui or SurfaceGui";
            end;
        else
            return false, string.format("provided Instance is of class %s, which is not a GuiBase2d", v0.ClassName);
        end;
    else
        return false, "`nil` value provided to isValidFocusTarget";
    end;
end;


return function(v0)
    local v1 = {};
    local v2 = {};
    local l_v0_0 = v0;
    local v4 = false;
    return {
        subscribe = function(_, v6)
            local v7 = {
                callback = v6,
                unsubscribed = false
            };
            if not v4 or v1[v6] then
                v1[v6] = v7;
            else
                v2[v6] = v7;
            end;
            return {
                unsubscribe = function(_)
                    v7.unsubscribed = true;
                    v1[v6] = nil;
                    v2[v6] = nil;
                end
            };
        end,
        getValue = function(_)
            return l_v0_0;
        end
    }, function(v10)
        l_v0_0 = v10;
        v4 = true;
        for v11, v12 in v1, nil, nil do
            if not (v12.unsubscribed or v2[v11]) then
                v11(v10);
            end;
        end;
        v4 = false;
        for v13, v14 in v2, nil, nil do
            v1[v13] = v14;
        end;
        table.clear(v2);
    end;
end;


return function(v0)
    local v1 = {
        v0
    };
    local l_v0_0 = v0;
    while l_v0_0.Parent do
        table.insert(v1, l_v0_0.Parent);
        l_v0_0 = l_v0_0.Parent;
    end;
    return v1;
end;


return {
    createSignal = require(script.createSignal),
    shallowEqual = require(script.shallowEqual),
    getAncestors = require(script.getAncestors),
    mockableWarn = require(script.mockableWarn),
    waitForEvents = require(script.waitForEvents)
};


local l_warn_0 = warn;
return (setmetatable({
    mock = function(v1)
        l_warn_0 = v1;
    end,
    unmock = function()
        l_warn_0 = warn;
    end
}, {
    __call = function(_, ...)
        l_warn_0(...);
    end
}));


return function(v0, v1)
    for v2, v3 in v0, nil, nil do
        if v1[v2] ~= v3 then
            return false;
        end;
    end;
    for v4, v5 in v1, nil, nil do
        if v0[v4] ~= v5 then
            return false;
        end;
    end;
    return true;
end;


return function()
    task.defer(coroutine.running());
    coroutine.yield();
end;


local l_inspect_0 = require(script.Parent.Parent.Parent.LuauPolyfill).util.inspect;
return function(...)
    local v1 = {};
    for v2 = 1, select("#", ...) do
        v1[v2] = l_inspect_0((select(v2, ...)));
    end;
    print(table.unpack(v1));
end;


local l_Parent_0 = script.Parent.Parent;
local l_inspect_0 = require(l_Parent_0.Parent.LuauPolyfill).util.inspect;
local v2 = require(l_Parent_0.luaUtils.arrayContains);
return function(v3, v4, v5)
    local v6 = v2(v3, v4, v5);
    local v7 = "";
    if not v6 then
        v7 = "received tbl: " .. l_inspect_0(v4) .. " expected item to be in table: " .. l_inspect_0(v3);
    end;
    return {
        pass = v6,
        message = v7
    };
end;


local v0 = require(script.Parent.Parent.luaUtils.deepEqual);
local v1 = require(script.Parent.Parent.luaUtils.deepContains);
return function(v2, v3, v4)
    if #v2 == #v3 then
        for v5 = 1, #v2 do
            local v6 = nil;
            local v7 = nil;
            if not v4 then
                local v8, v9 = v0(v2[v5], v3[v5]);
                v6 = v8;
                v7 = v9;
                if v6 then
                    continue;
                end;
            else
                local v10, v11 = v1(v2[v5], v3[v5]);
                v6 = v10;
                v7 = v11;
                if v6 then
                    continue;
                end;
            end;
            return {
                pass = false,
                message = v7:gsub("{1}", ("{1}[%s]"):format((tostring(v5)))):gsub("{2}", ("{2}[%s]"):format((tostring(v5))))
            };
        end;
        return {
            pass = true,
            message = ""
        };
    else
        return {
            pass = false,
            message = ("Expected array length %s / got length %s"):format(tostring(#v2), (tostring(#v3)))
        };
    end;
end;


local l_Number_0 = require(script.Parent.Parent.Parent.LuauPolyfill).Number;
return function(v1)
    local v2 = l_Number_0.isNaN(v1);
    if not v2 then
        return {
            pass = false,
            message = ("expected: NaN (number), got: \"%s\" (%s) instead"):format(tostring(v1), (typeof(v1)))
        };
    else
        return {
            pass = v2
        };
    end;
end;


local v0 = require(script.Parent.toArrayContains);
return function(v1, v2)
    return v0(v2, v1);
end;


local v0 = require(script.Parent.Parent.luaUtils.deepEqual);
return function(v1, v2)
    local v3, v4 = v0(v1, v2);
    local _ = nil;
    return {
        pass = v3,
        message = if v3 then ("expected: not %s\nreceived:     %s"):format(tostring(v2), (tostring(v1))) else v4:gsub("{1}", "received"):gsub("{2}", "expected")
    };
end;


local l_inspect_0 = require(script.Parent.Parent.Parent.LuauPolyfill).util.inspect;
local v1 = require(script.Parent.Parent.luaUtils.arrayContains);
return function(v2, v3, v4)
    if #v2 == #v3 then
        for _, v6 in ipairs(v3) do
            if not v1(v2, v6, v4) then
                return {
                    pass = false,
                    message = ("Expected item %s to be in Array %s"):format(l_inspect_0(v6), l_inspect_0(v2))
                };
            end;
        end;
        return {
            pass = true,
            message = ""
        };
    else
        return {
            pass = false,
            message = ("Received array length %s / expected length %s"):format(tostring(#v2), (tostring(#v3)))
        };
    end;
end;


local l_inspect_0 = require(script.Parent.Parent.Parent.LuauPolyfill).util.inspect;
local v1 = require(script.Parent.Parent.luaUtils.deepContains);
return function(v2, v3)
    local v4 = v1(v2, v3);
    local v5 = "";
    if not v4 then
        v5 = "received tbl: " .. l_inspect_0(v3) .. " expected item to be in table: " .. l_inspect_0(v2);
    end;
    return {
        pass = v4,
        message = v5
    };
end;


return function(v0, v1, v2)
    local l_status_0, l_result_0 = pcall(v0);
    if l_status_0 then
        return {
            pass = false,
            message = "Expected function to throw"
        };
    elseif typeof(v1) == "string" then
        local v5 = nil;
        if typeof(l_result_0) == "string" then
            v5 = l_result_0;
        elseif typeof(l_result_0) == "table" and typeof(l_result_0.message) == "string" then
            v5 = l_result_0.message;
        end;
        if v5 == nil then
            return {
                pass = false,
                message = string.format("Matcher Error:\n" .. "Expected function to throw a string or an Error " .. "object, but it threw an error of type '%s'.\nYou " .. "may wish to use `pcall` instead and run custom " .. "expectations on the returned error", (typeof(l_result_0)))
            };
        elseif v5:find(v1, 1, not v2) ~= nil then
            return {
                pass = true,
                message = string.format("Expected function not to throw with '%s'", v1)
            };
        else
            return {
                pass = false,
                message = string.format("Expected function to throw with\n'%s'\nbut threw\n'%s'\ninstead", v1, v5)
            };
        end;
    else
        return {
            pass = true,
            message = "Expected function not to throw"
        };
    end;
end;


return "query queryName($foo: ComplexType, $site: Site = MOBILE) @onQuery {\n  whoever123is: node(id: [123, 456]) {\n    id\n    ... on User @onInlineFragment {\n      field2 {\n        id\n        alias: field1(first: 10, after: $foo) @include(if: $foo) {\n          id\n          ...frag @onFragmentSpread\n        }\n      }\n    }\n    ... @skip(unless: $foo) {\n      id\n    }\n    ... {\n      id\n    }\n  }\n}\n\nmutation likeStory @onMutation {\n  like(story: 123) @onField {\n    story {\n      id @onField\n    }\n  }\n}\n\nsubscription StoryLikeSubscription($input: StoryLikeSubscribeInput)\n  @onSubscription {\n  storyLikeSubscribe(input: $input) {\n    story {\n      likers {\n        count\n      }\n      likeSentence {\n        text\n      }\n    }\n  }\n}\n\nfragment frag on Friend @onFragmentDefinition {\n  foo(\n    size: $size\n    bar: $b\n    obj: {\n      key: \"value\"\n      block: \"\"\"\n      block string uses \\\"\"\"\n      \"\"\"\n    }\n  )\n}\n\n{\n  unnamed(truthy: true, falsy: false, nullish: null)\n  query\n}\n\nquery {\n  __typename\n}\n";


local v0 = require(script.Parent.Parent.Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_String_0 = v0.String;
dedent = function(v3, ...)
    local v4 = {
        ...
    };
    local v5 = "";
    if not l_Array_0.isArray(v3) then
        v5 = v3;
    else
        for v6 = 1, #v3 do
            v5 = v5 .. v3[v6];
            if v6 <= #v4 then
                v5 = v5 .. v4[v6];
            end;
        end;
    end;
    local v7 = removeTrailingSpacesAndTabs(removeLeadingNewLines(v5));
    local v8 = "";
    for v9 = 1, string.len(v7) do
        local v10 = string.sub(v7, v9, v9);
        if not (v10 ~= " ") or v10 == "\t" then
            v8 = v8 .. v10;
        else
            break;
        end;
    end;
    return removeCommonIndent(v7, v8);
end;
removeLeadingNewLines = function(v11)
    local v12 = l_String_0.findOr(v11, {
        "\n*"
    });
    if v12 ~= nil and v12.index == 1 then
        v11 = string.sub(v11, string.len(v12.match) + 1);
    end;
    return v11;
end;
removeTrailingSpacesAndTabs = function(v13)
    local v14 = nil;
    local v15 = nil;
    local v16 = 1;
    while true do
        v14 = l_String_0.findOr(v13, {
            " +",
            "\t+"
        }, v16);
        if v14 ~= nil then
            v15 = if v15 ~= nil and v15.index + string.len(v15.match) == v14.index then {
                index = v15.index,
                match = v15.match .. v14.match
            } else v14;
            v16 = v14.index + string.len(v14.match);
        end;
        if not (v14 ~= nil and string.len(v13) >= v16) then
            break;
        end;
    end;
    if v15 ~= nil and v15.index + string.len(v15.match) == string.len(v13) + 1 then
        return (string.sub(v13, 1, v15.index - 1));
    else
        return v13;
    end;
end;
removeCommonIndent = function(v17, v18)
    return (string.gsub(string.gsub(v17, v18, "", 1), "\n" .. v18, "\n"));
end;
return {
    dedent = dedent
};


return {
    genFuzzStrings = function(v0)
        return coroutine.wrap(function()
            local l_allowedChars_0 = v0.allowedChars;
            local l_maxLength_0 = v0.maxLength;
            local v3 = #l_allowedChars_0;
            local v4 = 0;
            for v5 = 1, l_maxLength_0 do
                v4 = v4 + v3 ^ v5;
            end;
            coroutine.yield("");
            for v6 = 0, v4 - 1 do
                local v7 = "";
                local l_v6_0 = v6;
                while l_v6_0 >= 0 do
                    local v9 = l_v6_0 % v3;
                    v7 = l_allowedChars_0[v9 + 1] .. v7;
                    l_v6_0 = (l_v6_0 - v9) / v3 - 1;
                end;
                coroutine.yield(v7);
            end;
        end);
    end
};


local l_HttpService_0 = game:GetService("HttpService");
local function _(v1)
    v1 = string.gsub(v1, "\n\"", "\n`");
    if v1:sub(1, 1) == "\"" then
        return "`" .. string.sub(v1, 2);
    else
        return v1;
    end;
end;
local function _(v3)
    v3 = string.gsub(v3, "\"\n", "`\n");
    if v3:sub(-1) == "\"" then
        return string.sub(v3, 1, -2) .. "`";
    else
        return v3;
    end;
end;
return {
    inspectStr = function(v5)
        if v5 == nil then
            return "nil";
        else
            local v6 = string.gsub(l_HttpService_0:JSONEncode(v5), "\n\"", "\n`");
            local v7 = string.gsub(if v6:sub(1, 1) == "\"" then "`" .. string.sub(v6, 2) else v6, "\"\n", "`\n");
            return (string.gsub(string.gsub(if v7:sub(-1) == "\"" then string.sub(v7, 1, -2) .. "`" else v7, "\\\"", "\""), "\\\\", "\\"));
        end;
    end
};


return {
    kitchenSinkQuery = "\nquery queryName($foo: ComplexType, $site: Site = MOBILE) @onQuery {\n  whoever123is: node(id: [123, 456]) {\n    id\n    ... on User @onInlineFragment {\n      field2 {\n        id\n        alias: field1(first: 10, after: $foo) @include(if: $foo) {\n          id\n          ...frag @onFragmentSpread\n        }\n      }\n    }\n    ... @skip(unless: $foo) {\n      id\n    }\n    ... {\n      id\n    }\n  }\n}\n\nmutation likeStory @onMutation {\n  like(story: 123) @onField {\n    story {\n      id @onField\n    }\n  }\n}\n\nsubscription StoryLikeSubscription($input: StoryLikeSubscribeInput)\n  @onSubscription {\n  storyLikeSubscribe(input: $input) {\n    story {\n      likers {\n        count\n      }\n      likeSentence {\n        text\n      }\n    }\n  }\n}\n\nfragment frag on Friend @onFragmentDefinition {\n  foo(\n    size: $size\n    bar: $b\n    obj: {\n      key: \"value\"\n      block: \"\"\"\n      block string uses \\\"\"\"\n      \"\"\"\n    }\n  )\n}\n\n{\n  unnamed(truthy: true, falsy: false, nullish: null)\n  query\n}\n\nquery {\n  __typename\n}\n"
};


return {
    kitchenSinkSDL = "\n\"\"\"This is a description of the schema as a whole.\"\"\"\nschema {\n  query: QueryType\n  mutation: MutationType\n}\n\n\"\"\"\nThis is a description\nof the `Foo` type.\n\"\"\"\ntype Foo implements Bar & Baz & Two {\n  \"Description of the `one` field.\"\n  one: Type\n  \"\"\"\n  This is a description of the `two` field.\n  \"\"\"\n  two(\n    \"\"\"\n    This is a description of the `argument` argument.\n    \"\"\"\n    argument: InputType Type\n  \"\"\"This is a description of the `three` field.\"\"\"\n  three(argument: InputType, other: String): Int\n  four(argument: String = \"string\"): String\n  five(argument: [String] = [\"string\", \"string\"]): String\n  six(argument: InputType = {key: \"value\"}): Type\n  seven(argument: Int = null): Type\n}\n\ntype AnnotatedObject @onObject(arg: \"value\") {\n  annotatedField(arg: Type = \"default\" @onArgumentDefinition): Type @onField\n}\n\ntype UndefinedType\n\nextend type Foo {\n  seven(argument: [String]): Type\n}\n\nextend type Foo @onType\n\ninterface Bar {\n  one: Type\n  four(argument: String = \"string\"): String\n}\n\ninterface AnnotatedInterface @onInterface {\n  annotatedField(arg: Type @onArgumentDefinition): Type @onField\n}\n\ninterface UndefinedInterface\n\nextend interface Bar implements Two {\n  two(argument: InputType Type\n}\n\nextend interface Bar @onInterface\n\ninterface Baz implements Bar & Two {\n  one: Type\n  two(argument: InputType Type\n  four(argument: String = \"string\"): String\n}\n\nunion Feed =\n  | Story\n  | Article\n  | Advert\n\nunion AnnotatedUnion @onUnion = A | B\n\nunion AnnotatedUnionTwo @onUnion = | A | B\n\nunion UndefinedUnion\n\nextend union Feed = Photo | Video\n\nextend union Feed @onUnion\n\nscalar CustomScalar\n\nscalar AnnotatedScalar @onScalar\n\nextend scalar CustomScalar @onScalar\n\nenum Site {\n  \"\"\"\n  This is a description of the `DESKTOP` value\n  \"\"\"\n  DESKTOP\n\n  \"\"\"This is a description of the `MOBILE` value\"\"\"\n  MOBILE\n\n  \"This is a description of the `WEB` value\"\n  WEB\n}\n\nenum AnnotatedEnum @onEnum {\n  ANNOTATED_VALUE @onEnumValue\n  OTHER_VALUE\n}\n\nenum UndefinedEnum\n\nextend enum Site {\n  VR\n}\n\nextend enum Site @onEnum\n\ninput InputType {\n  key: String Int = 42\n}\n\ninput AnnotatedInput @onInputObject {\n  annotatedField: Type @onInputFieldDefinition\n}\n\ninput UndefinedInput\n\nextend input InputType {\n  other: Float = 1.23e4 @onInputFieldDefinition\n}\n\nextend input InputType @onInputObject\n\n\"\"\"\nThis is a description of the `@skip` directive\n\"\"\"\ndirective @skip(\n  \"\"\"This is a description of the `if` argument\"\"\"\n  if: Boolean Boolean Boolean String SubscriptionType\n}\n"
};


local v0 = require(script.Parent.Parent.Parent.Promise);
return function()
    return v0.defer(function(v1)
        v1(nil);
    end);
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = require(l_Parent_0.LuauPolyfill).Array;
local v3 = require(l_Parent_0.Promise);
local v4 = {
    type = "Human",
    id = "1000",
    name = "Luke Skywalker",
    friends = {
        "1002",
        "1003",
        "2000",
        "2001"
    },
    appearsIn = {
        4,
        5,
        6
    },
    homePlanet = "Tatooine"
};
local v5 = {
    type = "Human",
    id = "1001",
    name = "Darth Vader",
    friends = {
        "1004"
    },
    appearsIn = {
        4,
        5,
        6
    },
    homePlanet = "Tatooine"
};
local v6 = {
    type = "Human",
    id = "1002",
    name = "Han Solo",
    friends = {
        "1000",
        "1003",
        "2001"
    },
    appearsIn = {
        4,
        5,
        6
    }
};
local v7 = {
    type = "Human",
    id = "1003",
    name = "Leia Organa",
    friends = {
        "1000",
        "1002",
        "2000",
        "2001"
    },
    appearsIn = {
        4,
        5,
        6
    },
    homePlanet = "Alderaan"
};
local v8 = {
    type = "Human",
    id = "1004",
    name = "Wilhuff Tarkin",
    friends = {
        "1001"
    },
    appearsIn = {
        4
    }
};
local v9 = {
    [v4.id] = v4,
    [v5.id] = v5,
    [v6.id] = v6,
    [v7.id] = v7,
    [v8.id] = v8
};
local v10 = {
    type = "Droid",
    id = "2000",
    name = "C-3PO",
    friends = {
        "1000",
        "1002",
        "1003",
        "2001"
    },
    appearsIn = {
        4,
        5,
        6
    },
    primaryFunction = "Protocol"
};
local v11 = {
    type = "Droid",
    id = "2001",
    name = "R2-D2",
    friends = {
        "1000",
        "1002",
        "1003"
    },
    appearsIn = {
        4,
        5,
        6
    },
    primaryFunction = "Astromech"
};
local v12 = {
    [v10.id] = v10,
    [v11.id] = v11
};
local function v14(v13)
    return v3.resolve(v9[v13] or v12[v13]);
end;
return {
    getHuman = function(v15)
        return v9[v15];
    end,
    getCharacter = v14,
    getDroid = function(v16)
        return v12[v16];
    end,
    getFriends = function(v17)
        return l_Array_0.map(v17.friends, function(v18)
            return v14(v18);
        end);
    end,
    getHero = function(v19)
        if v19 == 5 then
            return v4;
        else
            return v11;
        end;
    end
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Parent.LuauPolyfill);
local l_Error_0 = v1.Error;
local l_Map_0 = v1.Map;
local _ = require(l_Parent_0.jsutils.invariant).invariant;
local l_GraphQLSchema_0 = require(l_Parent_0.type.schema).GraphQLSchema;
local l_GraphQLString_0 = require(l_Parent_0.type.scalars).GraphQLString;
local v7 = require(l_Parent_0.type.definition);
local l_GraphQLList_0 = v7.GraphQLList;
local l_GraphQLNonNull_0 = v7.GraphQLNonNull;
local l_GraphQLEnumType_0 = v7.GraphQLEnumType;
local l_GraphQLInterfaceType_0 = v7.GraphQLInterfaceType;
local l_GraphQLObjectType_0 = v7.GraphQLObjectType;
local v13 = require(script.Parent.starWarsData);
local l_getFriends_0 = v13.getFriends;
local l_getHero_0 = v13.getHero;
local l_getHuman_0 = v13.getHuman;
local l_getDroid_0 = v13.getDroid;
local v18 = nil;
local v19 = nil;
local v20 = nil;
local v21 = l_GraphQLEnumType_0.new({
    name = "Episode",
    description = "One of the films in the Star Wars Trilogy",
    values = l_Map_0.new({
        {
            "NEW_HOPE",
            {
                value = 4,
                description = "Released in 1977."
            }
        },
        {
            "EMPIRE",
            {
                value = 5,
                description = "Released in 1980."
            }
        },
        {
            "JEDI",
            {
                value = 6,
                description = "Released in 1983."
            }
        }
    })
});
v18 = l_GraphQLInterfaceType_0.new({
    name = "Character",
    description = "A character in the Star Wars Trilogy",
    fields = function()
        return l_Map_0.new({
            {
                "id",
                {
                    type = l_GraphQLNonNull_0.new(l_GraphQLString_0),
                    description = "The id of the character."
                }
            },
            {
                "name",
                {
                    type = l_GraphQLString_0,
                    description = "The name of the character."
                }
            },
            {
                "friends",
                {
                    type = l_GraphQLList_0.new(v18),
                    description = "The friends of the character, or an empty list if they have none."
                }
            },
            {
                "appearsIn",
                {
                    type = l_GraphQLList_0.new(v21),
                    description = "Which movies they appear in."
                }
            },
            {
                "secretBackstory",
                {
                    type = l_GraphQLString_0,
                    description = "All secrets about their past."
                }
            }
        });
    end,
    resolveType = function(v22)
        if v22.type == "Human" then
            return v19.name;
        elseif v22.type == "Droid" then
            return v20.name;
        else
            assert(false);
            return ;
        end;
    end
});
v19 = l_GraphQLObjectType_0.new({
    name = "Human",
    description = "A humanoid creature in the Star Wars universe.",
    fields = function()
        return l_Map_0.new({
            {
                "id",
                {
                    type = l_GraphQLNonNull_0.new(l_GraphQLString_0),
                    description = "The id of the human."
                }
            },
            {
                "name",
                {
                    type = l_GraphQLString_0,
                    description = "The name of the human."
                }
            },
            {
                "friends",
                {
                    type = l_GraphQLList_0.new(v18),
                    description = "The friends of the human, or an empty list if they have none.",
                    resolve = function(v23)
                        return l_getFriends_0(v23);
                    end
                }
            },
            {
                "appearsIn",
                {
                    type = l_GraphQLList_0.new(v21),
                    description = "Which movies they appear in."
                }
            },
            {
                "homePlanet",
                {
                    type = l_GraphQLString_0,
                    description = "The home planet of the human, or null if unknown."
                }
            },
            {
                "secretBackstory",
                {
                    type = l_GraphQLString_0,
                    description = "Where are they from and how they came to be who they are.",
                    resolve = function()
                        error(l_Error_0("secretBackstory is secret."));
                    end
                }
            }
        });
    end,
    interfaces = {
        v18
    }
});
v20 = l_GraphQLObjectType_0.new({
    name = "Droid",
    description = "A mechanical creature in the Star Wars universe.",
    fields = function()
        return l_Map_0.new({
            {
                "id",
                {
                    type = l_GraphQLNonNull_0.new(l_GraphQLString_0),
                    description = "The id of the droid."
                }
            },
            {
                "name",
                {
                    type = l_GraphQLString_0,
                    description = "The name of the droid."
                }
            },
            {
                "friends",
                {
                    type = l_GraphQLList_0.new(v18),
                    description = "The friends of the droid, or an empty list if they have none.",
                    resolve = function(v24)
                        return l_getFriends_0(v24);
                    end
                }
            },
            {
                "appearsIn",
                {
                    type = l_GraphQLList_0.new(v21),
                    description = "Which movies they appear in."
                }
            },
            {
                "secretBackstory",
                {
                    type = l_GraphQLString_0,
                    description = "Construction date and the name of the designer.",
                    resolve = function()
                        error(l_Error_0("secretBackstory is secret."));
                    end
                }
            },
            {
                "primaryFunction",
                {
                    type = l_GraphQLString_0,
                    description = "The primary function of the droid."
                }
            }
        });
    end,
    interfaces = {
        v18
    }
});
return {
    StarWarsSchema = l_GraphQLSchema_0.new({
        query = l_GraphQLObjectType_0.new({
            name = "Query",
            fields = function()
                return l_Map_0.new({
                    {
                        "hero",
                        {
                            type = v18,
                            args = {
                                episode = {
                                    description = "If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode.",
                                    type = v21
                                }
                            },
                            resolve = function(_, v26)
                                return l_getHero_0(v26.episode);
                            end
                        }
                    },
                    {
                        "human",
                        {
                            type = v19,
                            args = {
                                id = {
                                    description = "id of the human",
                                    type = l_GraphQLNonNull_0.new(l_GraphQLString_0)
                                }
                            },
                            resolve = function(_, v28)
                                return l_getHuman_0(v28.id);
                            end
                        }
                    },
                    {
                        "droid",
                        {
                            type = v20,
                            args = {
                                id = {
                                    description = "id of the droid",
                                    type = l_GraphQLNonNull_0.new(l_GraphQLString_0)
                                }
                            },
                            resolve = function(_, v30)
                                return l_getDroid_0(v30.id);
                            end
                        }
                    }
                });
            end
        }),
        types = {
            v19,
            v20
        }
    })
};


local l_Parent_0 = script.Parent.Parent;
local l_language_0 = l_Parent_0.language;
local v2 = require(l_Parent_0.Parent.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Error_0 = v2.Error;
local l_Object_0 = v2.Object;
local l_HttpService_0 = game:GetService("HttpService");
local l_isObjectLike_0 = require(l_Parent_0.jsutils.isObjectLike).isObjectLike;
local _ = require(l_language_0.ast);
local _ = require(l_language_0.source);
local l_getLocation_0 = require(l_language_0.location).getLocation;
local v11 = require(l_language_0.printLocation);
local l_printLocation_0 = v11.printLocation;
local l_printSourceLocation_0 = v11.printSourceLocation;
local v14 = nil;
local v15 = nil;
local v16 = setmetatable({}, {
    __index = l_Error_0
});
v16.__index = v16;
v16.__tostring = function(v17)
    return v14(v17);
end;
v16.new = function(v18, v19, v20, v21, v22, v23, v24)
    local v25 = l_Error_0.new(v18);
    v25.name = "GraphQLError";
    v25.originalError = v23;
    v25.nodes = v15(if not l_Array_0.isArray(v19) then if v19 then {
        v19
    } else nil else v19);
    local v26 = {};
    if v25.nodes then
        for _, v28 in ipairs(v25.nodes) do
            local l_loc_0 = v28.loc;
            if l_loc_0 ~= nil then
                table.insert(v26, l_loc_0);
            end;
        end;
    end;
    v26 = v15(v26);
    v25.source = if not v20 then if v26 == nil then nil else v26[1].source else v20;
    v25.positions = if not v21 then if v26 then l_Array_0.map(v26, function(v30)
        return v30.start;
    end) else nil else v21;
    v25.locations = if not not v21 and v20 then l_Array_0.map(v21, function(v31)
        return l_getLocation_0(v20, v31);
    end) else if v26 then l_Array_0.map(v26, function(v32)
        return l_getLocation_0(v32.source, v32.start);
    end) else nil;
    v25.path = v22 or nil;
    local v33 = if v23 then v23.extensions else nil;
    if not (v24 == nil) or not l_isObjectLike_0(v33) then
        v25.extensions = v24 or nil;
    else
        v25.extensions = l_Object_0.assign({}, v33);
    end;
    if not (not v23 or not v23.stack) then
        v25.stack = v23.stack;
    end;
    return (setmetatable(v25, v16));
end;
v16.toString = function(v34)
    return v14(v34);
end;
v16.toJSON = function(v35)
    local v36 = {
        "message"
    };
    if v35.locations ~= nil then
        table.insert(v36, "locations");
    end;
    if v35.path ~= nil then
        table.insert(v36, "path");
    end;
    if v35.extensions ~= nil then
        table.insert(v36, "extensions");
    end;
    return "{" .. l_Array_0.join(l_Array_0.map(v36, function(v37)
        return l_HttpService_0:JSONEncode(v37) .. ":" .. l_HttpService_0:JSONEncode(v35[v37]);
    end), ",") .. "}";
end;
v15 = function(v38)
    if not (v38 ~= nil) or #v38 == 0 then
        return nil;
    else
        return v38;
    end;
end;
v14 = function(v39)
    local l_message_0 = v39.message;
    if v39.nodes ~= nil then
        for v41 = 1, #v39.nodes do
            local v42 = v39.nodes[v41];
            if v42.loc ~= nil then
                l_message_0 = l_message_0 .. "\n\n" .. l_printLocation_0(v42.loc);
            end;
        end;
        return l_message_0;
    else
        if v39.source ~= nil and v39.locations ~= nil then
            for v43 = 1, #v39.locations do
                l_message_0 = l_message_0 .. "\n\n" .. l_printSourceLocation_0(v39.source, v39.locations[v43]);
            end;
        end;
        return l_message_0;
    end;
end;
return {
    printError = v14,
    GraphQLError = v16
};


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.Parent.LuauPolyfill);
local l_devAssert_0 = require(l_Parent_0.jsutils.devAssert).devAssert;
local _ = require(l_Parent_0.language.location);
local _ = require(script.Parent.GraphQLError);
return {
    formatError = function(v5)
        l_devAssert_0(v5, "Received nil error.");
        local v6 = if not not v5.message and string.len(v5.message) > 0 then v5.message else "An unknown error occurred.";
        local l_locations_0 = v5.locations;
        local l_path_0 = v5.path;
        local l_extensions_0 = v5.extensions;
        return not not l_extensions_0 and {
            message = v6,
            locations = l_locations_0,
            path = l_path_0,
            extensions = l_extensions_0
        } or {
            message = v6,
            locations = l_locations_0,
            path = l_path_0
        };
    end
};


local v0 = require(script.GraphQLError);
return {
    GraphQLError = v0.GraphQLError,
    printError = v0.printError,
    syntaxError = require(script.syntaxError).syntaxError,
    locatedError = require(script.locatedError).locatedError,
    formatError = require(script.formatError).formatError
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Parent.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Error_0 = v2.Error;
local l_instanceof_0 = v2.instanceof;
local l_inspect_0 = require(l_Parent_1.jsutils.inspect).inspect;
local _ = require(l_Parent_1.language.ast);
local l_GraphQLError_0 = require(l_Parent_0.GraphQLError).GraphQLError;
return {
    locatedError = function(v9, v10, v11)
        local v12 = nil;
        v12 = if not l_instanceof_0(v9, l_Error_0) then if (typeof(v9) == "table" and typeof(v9.message) == "string") and v9.stack ~= nil then l_Error_0.new(v9.message) else if typeof(v9) == "table" and typeof(v9.error) == "string" then l_Error_0.new("Unexpected error value: " .. l_inspect_0(v9.error)) else l_Error_0.new("Unexpected error value: " .. l_inspect_0(v9)) else v9;
        if not l_Array_0.isArray(v12.path) then
            return (l_GraphQLError_0.new(v12.message, v12.nodes or v10, v12.source, v12.positions, v11, v12));
        else
            return v12;
        end;
    end
};


local l_GraphQLError_0 = require(script.Parent.GraphQLError).GraphQLError;
return {
    syntaxError = function(v1, v2, v3)
        return l_GraphQLError_0.new("Syntax Error: " .. v3, nil, v1, {
            v2
        });
    end
};