local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_console_0 = v1.console;
local l_setTimeout_0 = v1.setTimeout;
local v4 = require(l_Parent_0.Promise);
local l_getRelativePath_0 = require(l_Parent_0.RobloxShared).getRelativePath;
local v6 = {};
local v7 = require(l_Parent_0.ChalkLua);
local v8 = require(l_Parent_0.JestConsole);
local l_BufferedConsole_0 = v8.BufferedConsole;
local l_CustomConsole_0 = v8.CustomConsole;
local l_NullConsole_0 = v8.NullConsole;
local l_getConsoleOutput_0 = v8.getConsoleOutput;
local _ = require(l_Parent_0.JestEnvironment);
local _ = require(l_Parent_0.JestTestResult);
local _ = require(l_Parent_0.JestTypes);
local v16 = require(l_Parent_0.JestUtil);
local l_ErrorWithStack_0 = v16.ErrorWithStack;
local l_setGlobal_0 = v16.setGlobal;
local _ = require(script.Parent.types);
local l_Writeable_0 = require(l_Parent_0.RobloxShared).Writeable;
local _ = function(v21, _)
    local function v23(_, _, v26)
        local _ = l_ErrorWithStack_0.new(("%s\nAttempted to log \"%s\"."):format(v7.red(("%s Did you forget to wait for something async in your test?"):format(v7.bold("Cannot log after tests are done."))), v26), v23);
    end;
    v21._log = v23;
end;
local _ = function(v29, v30, v31, _, _, v34, v35)
    return v4.resolve():andThen(function()
        local l_testEnvironment_0 = v31.testEnvironment;
        local v37 = require(l_testEnvironment_0);
        local l_runner_0 = require(l_Parent_0.JestCircus).runner;
        local v39 = require(l_Parent_0.JestRuntime);
        local v40 = l_Writeable_0.new();
        local function v43(v41, v42)
            return l_getConsoleOutput_0(l_BufferedConsole_0.write({}, v41, v42, 4), v31, v30);
        end;
        local v44 = nil;
        v44 = if not v30.silent then if v30.verbose then l_CustomConsole_0.new(v40, v40, v43) else l_BufferedConsole_0.new() else l_NullConsole_0.new(v40, v40, v43);
        local v45 = v37.new(v31, {
            console = v44,
            testPath = v29
        });
        if typeof(v45.getVmContext) ~= "function" then
            l_console_0.error(("Test environment found at \"%s\" does not export a \"getVmContext\" method, which is mandatory from Jest 27. This method is a replacement for \"runScript\"."):format((tostring(l_testEnvironment_0))));
            error(1);
        end;
        l_setGlobal_0(v45.global, "console", v44);
        local v46 = v39.new(v35);
        local l_UnixTimestampMillis_0 = DateTime.now().UnixTimestampMillis;
        for _, v49 in v31.setupFiles, nil, nil do
            v46:requireModule(v49);
        end;
        local l_status_1, l_result_1 = pcall(function()
            v45:setup():expect();
            local v50 = nil;
            local l_status_0, l_result_0 = pcall(function()
                v50 = l_runner_0(v30, v31, v45, v46, v29, v34):expect();
            end);
            if not l_status_0 then
                local _ = l_result_0.stack;
            end;
            if not l_status_0 then
                error(l_result_0);
            end;
            local l_v44_0 = v44;
            local l_v31_0 = v31;
            local function v56(_, _, v59)
                local _ = l_ErrorWithStack_0.new(("%s\nAttempted to log \"%s\"."):format(v7.red(("%s Did you forget to wait for something async in your test?"):format(v7.bold("Cannot log after tests are done."))), v59), v56);
            end;
            l_v44_0._log = v56;
            l_v44_0 = ((v50.numPassingTests + v50.numFailingTests) + v50.numPendingTests) + v50.numTodoTests;
            l_v31_0 = DateTime.now().UnixTimestampMillis;
            v56 = l_v31_0 - l_UnixTimestampMillis_0;
            v50.perfStats = {
                ["end"] = l_v31_0,
                runtime = v56,
                slow = v31.slowTestThreshold < v56 / 1000,
                start = l_UnixTimestampMillis_0
            };
            v50.testFilePath = l_getRelativePath_0(v29, v31.rootDir);
            v50.console = v44:getBuffer();
            v50.skipped = l_v44_0 == v50.numPendingTests;
            v50.displayName = v31.displayName;
            return v4.new(function(v61)
                l_setTimeout_0(function()
                    return v61({
                        leakDetector = nil,
                        result = v50
                    });
                end);
            end);
        end);
        v46:teardown();
        v45:teardown():expect();
        if not l_status_1 then
            error(l_result_1);
        end;
        return l_result_1;
    end);
end;
v6.default = function(v65, v66, v67, v68, v69, v70, v71)
    return v4.resolve():andThen(function()
        local l_v65_0 = v65;
        local l_v66_0 = v66;
        local l_v67_0 = v67;
        local _ = v68;
        local _ = v69;
        local l_v70_0 = v70;
        local l_v71_0 = v71;
        local l_l_v66_0_0 = l_v66_0 --[[ copy: 2 -> 8 ]];
        local l_l_v65_0_0 = l_v65_0 --[[ copy: 1 -> 9 ]];
        local v109 = v4.resolve():andThen(function()
            local l_testEnvironment_1 = l_v67_0.testEnvironment;
            local v82 = require(l_testEnvironment_1);
            local l_runner_1 = require(l_Parent_0.JestCircus).runner;
            local v84 = require(l_Parent_0.JestRuntime);
            local v85 = l_Writeable_0.new();
            local function v88(v86, v87)
                return l_getConsoleOutput_0(l_BufferedConsole_0.write({}, v86, v87, 4), l_v67_0, l_l_v66_0_0);
            end;
            local v89 = nil;
            v89 = if not l_l_v66_0_0.silent then if l_l_v66_0_0.verbose then l_CustomConsole_0.new(v85, v85, v88) else l_BufferedConsole_0.new() else l_NullConsole_0.new(v85, v85, v88);
            local v90 = v82.new(l_v67_0, {
                console = v89,
                testPath = l_l_v65_0_0
            });
            if typeof(v90.getVmContext) ~= "function" then
                l_console_0.error(("Test environment found at \"%s\" does not export a \"getVmContext\" method, which is mandatory from Jest 27. This method is a replacement for \"runScript\"."):format((tostring(l_testEnvironment_1))));
                error(1);
            end;
            l_setGlobal_0(v90.global, "console", v89);
            local v91 = v84.new(l_v71_0);
            local l_UnixTimestampMillis_1 = DateTime.now().UnixTimestampMillis;
            for _, v94 in l_v67_0.setupFiles, nil, nil do
                v91:requireModule(v94);
            end;
            local l_status_3, l_result_3 = pcall(function()
                v90:setup():expect();
                local v95 = nil;
                local l_status_2, l_result_2 = pcall(function()
                    v95 = l_runner_1(l_l_v66_0_0, l_v67_0, v90, v91, l_l_v65_0_0, l_v70_0):expect();
                end);
                if not l_status_2 then
                    local _ = l_result_2.stack;
                end;
                if not l_status_2 then
                    error(l_result_2);
                end;
                local l_v89_0 = v89;
                local l_l_v67_0_0 = l_v67_0;
                local function v101(_, _, v104)
                    local _ = l_ErrorWithStack_0.new(("%s\nAttempted to log \"%s\"."):format(v7.red(("%s Did you forget to wait for something async in your test?"):format(v7.bold("Cannot log after tests are done."))), v104), v101);
                end;
                l_v89_0._log = v101;
                l_v89_0 = ((v95.numPassingTests + v95.numFailingTests) + v95.numPendingTests) + v95.numTodoTests;
                l_l_v67_0_0 = DateTime.now().UnixTimestampMillis;
                v101 = l_l_v67_0_0 - l_UnixTimestampMillis_1;
                v95.perfStats = {
                    ["end"] = l_l_v67_0_0,
                    runtime = v101,
                    slow = l_v67_0.slowTestThreshold < v101 / 1000,
                    start = l_UnixTimestampMillis_1
                };
                v95.testFilePath = l_getRelativePath_0(l_l_v65_0_0, l_v67_0.rootDir);
                v95.console = v89:getBuffer();
                v95.skipped = l_v89_0 == v95.numPendingTests;
                v95.displayName = l_v67_0.displayName;
                return v4.new(function(v106)
                    l_setTimeout_0(function()
                        return v106({
                            leakDetector = nil,
                            result = v95
                        });
                    end);
                end);
            end);
            v91:teardown();
            v90:teardown():expect();
            if not l_status_3 then
                error(l_result_3);
            end;
            return l_result_3;
        end):expect();
        l_v65_0 = v109.leakDetector;
        l_v66_0 = v109.result;
        if l_v65_0 ~= nil then
            v4.new(function(v110)
                return l_setTimeout_0(v110, 100);
            end):expect();
            l_v66_0.leaks = l_v65_0:isLeaking():expect();
            return l_v66_0;
        else
            l_v66_0.leaks = false;
            return l_v66_0;
        end;
    end);
end;
return v6;


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local _ = require(l_Parent_0.JestEnvironment);
local _ = require(l_Parent_0.JestTestResult);
local _ = require(l_Parent_0.JestTypes);
return {};


local v0 = require(script.Parent.Parent.Parent.Promise);
local v1 = require(script.Parent.Parent);
return function(_)
    return v0.resolve():andThen(function()
        local v3 = v1.new();
        v3.__mockRootPath = script.Parent.Parent.__tests__.test_root;
        return v3;
    end);
end;


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.JestFakeTimers);
local _ = require(l_Parent_0.JestMock);
return {};


return {
    aForeground2 = 90,
    aBackground2 = 225,
    bForeground2 = 23,
    bBackground2 = 195,
    aForeground3 = {
        128,
        0,
        128
    },
    aBackground3 = {
        255,
        215,
        255
    },
    bForeground3 = {
        0,
        95,
        95
    },
    bBackground3 = {
        215,
        255,
        255
    }
};


local _ = require(script.Parent.Parent.LuauPolyfill);
local v1 = nil;
local v2 = nil;
local v3 = nil;
local v4 = nil;
local v5 = nil;
local v6 = nil;
local _ = nil;
v1 = function(v8)
    local v9 = string.match(v8, "^[ ]+");
    if v9 == nil then
        return 0;
    else
        return v9:len() - v9:len() % 2;
    end;
end;
v2 = function(v10)
    return v10:sub(v1(v10) + 1);
end;
v3 = function(v11)
    local v12 = 0;
    local v13 = string.find(v11, "\"");
    while v13 do
        if not (v13 ~= 1) or string.sub(v11, v13 - 1, v13 - 1) ~= "\\" then
            v12 = v12 + 1;
        end;
        v13 = string.find(v11, "\"", v13 + 1);
    end;
    return v12 % 2 ~= 0;
end;
v4 = function(v14)
    return string.find(v14, "^[ ]*<") ~= nil;
end;
v5 = function(v15, v16)
    local v17 = v15[#v16 + 1];
    table.insert(v16, v2(v17));
    if not string.find(v17, ">") then
        while true do
            if #v16 < #v15 then
                v17 = v15[#v16 + 1];
                if not v3(v17) then
                    if not v4(v17) then
                        table.insert(v16, v2(v17));
                        if string.find(v17, ">") then
                            return true;
                        end;
                    elseif not v6(v15, v16) then
                        return false;
                    end;
                else
                    return false;
                end;
            else
                return false;
            end;
        end;
    else
        return true;
    end;
end;
v6 = function(v18, v19)
    local v20 = v18[#v19 + 1];
    if v5(v18, v19) then
        if not string.find(v18[#v19], "/>") then
            local v21 = false;
            local v22 = {};
            table.insert(v22, v1(v20));
            while true do
                if #v22 > 0 and #v19 < #v18 then
                    v20 = v18[#v19 + 1];
                    if not v4(v20) then
                        if not v21 then
                            table.insert(v19, v20:sub(v22[#v22] + 3));
                            v21 = true;
                        else
                            return false;
                        end;
                    else
                        if not string.find(v20, "</") then
                            if v5(v18, v19) then
                                if not string.find(v18[#v19], "/>") then
                                    table.insert(v22, v1(v20));
                                end;
                            else
                                return false;
                            end;
                        else
                            table.insert(v19, v2(v20));
                            table.remove(v22);
                        end;
                        v21 = false;
                    end;
                else
                    return #v22 == 0;
                end;
            end;
        else
            return true;
        end;
    else
        return false;
    end;
end;
return function(v23)
    local v24 = {};
    while true do
        if #v24 < #v23 then
            local v25 = v23[#v24 + 1];
            if not v3(v25) then
                if not v4(v25) then
                    table.insert(v24, v2(v25));
                elseif not v6(v23, v24) then
                    return nil;
                end;
            else
                return nil;
            end;
        else
            return v24;
        end;
    end;
end;


local l_script_0 = script;
local l_Parent_0 = l_script_0.Parent;
local v2 = require(l_Parent_0.LuauPolyfill);
local l_Error_0 = v2.Error;
local l_instanceof_0 = v2.instanceof;
local l_AssertionError_0 = v2.AssertionError;
local l_getType_0 = require(l_Parent_0.JestGetType).getType;
local v7 = require(l_Parent_0.JestMatcherUtils);
local l_BOLD_WEIGHT_0 = v7.BOLD_WEIGHT;
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_printWithType_0 = v7.printWithType;
local l_stringify_0 = v7.stringify;
local v15 = require(l_script_0.State);
local v16 = require(l_script_0.plugins);
local l_addSerializer_0 = v16.addSerializer;
local l_getSerializers_0 = v16.getSerializers;
local v19 = require(l_script_0.printSnapshot);
local l_PROPERTIES_ARG_0 = v19.PROPERTIES_ARG;
local l_bReceivedColor_0 = v19.bReceivedColor;
local l_matcherHintFromConfig_0 = v19.matcherHintFromConfig;
local l_printExpected_0 = v19.printExpected;
local l_printPropertiesAndReceived_0 = v19.printPropertiesAndReceived;
local l_printReceived_0 = v19.printReceived;
local l_printSnapshotAndReceived_0 = v19.printSnapshotAndReceived;
local _ = require(l_script_0.types);
local v28 = require(l_script_0.utils);
local v29 = nil;
local v30 = nil;
local v31 = "Snapshot matchers cannot be used with " .. l_BOLD_WEIGHT_0("never");
local function v40(v32, v33, v34)
    local v35 = v32 or "";
    local v36 = v33 or "";
    local v37 = v35:len() ~= 0;
    local v38 = #v36 ~= 0;
    local v39 = "Snapshot name: `";
    if v37 then
        v39 = v39 .. v28.escapeBacktickString(v35);
    end;
    if not (not v37 or not v38) then
        v39 = v39 .. ": ";
    end;
    if v38 then
        v39 = v39 .. l_BOLD_WEIGHT_0(v28.escapeBacktickString(v36));
    end;
    return v39 .. " " .. v34 .. "`";
end;
local function v50(...)
    local v41 = {
        ...
    };
    local v42 = v41[1];
    local v43 = v41[2];
    local v44 = v41[3];
    local v45 = v41[4];
    local v46 = nil;
    local v47 = select("#", ...);
    if v47 == 3 and typeof(v44) == "string" then
        v45 = v44;
    elseif v47 >= 3 then
        if not (typeof(v44) == "table") or typeof(v44) == nil then
            local v48 = {
                isNot = v42.isNot,
                promise = v42.promise
            };
            local v49 = l_printWithType_0("Expected properties", v44, l_printExpected_0);
            if v47 == 4 then
                v48.secondArgument = "hint";
                v48.secondArgumentColor = l_BOLD_WEIGHT_0;
                if v44 == nil then
                    v49 = v49 .. "\n\nTo provide a hint without properties: toMatchSnapshot('hint')";
                end;
            end;
            error(l_AssertionError_0.new({
                message = l_matcherErrorMessage_0(l_matcherHint_0("toMatchSnapshot", nil, l_PROPERTIES_ARG_0, v48), "Expected " .. l_EXPECTED_COLOR_0("properties") .. " must be an object", v49)
            }));
        end;
        v46 = v44;
    end;
    return v29({
        context = v42,
        hint = v45,
        isInline = false,
        matcherName = "toMatchSnapshot",
        properties = v46,
        received = v43
    });
end;
v29 = function(v51)
    local l_context_0 = v51.context;
    local l_hint_0 = v51.hint;
    local l_inlineSnapshot_0 = v51.inlineSnapshot;
    local l_isInline_0 = v51.isInline;
    local l_matcherName_0 = v51.matcherName;
    local l_properties_0 = v51.properties;
    local l_received_0 = v51.received;
    local v59 = _G.__JEST_TEST_CONTEXT__.instance.Name:match("(.*)%.spec") .. ".snap";
    if _G.__JEST_TEST_CONTEXT__.snapshotState == nil then
        local v60 = nil;
        pcall(function()
            v60 = _G.__JEST_TEST_CONTEXT__.instance.Parent.__snapshots__[v59];
        end);
        local l_status_0, l_result_0 = pcall(function()
            return v15.new(v60, {
                updateSnapshot = _G.UPDATESNAPSHOT or "none",
                snapshotFormat = {}
            });
        end);
        if not l_status_0 then
            return {
                message = function()
                    return "Jest-Roblox: Error while loading snapshot file";
                end,
                pass = false
            };
        else
            _G.__JEST_TEST_CONTEXT__.snapshotState = l_result_0;
            --[[ close >= 9 ]]
        end;
    end;
    l_context_0.snapshotState = l_context_0.snapshotState or _G.__JEST_TEST_CONTEXT__.snapshotState;
    l_context_0.currentTestName = l_context_0.currentTestName or table.concat(_G.__JEST_TEST_CONTEXT__.blocks, " ");
    local l_currentTestName_0 = l_context_0.currentTestName;
    local l_isNot_0 = l_context_0.isNot;
    local l_snapshotState_0 = l_context_0.snapshotState;
    if l_isNot_0 then
        error(l_AssertionError_0.new({
            message = l_matcherErrorMessage_0(l_matcherHintFromConfig_0(v51, false), v31)
        }));
    end;
    if l_snapshotState_0 == nil then
        error(l_AssertionError_0.new({
            message = l_matcherHintFromConfig_0(v51, false) .. "\n\n" .. "Snapshot state must be initialized" .. "\n\n" .. l_printWithType_0("Snapshot state", l_snapshotState_0, l_stringify_0)
        }));
    end;
    local v66 = if not not l_currentTestName_0 and l_hint_0 then l_currentTestName_0 .. ": " .. l_hint_0 else l_currentTestName_0 or "";
    if typeof(l_properties_0) == "table" then
        if not (l_received_0 ~= nil) or typeof(l_received_0) ~= "table" and l_getType_0(l_received_0) ~= "Instance" then
            error(l_AssertionError_0.new({
                message = l_matcherErrorMessage_0(l_matcherHintFromConfig_0(v51, false), l_RECEIVED_COLOR_0("received") .. " value must be an object when the matcher has " .. l_EXPECTED_COLOR_0("properties"), l_printWithType_0("Received", l_received_0, l_printReceived_0))
            }));
        end;
        if l_context_0.equals(l_received_0, l_properties_0, {
            l_context_0.utils.iterableEquality,
            l_context_0.utils.subsetEquality
        }) then
            l_received_0 = v28.deepMerge(l_received_0, l_properties_0);
        else
            local v67 = l_snapshotState_0:fail(v66, l_received_0):match("(%d+)$");
            local v68 = v67 == nil and 1 or tonumber(v67);
            return {
                message = function()
                    return l_matcherHintFromConfig_0(v51, false) .. "\n\n" .. v40(l_currentTestName_0, l_hint_0, v68) .. "\n\n" .. l_printPropertiesAndReceived_0(l_properties_0, l_received_0, l_snapshotState_0.expand);
                end,
                name = l_matcherName_0,
                pass = false
            };
        end;
    end;
    local v69 = l_snapshotState_0:match({
        error = l_context_0.error,
        inlineSnapshot = l_inlineSnapshot_0,
        isInline = l_isInline_0,
        received = l_received_0,
        testName = v66
    });
    local l_actual_0 = v69.actual;
    local l_count_0 = v69.count;
    local l_expected_0 = v69.expected;
    if not v69.pass then
        local _ = nil;
        return {
            actual = l_actual_0,
            expected = l_expected_0,
            message = l_expected_0 == nil and function()
                local v74 = l_matcherHintFromConfig_0(v51, true) .. "\n\n" .. v40(l_currentTestName_0, l_hint_0, l_count_0) .. "\n\n" .. "New snapshot was " .. l_BOLD_WEIGHT_0("not written") .. ". The update flag " .. "must be explicitly passed to write a new snapshot.\n\n" .. "This is likely because this test is run in a continuous integration " .. "(CI) environment in which snapshots are not written by default.\n\n" .. "Received:";
                return if not l_actual_0:find("\n") then v74 .. " " else v74 .. "\n" .. l_bReceivedColor_0(l_actual_0);
            end or function()
                return l_matcherHintFromConfig_0(v51, true) .. "\n\n" .. v40(l_currentTestName_0, l_hint_0, l_count_0) .. "\n\n" .. l_printSnapshotAndReceived_0(l_expected_0, l_actual_0, l_received_0, l_snapshotState_0.expand);
            end,
            name = l_matcherName_0,
            pass = false
        };
    else
        return {
            message = function()
                return "";
            end,
            pass = true
        };
    end;
end;
local function v79(v75, v76, v77, v78)
    return v30({
        context = v75,
        hint = v77,
        isInline = false,
        matcherName = "toThrowErrorMatchingSnapshot",
        received = v76
    }, v78);
end;
v30 = function(v80, v81)
    local l_context_1 = v80.context;
    local l_hint_1 = v80.hint;
    local l_inlineSnapshot_1 = v80.inlineSnapshot;
    local l_isInline_1 = v80.isInline;
    local l_matcherName_1 = v80.matcherName;
    local l_received_1 = v80.received;
    local l_isNot_1 = l_context_1.isNot;
    local l_promise_0 = l_context_1.promise;
    if not v81 and typeof(l_received_1) ~= "function" then
        error(l_AssertionError_0.new({
            message = l_matcherErrorMessage_0(l_matcherHint_0(l_matcherName_1, nil, "", {
                isNot = l_isNot_1,
                promise = l_promise_0
            }), l_RECEIVED_COLOR_0("received") .. " value must be a function", l_printWithType_0("Received", l_received_1, l_printReceived_0))
        }));
    end;
    if l_isNot_1 then
        error(l_AssertionError_0.new({
            message = l_matcherErrorMessage_0(l_matcherHintFromConfig_0(v80, false), v31)
        }));
    end;
    local v90 = nil;
    if not v81 then
        local l_status_1, l_result_1 = pcall(function()
            l_received_1();
        end);
        if not l_status_1 then
            v90 = l_result_1;
        end;
    else
        v90 = l_received_1;
    end;
    if v90 == nil then
        error(l_AssertionError_0.new({
            message = l_matcherHintFromConfig_0(v80, false) .. "\n\n" .. "Received function did not throw"
        }));
    end;
    if l_instanceof_0(v90, l_Error_0) or typeof(v90) == "table" and rawget(v90, "message") ~= nil then
        v90 = v90.message;
    elseif typeof(v90) ~= "string" then
        v90 = tostring(v90);
    end;
    return v29({
        context = l_context_1,
        hint = l_hint_1,
        inlineSnapshot = l_inlineSnapshot_1,
        isInline = l_isInline_1,
        matcherName = l_matcherName_1,
        received = v90
    });
end;
return {
    SnapshotState = v15,
    addSerializer = l_addSerializer_0,
    getSerializers = l_getSerializers_0,
    toMatchSnapshot = v50,
    toThrowErrorMatchingSnapshot = v79,
    utils = v28,
    plugins = require(l_script_0.plugins)
};


local _ = require(script.Parent.Parent.PrettyFormat);
return {
    serialize = function(v1, v2, v3, v4, v5, v6)
        local v7 = v1.getMockName();
        local v8 = "";
        v8 = v7 == "jest.fn()" and "" or " " .. v7;
        local v9 = "";
        if #v1.mock.calls ~= 0 then
            local v10 = v3 .. v2.indent;
            v9 = " {" .. v2.spacingOuter .. v10 .. "\"calls\": " .. v6(v1.mock.calls, v2, v10, v4, v5);
            v9 = if not v2.min then v9 .. "," else v9 .. ", " .. v2.spacingOuter .. v10 .. "\"results\": " .. v6(v1.mock.results, v2, v10, v4, v5);
            if not v2.min then
                v9 = v9 .. ",";
            end;
            v9 = v9 .. v2.spacingOuter .. v3 .. "}";
        end;
        return "[MockFunction" .. v8 .. "]" .. v9;
    end,
    test = function(v11)
        local l_v11_0 = v11;
        if l_v11_0 then
            l_v11_0 = false;
            if typeof(v11) == "table" then
                l_v11_0 = v11._isMockFunction;
            end;
        end;
        return l_v11_0;
    end
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Array_0 = require(l_Parent_1.LuauPolyfill).Array;
local v3 = require(l_Parent_0.mockSerializer);
local l_plugins_0 = require(l_Parent_1.PrettyFormat).plugins;
local v5 = {
    v3,
    l_plugins_0.AsymmetricMatcher,
    l_plugins_0.ReactElement,
    l_plugins_0.ReactTestComponent,
    l_plugins_0.RobloxInstance
};
local v6 = l_Array_0.from(v5);
return {
    addSerializer = function(v7)
        table.insert(v5, 1, v7);
    end,
    getSerializers = function()
        return v5;
    end,
    resetSerializers = function()
        v5 = l_Array_0.from(v6);
    end
};


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_String_0 = v2.String;
local v7 = require(l_Parent_1.ChalkLua);
local l_getObjectSubset_0 = require(l_Parent_1.RobloxShared).expect.getObjectSubset;
local v9 = require(l_Parent_1.JestDiff);
local l_DIFF_DELETE_0 = v9.DIFF_DELETE;
local l_DIFF_EQUAL_0 = v9.DIFF_EQUAL;
local l_DIFF_INSERT_0 = v9.DIFF_INSERT;
local l_diffLinesUnified_0 = v9.diffLinesUnified;
local l_diffLinesUnified2_0 = v9.diffLinesUnified2;
local l_diffStringsRaw_0 = v9.diffStringsRaw;
local l_diffStringsUnified_0 = v9.diffStringsUnified;
local v17 = require(l_Parent_1.JestGetType);
local l_getType_0 = v17.getType;
local l_isPrimitive_0 = v17.isPrimitive;
local v20 = require(l_Parent_1.JestMatcherUtils);
local l_BOLD_WEIGHT_0 = v20.BOLD_WEIGHT;
local l_EXPECTED_COLOR_0 = v20.EXPECTED_COLOR;
local l_INVERTED_COLOR_0 = v20.INVERTED_COLOR;
local l_RECEIVED_COLOR_0 = v20.RECEIVED_COLOR;
local l_getLabelPrinter_0 = v20.getLabelPrinter;
local l_matcherHint_0 = v20.matcherHint;
local l_format_0 = require(l_Parent_1.PrettyFormat).format;
local v28 = require(l_Parent_0.colors);
local l_aBackground2_0 = v28.aBackground2;
local l_aBackground3_0 = v28.aBackground3;
local l_aForeground2_0 = v28.aForeground2;
local l_aForeground3_0 = v28.aForeground3;
local l_bBackground2_0 = v28.bBackground2;
local l_bBackground3_0 = v28.bBackground3;
local l_bForeground2_0 = v28.bForeground2;
local l_bForeground3_0 = v28.bForeground3;
local v37 = require(l_Parent_0.dedentLines);
local _ = require(l_Parent_0.types);
local v39 = require(l_Parent_0.utils);
local l_deserializeString_0 = v39.deserializeString;
local l_minify_0 = v39.minify;
local l_serialize_0 = v39.serialize;
local function v45(v43)
    local l_level_0 = v43.level;
    if l_level_0 == 3 then
        return v43.rgb(l_aForeground3_0[1], l_aForeground3_0[2], l_aForeground3_0[3]) .. v43.bgRgb(l_aBackground3_0[1], l_aBackground3_0[2], l_aBackground3_0[3]);
    elseif l_level_0 == 2 then
        return v43.ansi256(l_aForeground2_0) .. v43.bgAnsi256(l_aBackground2_0);
    else
        return v43.magenta .. v7.bgYellowBright;
    end;
end;
local function v48(v46)
    local l_level_1 = v46.level;
    if l_level_1 == 3 then
        return v46.rgb(l_bForeground3_0[1], l_bForeground3_0[2], l_bForeground3_0[3]) .. v46.bgRgb(l_bBackground3_0[1], l_bBackground3_0[2], l_bBackground3_0[3]);
    elseif l_level_1 == 2 then
        return v46.ansi256(l_bForeground2_0) .. v46.bgAnsi256(l_bBackground2_0);
    else
        return v46.cyan .. v7.bgWhiteBright;
    end;
end;
local v49 = v45(v7);
local v50 = v48(v7);
local function v52(v51)
    return v51;
end;
local function v62(v53, v54)
    local l_context_0 = v53.context;
    local l_hint_0 = v53.hint;
    local l_inlineSnapshot_0 = v53.inlineSnapshot;
    local l_matcherName_0 = v53.matcherName;
    local l_properties_0 = v53.properties;
    local v60 = {
        isNot = l_context_0.isNot,
        promise = l_context_0.promise
    };
    if v54 then
        v60.receivedColor = v50;
    end;
    local v61 = "";
    if typeof(l_properties_0) == "table" then
        v61 = "properties";
        if v54 then
            v60.expectedColor = v52;
        end;
        if typeof(l_hint_0) == "string" and #l_hint_0 ~= 0 then
            v60.secondArgument = "hint";
            v60.secondArgumentColor = l_BOLD_WEIGHT_0;
        elseif typeof(l_inlineSnapshot_0) == "string" then
            v60.secondArgument = "snapshot";
            if not v54 then
                v60.secondArgumentColor = v52;
            else
                v60.secondArgumentColor = v49;
            end;
        end;
    elseif typeof(l_hint_0) == "string" and #l_hint_0 ~= 0 then
        v61 = "hint";
        v60.expectedColor = l_BOLD_WEIGHT_0;
    elseif typeof(l_inlineSnapshot_0) == "string" then
        v61 = "snapshot";
        if v54 then
            v60.expectedColor = v49;
        end;
    end;
    return l_matcherHint_0(l_matcherName_0, nil, v61, v60);
end;
local function _(v63, v64, v65)
    return l_Array_0.reduce(v63, function(v66, v67)
        local l_v66_0 = v66;
        if v67[1] == l_DIFF_EQUAL_0 then
            return v66 .. v67[2];
        else
            if v67[1] == v64 then
                if not v65 then
                    l_v66_0 = l_v66_0 .. v67[2];
                else
                    return l_v66_0 .. l_INVERTED_COLOR_0(v67[2]);
                end;
            end;
            return l_v66_0;
        end;
    end, "");
end;
local function v72(v70)
    local v71 = l_getType_0(v70);
    if not l_isPrimitive_0(v70) then
        if not (v71 ~= "DateTime" and v71 ~= "function") or v71 == "regexp" then
            return false;
        elseif not l_instanceof_0(v70, l_Error_0) then
            if v71 == "table" and typeof(v70.asymmetricMatch) == "function" then
                return false;
            else
                return true;
            end;
        else
            return false;
        end;
    else
        return typeof(v70) == "string";
    end;
end;
return {
    getSnapshotColorForChalkInstance = v45,
    getReceivedColorForChalkInstance = v48,
    aSnapshotColor = v49,
    bReceivedColor = v50,
    noColor = v52,
    HINT_ARG = "hint",
    SNAPSHOT_ARG = "snapshot",
    PROPERTIES_ARG = "properties",
    matcherHintFromConfig = v62,
    printExpected = function(v73)
        return l_EXPECTED_COLOR_0(l_minify_0(v73));
    end,
    printReceived = function(v74)
        return l_RECEIVED_COLOR_0(l_minify_0(v74));
    end,
    printPropertiesAndReceived = function(v75, v76, v77)
        if not v72(v75) or not v72(v76) then
            local v78 = l_getLabelPrinter_0("Expected properties", "Received value");
            return v78("Expected properties") .. l_EXPECTED_COLOR_0(l_minify_0(v75)) .. "\n" .. v78("Received value") .. l_RECEIVED_COLOR_0(l_minify_0(v76));
        else
            return l_diffLinesUnified_0(l_serialize_0(v75):split("\n"), l_serialize_0(l_getObjectSubset_0(v76, v75)):split("\n"), {
                aAnnotation = "Expected properties",
                aColor = l_EXPECTED_COLOR_0,
                bAnnotation = "Received value",
                bColor = l_RECEIVED_COLOR_0,
                changeLineTrailingSpaceColor = v7.bgYellow,
                commonLineTrailingSpaceColor = v7.bgYellow,
                emptyFirstOrLastLinePlaceholder = utf8.char(8629),
                expand = v77,
                includeChangeCounts = true
            });
        end;
    end,
    printSnapshotAndReceived = function(v79, v80, v81, v82)
        local l_v49_0 = v49;
        local l_v50_0 = v50;
        local v85 = {
            aAnnotation = "Snapshot",
            aColor = l_v49_0,
            bAnnotation = "Received",
            bColor = l_v50_0,
            changeLineTrailingSpaceColor = v52,
            commonLineTrailingSpaceColor = v7.bgYellow,
            emptyFirstOrLastLinePlaceholder = utf8.char(8629),
            expand = v82,
            includeChangeCounts = true
        };
        if typeof(v81) == "string" then
            if not ((not (#v79 >= 2) or not l_String_0.startsWith(v79, "\"")) or not l_String_0.endsWith(v79, "\"")) and v80 == l_format_0(v81) then
                if v79:find("\n") or v80:find("\n") then
                    v79 = l_deserializeString_0(v79);
                    v80 = v81;
                else
                    local l_v79_0 = v79;
                    local l_v80_0 = v80;
                    if #v79 - 2 <= 20000 and #v80 - 2 <= 20000 then
                        local v88 = l_diffStringsRaw_0(string.sub(v79, 2, -2), string.sub(v80, 2, -2), true);
                        local v90 = l_Array_0.some(v88, function(v89)
                            return v89[1] == l_DIFF_EQUAL_0;
                        end);
                        local v91 = "\"";
                        local l_l_DIFF_DELETE_0_0 = l_DIFF_DELETE_0;
                        local l_l_l_DIFF_DELETE_0_0_0 = l_l_DIFF_DELETE_0_0 --[[ copy: 14 -> 15 ]];
                        l_v79_0 = v91 .. l_Array_0.reduce(v88, function(v94, v95)
                            local l_v94_0 = v94;
                            if v95[1] == l_DIFF_EQUAL_0 then
                                return v94 .. v95[2];
                            else
                                if v95[1] == l_l_l_DIFF_DELETE_0_0_0 then
                                    if not v90 then
                                        l_v94_0 = l_v94_0 .. v95[2];
                                    else
                                        return l_v94_0 .. l_INVERTED_COLOR_0(v95[2]);
                                    end;
                                end;
                                return l_v94_0;
                            end;
                        end, "") .. "\"";
                        v91 = "\"";
                        l_l_DIFF_DELETE_0_0 = l_DIFF_INSERT_0;
                        l_v80_0 = v91 .. l_Array_0.reduce(v88, function(v97, v98)
                            local l_v97_0 = v97;
                            if v98[1] == l_DIFF_EQUAL_0 then
                                return v97 .. v98[2];
                            else
                                if v98[1] == l_l_DIFF_DELETE_0_0 then
                                    if not v90 then
                                        l_v97_0 = l_v97_0 .. v98[2];
                                    else
                                        return l_v97_0 .. l_INVERTED_COLOR_0(v98[2]);
                                    end;
                                end;
                                return l_v97_0;
                            end;
                        end, "") .. "\"";
                    end;
                    local v100 = l_getLabelPrinter_0("Snapshot", "Received");
                    return v100("Snapshot") .. l_v49_0(l_v79_0) .. "\n" .. v100("Received") .. l_v50_0(l_v80_0);
                end;
            end;
            if #v79 <= 20000 and #v80 <= 20000 then
                return l_diffStringsUnified_0(v79, v80, v85);
            else
                return l_diffLinesUnified_0(v79:split("\n"), v80:split("\n"), v85);
            end;
        elseif not v72(v81) then
            local v101 = l_getLabelPrinter_0("Snapshot", "Received");
            return v101("Snapshot") .. l_v49_0(v79) .. "\n" .. v101("Received") .. l_v50_0(v80);
        else
            local v102 = v79:split("\n");
            local v103 = v80:split("\n");
            local v104 = l_serialize_0(v81, 0);
            if v104 ~= v80 then
                local v105 = v37(v102);
                if v105 ~= nil then
                    return l_diffLinesUnified2_0(v102, v103, v105, v104:split("\n"), v85);
                end;
            end;
            return l_diffLinesUnified_0(v102, v103, v85);
        end;
    end
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Error_0 = v1.Error;
local l_Map_0 = v1.Map;
local l_String_0 = v1.String;
local v5 = require(l_Parent_0.Promise);
local v6 = {};
local _ = require(l_Parent_0.JestTypes);
local l_robloxGetParent_0 = require(script.Parent.utils).robloxGetParent;
local function _()
    local l_status_0, l_result_0 = pcall(function()
        return game:GetService("CoreScriptSyncService");
    end);
    return not not l_status_0 and l_result_0 or nil;
end;
local v12 = nil;
local v13 = nil;
local v14 = nil;
v6.EXTENSION = "snap";
local v15 = "." .. "snap";
v6.DOT_EXTENSION = v15;
v6.isSnapshotPath = function(v16)
    return l_String_0.endsWith(v16, v15);
end;
local v17 = l_Map_0.new();
v6.buildSnapshotResolver = function(v18, _)
    return v5.resolve():andThen(function()
        local l_rootDir_0 = v18.rootDir;
        local v21 = v17:get(l_rootDir_0);
        local v22 = if v21 ~= nil then v21 else v13():expect();
        v17:set(l_rootDir_0, v22);
        return v22;
    end);
end;
v13 = function()
    return v5.resolve():andThen(function()
        return v14();
    end);
end;
v14 = function()
    return {
        resolveSnapshotPath = function(_, v24)
            return {
                getInstance = function()
                    local l_Name_0 = v24.Name;
                    local v26 = nil;
                    pcall(function()
                        v26 = v24.Parent.__snapshots__[l_Name_0 .. v15];
                    end);
                    return v26;
                end,
                getPath = function()
                    if v12 == nil then
                        local l_status_1, l_result_1 = pcall(function()
                            return game:GetService("CoreScriptSyncService");
                        end);
                        v12 = (not not l_status_1 and l_result_1 or nil) or false;
                    end;
                    if not v12 then
                        error(l_Error_0("Attempting to save snapshots in an environment where CoreScriptSyncService is inaccessible.\n" .. "You may need to pass in --load.asRobloxScript."));
                    end;
                    local l_status_2, l_result_2 = pcall(function()
                        return v12:GetScriptFilePath(v24);
                    end);
                    if not l_status_2 then
                        if not string.find(l_result_2, "lacking permission 5") then
                            error(l_Error_0.new(string.format("Could not get a snapshot path for test file '%s' because of the following error: %s", v24.Name, l_result_2)));
                        else
                            error(l_Error_0.new(string.format("Could not get a snapshot path for test file '%s'. You may need to pass in --load.asRobloxScript", v24.Name)));
                        end;
                    end;
                    return ("%s/__snapshots__/%s"):format(l_robloxGetParent_0(l_result_2, 1), v24.Name .. v15 .. ".lua");
                end
            };
        end
    };
end;
return v6;


local l_script_0 = script;
local l_Parent_0 = l_script_0.Parent;
local v2 = require(l_Parent_0.LuauPolyfill);
local l_Error_0 = v2.Error;
local l_instanceof_0 = v2.instanceof;
local l_AssertionError_0 = v2.AssertionError;
local l_getType_0 = require(l_Parent_0.JestGetType).getType;
local v7 = require(l_Parent_0.JestMatcherUtils);
local l_BOLD_WEIGHT_0 = v7.BOLD_WEIGHT;
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_printWithType_0 = v7.printWithType;
local l_stringify_0 = v7.stringify;
local v15 = require(script.SnapshotResolver);
local l_EXTENSION_0 = v15.EXTENSION;
local l_buildSnapshotResolver_0 = v15.buildSnapshotResolver;
local l_isSnapshotPath_0 = v15.isSnapshotPath;
local l_default_0 = require(l_script_0.State).default;
local v20 = require(l_script_0.plugins);
local l_addSerializer_0 = v20.addSerializer;
local l_getSerializers_0 = v20.getSerializers;
local v23 = require(l_script_0.printSnapshot);
local l_PROPERTIES_ARG_0 = v23.PROPERTIES_ARG;
local l_bReceivedColor_0 = v23.bReceivedColor;
local l_matcherHintFromConfig_0 = v23.matcherHintFromConfig;
local l_printExpected_0 = v23.printExpected;
local l_printPropertiesAndReceived_0 = v23.printPropertiesAndReceived;
local l_printReceived_0 = v23.printReceived;
local l_printSnapshotAndReceived_0 = v23.printSnapshotAndReceived;
local _ = require(l_script_0.types);
local v32 = require(l_script_0.utils);
local v33 = nil;
local v34 = nil;
local v35 = "Snapshot matchers cannot be used with " .. l_BOLD_WEIGHT_0("never");
local function v44(v36, v37, v38)
    local v39 = v36 or "";
    local v40 = v37 or "";
    local v41 = v39:len() ~= 0;
    local v42 = #v40 ~= 0;
    local v43 = "Snapshot name: `";
    if v41 then
        v43 = v43 .. v32.escapeBacktickString(v39);
    end;
    if not (not v41 or not v42) then
        v43 = v43 .. ": ";
    end;
    if v42 then
        v43 = v43 .. l_BOLD_WEIGHT_0(v32.escapeBacktickString(v40));
    end;
    return v43 .. " " .. v38 .. "`";
end;
local function v54(...)
    local v45 = {
        ...
    };
    local v46 = v45[1];
    local v47 = v45[2];
    local v48 = v45[3];
    local v49 = v45[4];
    local v50 = nil;
    local v51 = select("#", ...);
    if v51 == 3 and typeof(v48) == "string" then
        v49 = v48;
    elseif v51 >= 3 then
        if not (typeof(v48) == "table") or typeof(v48) == nil then
            local v52 = {
                isNot = v46.isNot,
                promise = v46.promise
            };
            local v53 = l_printWithType_0("Expected properties", v48, l_printExpected_0);
            if v51 == 4 then
                v52.secondArgument = "hint";
                v52.secondArgumentColor = l_BOLD_WEIGHT_0;
                if v48 == nil then
                    v53 = v53 .. "\n\nTo provide a hint without properties: toMatchSnapshot('hint')";
                end;
            end;
            error(l_AssertionError_0.new({
                message = l_matcherErrorMessage_0(l_matcherHint_0("toMatchSnapshot", nil, l_PROPERTIES_ARG_0, v52), "Expected " .. l_EXPECTED_COLOR_0("properties") .. " must be an object", v53)
            }));
        end;
        v50 = v48;
    end;
    return v33({
        context = v46,
        hint = v49,
        isInline = false,
        matcherName = "toMatchSnapshot",
        properties = v50,
        received = v47
    });
end;
v33 = function(v55)
    local l_context_0 = v55.context;
    local l_hint_0 = v55.hint;
    local l_inlineSnapshot_0 = v55.inlineSnapshot;
    local l_isInline_0 = v55.isInline;
    local l_matcherName_0 = v55.matcherName;
    local l_properties_0 = v55.properties;
    local l_received_0 = v55.received;
    local l_currentTestName_0 = l_context_0.currentTestName;
    local l_isNot_0 = l_context_0.isNot;
    local l_snapshotState_0 = l_context_0.snapshotState;
    if l_isNot_0 then
        error(l_AssertionError_0.new({
            message = l_matcherErrorMessage_0(l_matcherHintFromConfig_0(v55, false), v35)
        }));
    end;
    if l_snapshotState_0 == nil then
        error(l_AssertionError_0.new({
            message = l_matcherHintFromConfig_0(v55, false) .. "\n\n" .. "Snapshot state must be initialized" .. "\n\n" .. l_printWithType_0("Snapshot state", l_snapshotState_0, l_stringify_0)
        }));
    end;
    local v66 = if not not l_currentTestName_0 and l_hint_0 then l_currentTestName_0 .. ": " .. l_hint_0 else l_currentTestName_0 or "";
    if typeof(l_properties_0) == "table" then
        if not (l_received_0 ~= nil) or typeof(l_received_0) ~= "table" and l_getType_0(l_received_0) ~= "Instance" then
            error(l_AssertionError_0.new({
                message = l_matcherErrorMessage_0(l_matcherHintFromConfig_0(v55, false), l_RECEIVED_COLOR_0("received") .. " value must be an object when the matcher has " .. l_EXPECTED_COLOR_0("properties"), l_printWithType_0("Received", l_received_0, l_printReceived_0))
            }));
        end;
        if l_context_0.equals(l_received_0, l_properties_0, {
            l_context_0.utils.iterableEquality,
            l_context_0.utils.subsetEquality
        }) then
            l_received_0 = v32.deepMerge(l_received_0, l_properties_0);
        else
            local v67 = l_snapshotState_0:fail(v66, l_received_0):match("(%d+)$");
            local v68 = v67 == nil and 1 or tonumber(v67);
            return {
                message = function()
                    return l_matcherHintFromConfig_0(v55, false) .. "\n\n" .. v44(l_currentTestName_0, l_hint_0, v68) .. "\n\n" .. l_printPropertiesAndReceived_0(l_properties_0, l_received_0, l_snapshotState_0.expand);
                end,
                name = l_matcherName_0,
                pass = false
            };
        end;
    end;
    local v69 = l_snapshotState_0:match({
        error = l_context_0.error,
        inlineSnapshot = l_inlineSnapshot_0,
        isInline = l_isInline_0,
        received = l_received_0,
        testName = v66
    });
    local l_actual_0 = v69.actual;
    local l_count_0 = v69.count;
    local l_expected_0 = v69.expected;
    if not v69.pass then
        local _ = nil;
        return {
            actual = l_actual_0,
            expected = l_expected_0,
            message = l_expected_0 == nil and function()
                local v74 = l_matcherHintFromConfig_0(v55, true) .. "\n\n" .. v44(l_currentTestName_0, l_hint_0, l_count_0) .. "\n\n" .. "New snapshot was " .. l_BOLD_WEIGHT_0("not written") .. ". The update flag " .. "must be explicitly passed to write a new snapshot.\n\n" .. "This is likely because this test is run in a continuous integration " .. "(CI) environment in which snapshots are not written by default.\n\n" .. "Received:";
                return if not l_actual_0:find("\n") then v74 .. " " else v74 .. "\n" .. l_bReceivedColor_0(l_actual_0);
            end or function()
                return l_matcherHintFromConfig_0(v55, true) .. "\n\n" .. v44(l_currentTestName_0, l_hint_0, l_count_0) .. "\n\n" .. l_printSnapshotAndReceived_0(l_expected_0, l_actual_0, l_received_0, l_snapshotState_0.expand);
            end,
            name = l_matcherName_0,
            pass = false
        };
    else
        return {
            message = function()
                return "";
            end,
            pass = true
        };
    end;
end;
local function v79(v75, v76, v77, v78)
    return v34({
        context = v75,
        hint = v77,
        isInline = false,
        matcherName = "toThrowErrorMatchingSnapshot",
        received = v76
    }, v78);
end;
v34 = function(v80, v81)
    local l_context_1 = v80.context;
    local l_hint_1 = v80.hint;
    local l_inlineSnapshot_1 = v80.inlineSnapshot;
    local l_isInline_1 = v80.isInline;
    local l_matcherName_1 = v80.matcherName;
    local l_received_1 = v80.received;
    local l_isNot_1 = l_context_1.isNot;
    local l_promise_0 = l_context_1.promise;
    if not v81 and typeof(l_received_1) ~= "function" then
        error(l_AssertionError_0.new({
            message = l_matcherErrorMessage_0(l_matcherHint_0(l_matcherName_1, nil, "", {
                isNot = l_isNot_1,
                promise = l_promise_0
            }), l_RECEIVED_COLOR_0("received") .. " value must be a function", l_printWithType_0("Received", l_received_1, l_printReceived_0))
        }));
    end;
    if l_isNot_1 then
        error(l_AssertionError_0.new({
            message = l_matcherErrorMessage_0(l_matcherHintFromConfig_0(v80, false), v35)
        }));
    end;
    local v90 = nil;
    if not v81 then
        local l_status_0, l_result_0 = pcall(function()
            l_received_1();
        end);
        if not l_status_0 then
            v90 = l_result_0;
        end;
    else
        v90 = l_received_1;
    end;
    if v90 == nil then
        error(l_AssertionError_0.new({
            message = l_matcherHintFromConfig_0(v80, false) .. "\n\n" .. "Received function did not throw"
        }));
    end;
    if l_instanceof_0(v90, l_Error_0) or typeof(v90) == "table" and rawget(v90, "message") ~= nil then
        v90 = v90.message;
    elseif typeof(v90) ~= "string" then
        v90 = tostring(v90);
    end;
    return v33({
        context = l_context_1,
        hint = l_hint_1,
        inlineSnapshot = l_inlineSnapshot_1,
        isInline = l_isInline_1,
        matcherName = l_matcherName_1,
        received = v90
    });
end;
return {
    EXTENSION = l_EXTENSION_0,
    SnapshotState = l_default_0,
    addSerializer = l_addSerializer_0,
    buildSnapshotResolver = l_buildSnapshotResolver_0,
    getSerializers = l_getSerializers_0,
    isSnapshotPath = l_isSnapshotPath_0,
    toMatchSnapshot = v54,
    toThrowErrorMatchingSnapshot = v79,
    utils = v32,
    plugins = require(l_script_0.plugins)
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_0.mockSerializer);
local _ = require(l_Parent_1.PrettyFormat);
local l_plugins_0 = require(l_Parent_1.PrettyFormat).plugins;
local v5 = {
    v2,
    l_plugins_0.AsymmetricMatcher,
    l_plugins_0.ReactElement,
    l_plugins_0.ReactTestComponent,
    l_plugins_0.RobloxInstance
};
return {
    addSerializer = function(v6)
        table.insert(v5, 1, v6);
    end,
    getSerializers = function()
        return v5;
    end
};


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.Parent.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Object_0 = v1.Object;
local _ = require(l_Parent_0.types);
local v6 = nil;
local function v12(v7, v8, v9)
    local v10 = l_Array_0.map(v7.testResults, v6);
    if v7.testExecError ~= nil then
        local l_UnixTimestampMillis_0 = DateTime.now().UnixTimestampMillis;
        return {
            assertionResults = v10,
            coverage = {},
            endTime = l_UnixTimestampMillis_0,
            message = if v7.failureMessage ~= nil then v7.failureMessage else v7.testExecError.message,
            name = v7.testFilePath,
            startTime = l_UnixTimestampMillis_0,
            status = "failed",
            summary = ""
        };
    else
        return {
            assertionResults = v10,
            coverage = if v8 ~= nil then v8(v7.coverage, v9) else v7.coverage,
            endTime = v7.perfStats.end_,
            message = if v7.failureMessage ~= nil then v7.failureMessage else "",
            name = v7.testFilePath,
            startTime = v7.perfStats.start,
            status = not l_Boolean_0.toJSBoolean(v7.numFailingTests == 0) and "failed" or "passed",
            summary = ""
        };
    end;
end;
v6 = function(v13)
    local v14 = {
        ancestorTitles = v13.ancestorTitles,
        failureMessages = nil,
        fullName = v13.fullName,
        location = v13.location,
        status = v13.status,
        title = v13.title
    };
    if v13.failureMessages then
        v14.failureMessages = v13.failureMessages;
    end;
    return v14;
end;
return {
    default = function(v15, v16, v17)
        return l_Object_0.assign({}, v15, {
            testResults = l_Array_0.map(v15.testResults, function(v18)
                return (v12(v18, v16, v17));
            end)
        });
    end
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Boolean_0 = require(l_Parent_1.LuauPolyfill).Boolean;
local _ = require(l_Parent_1.JestTypes);
local _ = require(l_Parent_0.types);
return {
    makeEmptyAggregatedTestResult = function()
        return {
            numFailedTestSuites = 0,
            numFailedTests = 0,
            numPassedTestSuites = 0,
            numPassedTests = 0,
            numPendingTestSuites = 0,
            numPendingTests = 0,
            numRuntimeErrorTestSuites = 0,
            numTodoTests = 0,
            numTotalTestSuites = 0,
            numTotalTests = 0,
            openHandles = {},
            snapshot = {
                added = 0,
                didUpdate = false,
                failure = false,
                filesAdded = 0,
                filesRemoved = 0,
                filesRemovedList = {},
                filesUnmatched = 0,
                filesUpdated = 0,
                matched = 0,
                total = 0,
                unchecked = 0,
                uncheckedKeysByFile = {},
                unmatched = 0,
                updated = 0
            },
            startTime = 0,
            success = true,
            testResults = {},
            wasInterrupted = false
        };
    end,
    buildFailureTestResult = function(v5, v6)
        return {
            console = nil,
            displayName = nil,
            failureMessage = nil,
            leaks = false,
            numFailingTests = 0,
            numPassingTests = 0,
            numPendingTests = 0,
            numTodoTests = 0,
            openHandles = {},
            perfStats = {
                end_ = 0,
                runtime = 0,
                slow = false,
                start = 0
            },
            skipped = false,
            snapshot = {
                added = 0,
                fileDeleted = false,
                matched = 0,
                unchecked = 0,
                uncheckedKeys = {},
                unmatched = 0,
                updated = 0
            },
            testExecError = v6,
            testFilePath = v5,
            testResults = {}
        };
    end,
    addResult = function(v7, v8)
        if not l_Boolean_0.toJSBoolean(v8.numTodoTests) then
            v8.numTodoTests = 0;
        end;
        table.insert(v7.testResults, v8);
        v7.numTotalTests = v7.numTotalTests + (((v8.numPassingTests + v8.numFailingTests) + v8.numPendingTests) + v8.numTodoTests);
        v7.numFailedTests = v7.numFailedTests + v8.numFailingTests;
        v7.numPassedTests = v7.numPassedTests + v8.numPassingTests;
        v7.numPendingTests = v7.numPendingTests + v8.numPendingTests;
        v7.numTodoTests = v7.numTodoTests + v8.numTodoTests;
        if l_Boolean_0.toJSBoolean(v8.testExecError) then
            v7.numRuntimeErrorTestSuites = v7.numRuntimeErrorTestSuites + 1;
        end;
        if not l_Boolean_0.toJSBoolean(v8.skipped) then
            local l_toJSBoolean_0 = l_Boolean_0.toJSBoolean;
            local v10 = true;
            if v8.numFailingTests <= 0 then
                v10 = v8.testExecError;
            end;
            if not l_toJSBoolean_0(v10) then
                v7.numPassedTestSuites = v7.numPassedTestSuites + 1;
            else
                v7.numFailedTestSuites = v7.numFailedTestSuites + 1;
            end;
        else
            v7.numPendingTestSuites = v7.numPendingTestSuites + 1;
        end;
        if l_Boolean_0.toJSBoolean(v8.snapshot.added) then
            local l_snapshot_0 = v7.snapshot;
            l_snapshot_0.filesAdded = l_snapshot_0.filesAdded + 1;
        end;
        if l_Boolean_0.toJSBoolean(v8.snapshot.fileDeleted) then
            local l_snapshot_1 = v7.snapshot;
            l_snapshot_1.filesRemoved = l_snapshot_1.filesRemoved + 1;
        end;
        if l_Boolean_0.toJSBoolean(v8.snapshot.unmatched) then
            local l_snapshot_2 = v7.snapshot;
            l_snapshot_2.filesUnmatched = l_snapshot_2.filesUnmatched + 1;
        end;
        if l_Boolean_0.toJSBoolean(v8.snapshot.updated) then
            local l_snapshot_3 = v7.snapshot;
            l_snapshot_3.filesUpdated = l_snapshot_3.filesUpdated + 1;
        end;
        local l_snapshot_4 = v7.snapshot;
        l_snapshot_4.added = l_snapshot_4.added + v8.snapshot.added;
        l_snapshot_4 = v7.snapshot;
        l_snapshot_4.matched = l_snapshot_4.matched + v8.snapshot.matched;
        l_snapshot_4 = v7.snapshot;
        l_snapshot_4.unchecked = l_snapshot_4.unchecked + v8.snapshot.unchecked;
        if l_Boolean_0.toJSBoolean(if not l_Boolean_0.toJSBoolean(v8.snapshot.uncheckedKeys) then v8.snapshot.uncheckedKeys else #v8.snapshot.uncheckedKeys > 0) then
            table.insert(v7.snapshot.uncheckedKeysByFile, {
                filePath = v8.testFilePath,
                keys = v8.snapshot.uncheckedKeys
            });
        end;
        l_snapshot_4 = v7.snapshot;
        l_snapshot_4.unmatched = l_snapshot_4.unmatched + v8.snapshot.unmatched;
        l_snapshot_4 = v7.snapshot;
        l_snapshot_4.updated = l_snapshot_4.updated + v8.snapshot.updated;
        l_snapshot_4 = v7.snapshot;
        l_snapshot_4.total = l_snapshot_4.total + (((v8.snapshot.added + v8.snapshot.matched) + v8.snapshot.unmatched) + v8.snapshot.updated);
    end,
    createEmptyTestResult = function()
        return {
            leaks = false,
            numFailingTests = 0,
            numPassingTests = 0,
            numPendingTests = 0,
            numTodoTests = 0,
            openHandles = {},
            perfStats = {
                end_ = 0,
                runtime = 0,
                slow = false,
                start = 0
            },
            skipped = false,
            snapshot = {
                added = 0,
                fileDeleted = false,
                matched = 0,
                unchecked = 0,
                uncheckedKeys = {},
                unmatched = 0,
                updated = 0
            },
            testFilePath = "",
            testResults = {}
        };
    end
};


local v0 = {
    formatTestResults = require(script.formatTestResults).default
};
local v1 = require(script.helpers);
v0.addResult = v1.addResult;
v0.buildFailureTestResult = v1.buildFailureTestResult;
v0.createEmptyTestResult = v1.createEmptyTestResult;
v0.makeEmptyAggregatedTestResult = v1.makeEmptyAggregatedTestResult;
local _ = require(script.types);
return v0;


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


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.Parent.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Object_0 = v1.Object;
local _ = require(l_Parent_0.types);
local v6 = nil;
local function v12(v7, v8, v9)
    local v10 = l_Array_0.map(v7.testResults, v6);
    if v7.testExecError ~= nil then
        local l_UnixTimestampMillis_0 = DateTime.now().UnixTimestampMillis;
        return {
            assertionResults = v10,
            coverage = {},
            endTime = l_UnixTimestampMillis_0,
            message = if v7.failureMessage ~= nil then v7.failureMessage else v7.testExecError.message,
            name = v7.testFilePath,
            startTime = l_UnixTimestampMillis_0,
            status = "failed",
            summary = ""
        };
    else
        return {
            assertionResults = v10,
            coverage = if v8 ~= nil then v8(v7.coverage, v9) else v7.coverage,
            endTime = v7.perfStats["end"],
            message = if v7.failureMessage ~= nil then v7.failureMessage else "",
            name = v7.testFilePath,
            startTime = v7.perfStats.start,
            status = not l_Boolean_0.toJSBoolean(v7.numFailingTests == 0) and "failed" or "passed",
            summary = ""
        };
    end;
end;
v6 = function(v13)
    local v14 = {
        ancestorTitles = v13.ancestorTitles,
        duration = v13.duration,
        failureMessages = nil,
        fullName = v13.fullName,
        location = v13.location,
        status = v13.status,
        title = v13.title
    };
    if v13.failureMessages then
        v14.failureMessages = v13.failureMessages;
    end;
    return v14;
end;
return {
    default = function(v15, v16, v17)
        return l_Object_0.assign({}, v15, {
            testResults = l_Array_0.map(v15.testResults, function(v18)
                return (v12(v18, v16, v17));
            end)
        });
    end
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Boolean_0 = require(l_Parent_1.LuauPolyfill).Boolean;
local _ = require(l_Parent_1.JestTypes);
local _ = require(l_Parent_0.types);
return {
    makeEmptyAggregatedTestResult = function()
        return {
            numFailedTestSuites = 0,
            numFailedTests = 0,
            numPassedTestSuites = 0,
            numPassedTests = 0,
            numPendingTestSuites = 0,
            numPendingTests = 0,
            numRuntimeErrorTestSuites = 0,
            numTodoTests = 0,
            numTotalTestSuites = 0,
            numTotalTests = 0,
            openHandles = {},
            snapshot = {
                added = 0,
                didUpdate = false,
                failure = false,
                filesAdded = 0,
                filesRemoved = 0,
                filesRemovedList = {},
                filesUnmatched = 0,
                filesUpdated = 0,
                matched = 0,
                total = 0,
                unchecked = 0,
                uncheckedKeysByFile = {},
                unmatched = 0,
                updated = 0
            },
            startTime = 0,
            success = true,
            testResults = {},
            wasInterrupted = false
        };
    end,
    buildFailureTestResult = function(v5, v6)
        return {
            console = nil,
            displayName = nil,
            failureMessage = nil,
            leaks = false,
            numFailingTests = 0,
            numPassingTests = 0,
            numPendingTests = 0,
            numTodoTests = 0,
            openHandles = {},
            perfStats = {
                ["end"] = 0,
                runtime = 0,
                slow = false,
                start = 0
            },
            skipped = false,
            snapshot = {
                added = 0,
                fileDeleted = false,
                matched = 0,
                unchecked = 0,
                uncheckedKeys = {},
                unmatched = 0,
                updated = 0
            },
            testExecError = v6,
            testFilePath = v5,
            testResults = {}
        };
    end,
    addResult = function(v7, v8)
        if not l_Boolean_0.toJSBoolean(v8.numTodoTests) then
            v8.numTodoTests = 0;
        end;
        table.insert(v7.testResults, v8);
        v7.numTotalTests = v7.numTotalTests + (((v8.numPassingTests + v8.numFailingTests) + v8.numPendingTests) + v8.numTodoTests);
        v7.numFailedTests = v7.numFailedTests + v8.numFailingTests;
        v7.numPassedTests = v7.numPassedTests + v8.numPassingTests;
        v7.numPendingTests = v7.numPendingTests + v8.numPendingTests;
        v7.numTodoTests = v7.numTodoTests + v8.numTodoTests;
        if l_Boolean_0.toJSBoolean(v8.testExecError) then
            v7.numRuntimeErrorTestSuites = v7.numRuntimeErrorTestSuites + 1;
        end;
        if not l_Boolean_0.toJSBoolean(v8.skipped) then
            local l_toJSBoolean_0 = l_Boolean_0.toJSBoolean;
            local v10 = true;
            if v8.numFailingTests <= 0 then
                v10 = v8.testExecError;
            end;
            if not l_toJSBoolean_0(v10) then
                v7.numPassedTestSuites = v7.numPassedTestSuites + 1;
            else
                v7.numFailedTestSuites = v7.numFailedTestSuites + 1;
            end;
        else
            v7.numPendingTestSuites = v7.numPendingTestSuites + 1;
        end;
        if l_Boolean_0.toJSBoolean(v8.snapshot.added) then
            local l_snapshot_0 = v7.snapshot;
            l_snapshot_0.filesAdded = l_snapshot_0.filesAdded + 1;
        end;
        if l_Boolean_0.toJSBoolean(v8.snapshot.fileDeleted) then
            local l_snapshot_1 = v7.snapshot;
            l_snapshot_1.filesRemoved = l_snapshot_1.filesRemoved + 1;
        end;
        if l_Boolean_0.toJSBoolean(v8.snapshot.unmatched) then
            local l_snapshot_2 = v7.snapshot;
            l_snapshot_2.filesUnmatched = l_snapshot_2.filesUnmatched + 1;
        end;
        if l_Boolean_0.toJSBoolean(v8.snapshot.updated) then
            local l_snapshot_3 = v7.snapshot;
            l_snapshot_3.filesUpdated = l_snapshot_3.filesUpdated + 1;
        end;
        local l_snapshot_4 = v7.snapshot;
        l_snapshot_4.added = l_snapshot_4.added + v8.snapshot.added;
        l_snapshot_4 = v7.snapshot;
        l_snapshot_4.matched = l_snapshot_4.matched + v8.snapshot.matched;
        l_snapshot_4 = v7.snapshot;
        l_snapshot_4.unchecked = l_snapshot_4.unchecked + v8.snapshot.unchecked;
        if l_Boolean_0.toJSBoolean(if not l_Boolean_0.toJSBoolean(v8.snapshot.uncheckedKeys) then v8.snapshot.uncheckedKeys else #v8.snapshot.uncheckedKeys > 0) then
            table.insert(v7.snapshot.uncheckedKeysByFile, {
                filePath = v8.testFilePath,
                keys = v8.snapshot.uncheckedKeys
            });
        end;
        l_snapshot_4 = v7.snapshot;
        l_snapshot_4.unmatched = l_snapshot_4.unmatched + v8.snapshot.unmatched;
        l_snapshot_4 = v7.snapshot;
        l_snapshot_4.updated = l_snapshot_4.updated + v8.snapshot.updated;
        l_snapshot_4 = v7.snapshot;
        l_snapshot_4.total = l_snapshot_4.total + (((v8.snapshot.added + v8.snapshot.matched) + v8.snapshot.unmatched) + v8.snapshot.updated);
    end,
    createEmptyTestResult = function()
        return {
            leaks = false,
            numFailingTests = 0,
            numPassingTests = 0,
            numPendingTests = 0,
            numTodoTests = 0,
            openHandles = {},
            perfStats = {
                ["end"] = 0,
                runtime = 0,
                slow = false,
                start = 0
            },
            skipped = false,
            snapshot = {
                added = 0,
                fileDeleted = false,
                matched = 0,
                unchecked = 0,
                uncheckedKeys = {},
                unmatched = 0,
                updated = 0
            },
            testFilePath = "",
            testResults = {}
        };
    end
};


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


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


local _ = require(script.Circus);
local _ = require(script.Config);
local _ = require(script.Global);
local _ = require(script.TestResult);
local _ = require(script.Transform);
return {};


local v0 = require(script.Parent.Parent.LuauPolyfill);
local l_Boolean_0 = v0.Boolean;
local l_Error_0 = v0.Error;
local v3 = {};
local v4 = setmetatable({}, {
    __index = l_Error_0
});
v4.__index = v4;
v4.new = function(v5, v6, v7)
    local l_stackTraceLimit_0 = l_Error_0.stackTraceLimit;
    if v7 ~= nil and v7 ~= 0 then
        l_Error_0.stackTraceLimit = math.max(v7, not not l_Boolean_0.toJSBoolean(l_stackTraceLimit_0) and l_stackTraceLimit_0 or 10);
    end;
    local v9 = setmetatable(l_Error_0.new(v5), v4);
    if l_Boolean_0.toJSBoolean(l_Error_0.captureStackTrace) then
        l_Error_0.captureStackTrace(v9, v6);
    end;
    l_Error_0.stackTraceLimit = l_stackTraceLimit_0;
    return v9;
end;
v3.default = v4;
return v3;


local l_Parent_0 = script.Parent.Parent;
local l_Boolean_0 = require(l_Parent_0.LuauPolyfill).Boolean;
local _ = require(l_Parent_0.RobloxShared);
return {
    default = function(v3)
        if l_Boolean_0.toJSBoolean(v3.isTTY) then
            v3:write("\027[999D\027[K");
        end;
    end
};


local v0 = require(script.Parent.Parent.LuauPolyfill);
local l_Error_0 = v0.Error;
local l_String_0 = v0.String;
return {
    default = function(v3)
        if not (typeof(v3) ~= "string" and typeof(v3) ~= "number") or v3 == nil then
            return v3;
        else
            if typeof(v3) ~= "function" then
                error(l_Error_0.new("describe expects a function, number, or string."));
            end;
            local v4 = l_String_0.trim(debug.info(v3, "n"));
            if v4 ~= nil and v4 ~= "" then
                return v4;
            else
                return "[Function anonymous]";
            end;
        end;
    end
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = {};
local v3 = require(l_Parent_0.getFileSystemService);
local _ = require(l_Parent_1.JestTypes);
v2.default = function(v5)
    local v6 = v3();
    local v7, v8, v9 = pcall(function()
        v6:CreateDirectories(v5);
    end);
    if not v7 then
        if v8:find("Error%(13%): Access Denied%. Path is outside of sandbox%.") then
            error("Provided path is invalid: you likely need to provide a different argument to --fs.readwrite.\n" .. "You may need to pass in `--fs.readwrite=$PWD`");
        end;
        if v8.code ~= "EEXIST" then
            error(v8);
        end;
    end;
    if not v9 then
        return ;
    else
        return v8;
    end;
end;
return v2;


local v0 = require(script.Parent.Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_Object_0 = v0.Object;
local l_Set_0 = v0.Set;
local l_WeakMap_0 = v0.WeakMap;
local v5 = {};
local v6 = nil;
local v7 = nil;
local v8 = nil;
local v9 = l_Set_0.new();
v6 = function(v10, v11, v12)
    local v13 = v11 or {
        blacklist = v9,
        keepPrototype = false
    };
    local v14 = v12 or l_WeakMap_0.new();
    if typeof(v10) ~= "table" then
        return v10;
    elseif not v14:has(v10) then
        if not l_Array_0.isArray(v10) then
            return v7(v10, v13, v14);
        else
            return (v8(v10, v13, v14));
        end;
    else
        return v14:get(v10);
    end;
end;
v5.default = v6;
v7 = function(v15, v16, v17)
    local v18 = {};
    if v16.keepPrototype then
        warn("Prototype copying is not supported");
    end;
    local v21 = l_Array_0.reduce(l_Object_0.keys(v15), function(v19, v20)
        v19[v20] = {
            value = v15[v20]
        };
        return v19;
    end, {});
    v17:set(v15, v18);
    l_Array_0.forEach(l_Object_0.keys(v21), function(v22)
        if not (v16.blacklist ~= nil) or not v16.blacklist:has(v22) then
            local v23 = v21[v22];
            if typeof(v23.value) ~= "nil" then
                v23.value = v6(v23.value, {
                    blacklist = v9,
                    keepPrototype = v16.keepPrototype
                }, v17);
            end;
            v23.configurable = true;
            return ;
        else
            v21[v22] = nil;
            return ;
        end;
    end);
    return l_Object_0.assign(v18, l_Array_0.reduce(l_Object_0.keys(v21), function(v24, v25)
        v24[v25] = v21[v25].value;
        return v24;
    end, {}));
end;
v8 = function(v26, v27, v28)
    local v29 = {};
    if v27.keepPrototype then
        warn("Prototype copying is not supported");
    end;
    local v30 = #v26;
    v28:set(v26, v29);
    for v31 = 1, v30 do
        v29[v31] = v6(v26[v31], {
            blacklist = v9,
            keepPrototype = v27.keepPrototype
        }, v28);
    end;
    return v29;
end;
return v5;


local v0 = {};
local function _(v1)
    if v1 > 0 then
        return (math.floor(v1));
    else
        return (math.ceil(v1));
    end;
end;
local function _(v3, v4, v5)
    local v6 = math.max(#v3, v4);
    return ((v5 or " "):rep(v6) .. v3):sub(-v6);
end;
v0.default = function(v8, v9, v10)
    local v11 = v9 or -3;
    local v12 = v10 or 0;
    local v13 = {
        "n",
        "\206\188",
        "m",
        ""
    };
    local v14 = 0;
    local v15 = v11 / 3;
    local v16 = math.max(v14, (math.min((if v15 > 0 then math.floor(v15) else math.ceil(v15) + #v13) - 1, #v13 - 1))) + 1;
    local v17 = "%s %ss";
    local v18 = tostring(v8);
    local v19 = math.max(#v18, v12);
    return v17:format(((" "):rep(v19) .. v18):sub(-v19), v13[v16]);
end;
return v0;


local l_Error_0 = require(script.Parent.Parent.LuauPolyfill).Error;
return function()
    local l_status_0, l_result_0 = pcall(function()
        return _G.__MOCK_FILE_SYSTEM__ or game:GetService("FileSystemService");
    end);
    if not l_status_0 then
        error(l_Error_0.new("Attempting to save snapshots in an environment where FileSystemService is inaccessible."));
    end;
    return l_result_0;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Map_0 = v1.Map;
local v5 = {};
local v6 = require(l_Parent_0.Picomatch);
local _ = require(l_Parent_0.JestTypes);
local v8 = l_Map_0.new();
local v9 = {
    dot = true
};
v5.default = function(v10)
    if #v10 == 0 then
        return function()
            return false;
        end;
    else
        local v13 = l_Array_0.map(v10, function(v11)
            if not v8:has(v11) then
                local v12 = v6(v11, v9, true);
                v8:set(v11, {
                    isMatch = v12,
                    negated = v12.state.negated or l_Boolean_0.toJSBoolean(v12.state.negatedExtglob)
                });
            end;
            return (v8:get(v11));
        end);
        return function(v14)
            local v15 = nil;
            local v16 = 0;
            for v17 = 1, #v13 do
                local v18 = nil;
                local v19 = nil;
                local v20 = v13[v17];
                v18 = v20.isMatch;
                v19 = v20.negated;
                if v19 then
                    v16 = v16 + 1;
                end;
                local v21 = v18(v14);
                if v21 or not v19 then
                    if not (not v21 or v19) then
                        v15 = true;
                    end;
                else
                    v15 = false;
                end;
            end;
            if v16 == #v13 then
                return v15 ~= false;
            else
                return (l_Boolean_0.toJSBoolean(v15));
            end;
        end;
    end;
end;
return v5;


local l_Object_0 = require(script.Parent.LuauPolyfill).Object;
local v1 = {
    clearLine = require(script.clearLine).default,
    createDirectory = require(script.createDirectory).default,
    ErrorWithStack = require(script.ErrorWithStack).default,
    installCommonGlobals = require(script.installCommonGlobals)().default,
    isInteractive = require(script.isInteractive).default,
    isPromise = require(script.isPromise).default,
    setGlobal = require(script.setGlobal).default,
    deepCyclicCopy = require(script.deepCyclicCopy).default,
    convertDescriptorToString = require(script.convertDescriptorToString).default
};
local v2 = require(script.specialChars);
l_Object_0.assign(v1, v2);
v1.ARROW = v2.ARROW;
v1.ICONS = v2.ICONS;
v1.CLEAR = v2.CLEAR;
v1.globsToMatcher = require(script.globsToMatcher).default;
local v3 = require(script.preRunMessage);
l_Object_0.assign(v1, v3);
v1.print = v3.print;
v1.remove = v3.remove;
v1.pluralize = require(script.pluralize).default;
v1.formatTime = require(script.formatTime).default;
return v1;


return function()
    local l_Parent_0 = script.Parent.Parent;
    local v1 = require(l_Parent_0.LuauPolyfill);
    local l_Array_0 = v1.Array;
    local l_Object_0 = v1.Object;
    local l_String_0 = v1.String;
    local l_Symbol_0 = v1.Symbol;
    local v6 = require(l_Parent_0.Promise);
    local v7 = {};
    local _ = require(l_Parent_0.JestTypes);
    local l_default_0 = require(script.Parent.createProcessObject).default;
    local l_default_1 = require(script.Parent.deepCyclicCopy).default;
    local v13 = l_Array_0.filter(l_Object_0.keys(_G), function(v11)
        local v12 = false;
        if typeof(v11) == "string" then
            v12 = l_String_0.startsWith(v11, "DTRACE");
        end;
        return v12;
    end);
    v7.default = function(v14, v15)
        v14.process = l_default_0();
        l_Object_0.assign(v14, {
            [l_Symbol_0.for_("jest-native-promise")] = v6,
            [l_Symbol_0.for_("jest-native-now")] = DateTime.now,
            ["jest-symbol-do-not-touch"] = l_Symbol_0
        });
        l_Array_0.forEach(v13, function(v16)
            v14[v16] = function(_, ...)
                return _G[v16](v14, table.unpack({
                    ...
                }));
            end;
        end);
        return l_Object_0.assign(v14, l_default_1(v15));
    end;
    return v7;
end;


local v0 = require(script.Parent.Parent.Promise);
return {
    default = function(v1)
        return v0.is(v1);
    end
};


return {
    default = function(v0, v1)
        return ("%s %s%s"):format(tostring(v1), v0, v1 == 1 and "" or "s");
    end
};


local l_Parent_0 = script.Parent.Parent;
local v1 = {};
local v2 = require(l_Parent_0.ChalkLua);
local l_default_0 = require(script.Parent.clearLine).default;
local l_default_1 = require(script.Parent.isInteractive).default;
local _ = require(l_Parent_0.RobloxShared);
v1.print = function(v6)
    if l_default_1 then
        v6:write(v2.bold.dim("Determining test suites to run..."));
    end;
end;
v1.remove = function(v7)
    if l_default_1 then
        l_default_0(v7);
    end;
end;
return v1;


return {
    default = function(v0, v1, v2)
        v0[v1] = v2;
    end
};


local v0 = require(script.Parent.Parent.LuauPolyfill);
local l_Boolean_0 = v0.Boolean;
local l_Error_0 = v0.Error;
local v3 = {};
local v4 = setmetatable({}, {
    __index = l_Error_0
});
v4.__index = v4;
v4.new = function(v5, v6, v7)
    local l_stackTraceLimit_0 = l_Error_0.stackTraceLimit;
    if v7 ~= nil and v7 ~= 0 then
        l_Error_0.stackTraceLimit = math.max(v7, not not l_Boolean_0.toJSBoolean(l_stackTraceLimit_0) and l_stackTraceLimit_0 or 10);
    end;
    local v9 = setmetatable(l_Error_0.new(v5), v4);
    if l_Error_0.captureStackTrace then
        l_Error_0.captureStackTrace(v9, v6);
    end;
    l_Error_0.stackTraceLimit = l_stackTraceLimit_0;
    return v9;
end;
v3.default = v4;
return v3;


local v0 = require(script.Parent.Parent.LuauPolyfill);
local l_Error_0 = v0.Error;
local l_String_0 = v0.String;
return {
    default = function(v3)
        local v4 = typeof(v3);
        if v4 == "function" then
            local v5 = l_String_0.trim(debug.info(v3, "n"));
            if v5 ~= nil and v5 ~= "" then
                return v5;
            end;
        elseif not (v4 ~= "number") or v3 == nil then
            return ("%s"):format((tostring(v3)));
        elseif v4 == "string" then
            return v3;
        end;
        local _ = nil;
        error(l_Error_0.new(("Invalid first argument, %s. It must be a named function, number, or string."):format(typeof(v3) == "function" and "[Function anonymous]" or tostring(v3))));
    end
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = {};
local l_Error_0 = require(l_Parent_1.LuauPolyfill).Error;
local v4 = require(l_Parent_0.getFileSystemService);
local _ = require(l_Parent_1.JestTypes);
v2.default = function(v6)
    local v7 = v4();
    local v8, v9, v10 = pcall(function()
        v7:CreateDirectories(v6);
    end);
    if not v8 then
        if v9:find("Error%(13%): Access Denied%. Path is outside of sandbox%.") then
            error(l_Error_0.new("Provided path is invalid: you likely need to provide a different argument to --fs.readwrite.\n" .. "You may need to pass in `--fs.readwrite=$PWD`"));
        end;
        if v9.code ~= "EEXIST" then
            error(v9);
        end;
    end;
    if not v10 then
        return ;
    else
        return v9;
    end;
end;
return v2;


local l_Object_0 = require(script.Parent.LuauPolyfill).Object;
local v1 = {
    clearLine = require(script.clearLine).default,
    createDirectory = require(script.createDirectory).default,
    ErrorWithStack = require(script.ErrorWithStack).default,
    installCommonGlobals = require(script.installCommonGlobals)().default,
    isInteractive = require(script.isInteractive).default,
    isPromise = require(script.isPromise).default,
    setGlobal = require(script.setGlobal).default,
    deepCyclicCopy = require(script.deepCyclicCopy).default,
    convertDescriptorToString = require(script.convertDescriptorToString).default
};
local v2 = require(script.specialChars);
l_Object_0.assign(v1, v2);
v1.specialChars = v2;
v1.ARROW = v2.ARROW;
v1.ICONS = v2.ICONS;
v1.CLEAR = v2.CLEAR;
v1.testPathPatternToRegExp = require(script.testPathPatternToRegExp).default;
v1.globsToMatcher = require(script.globsToMatcher).default;
local v3 = require(script.preRunMessage);
v1.preRunMessage = v3;
v1.print = v3.print;
v1.remove = v3.remove;
v1.pluralize = require(script.pluralize).default;
v1.formatTime = require(script.formatTime).default;
return v1;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.RegExp);
local v2 = {};
local _ = require(l_Parent_0.JestTypes);
v2.default = function(v4)
    return v1(v4, "i");
end;
return v2;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Boolean_0 = v1.Boolean;
local l_Error_0 = v1.Error;
local v4 = {};
local v5 = require(l_Parent_0.ChalkLua);
local v6 = setmetatable({}, {
    __index = l_Error_0
});
v6.__index = v6;
v6.new = function(v7, v8, v9)
    local v10 = setmetatable(l_Error_0.new(), v6);
    v9 = if v9 ~= nil and l_Boolean_0.toJSBoolean(v9) then "\n\n" .. v9 else "\n";
    v10.name = "";
    v10.message = v5.red(v5.bold(v7) .. ":\n\n" .. v8 .. v9);
    return v10;
end;
v4.ValidationError = v6;
return v4;


local v0 = require(script:FindFirstAncestor("LazyRequire").Parent.React);
return function(v1)
    return function(v2)
        return v0.createElement(v1(), v2);
    end;
end;


return {
    lazyRequire = require(script.lazyRequire),
    createLazyComponent = require(script.createLazyComponent)
};


return function(v0)
    local v1 = {};
    local v2 = nil;
    local function _()
        if not v2 then
            v2 = require(v0);
            return v2;
        else
            return v2;
        end;
    end;
    setmetatable(v1, {
        __index = function(_, v5)
            local v6;
            if not v2 then
                v2 = require(v0);
                v6 = v2;
            else
                v6 = v2;
            end;
            return v6[v5];
        end,
        __newindex = function(_, v8, v9)
            local v10;
            if not v2 then
                v2 = require(v0);
                v10 = v2;
            else
                v10 = v2;
            end;
            v10[v8] = v9;
        end,
        __call = function(_, ...)
            local v12;
            if not v2 then
                v2 = require(v0);
                v12 = v2;
            else
                v12 = v2;
            end;
            return v12(...);
        end,
        __len = function(_)
            local v14;
            if not v2 then
                v2 = require(v0);
                v14 = v2;
            else
                v14 = v2;
            end;
            return #v14;
        end,
        __iter = function(_)
            local l_next_0 = next;
            if not v2 then
                v2 = require(v0);
                return l_next_0, v2;
            else
                return l_next_0, v2;
            end;
        end,
        __mode = "kv"
    });
    return v1;
end;


local l_Parent_0 = script.Parent;
local l_lazyRequire_0 = require(l_Parent_0.LazyRequire).lazyRequire;
if not game:DefineFastFlag("LuaAppLazyRequireSocialLibsDeps", false) then
    return {
        CollisionMatchers = require(l_Parent_0.CollisionMatchers),
        GenericPagination = require(l_Parent_0.GenericPagination),
        httpRequest = require(l_Parent_0.httpRequest),
        llama = require(l_Parent_0.llama),
        Mock = require(l_Parent_0.Mock),
        NetworkingAccountInformation = require(l_Parent_0.NetworkingAccountInformation),
        NetworkingAccountSettings = require(l_Parent_0.NetworkingAccountSettings),
        NetworkingAliases = require(l_Parent_0.NetworkingAliases),
        NetworkingBlocking = require(l_Parent_0.NetworkingBlocking),
        NetworkingCall = require(l_Parent_0.NetworkingCall),
        NetworkingChat = require(l_Parent_0.NetworkingChat),
        NetworkingContacts = require(l_Parent_0.NetworkingContacts),
        NetworkingCurrentlyWearing = require(l_Parent_0.NetworkingCurrentlyWearing),
        NetworkingFriends = require(l_Parent_0.NetworkingFriends),
        NetworkingGames = require(l_Parent_0.NetworkingGames),
        NetworkingPremiumFeatures = require(l_Parent_0.NetworkingPremiumFeatures),
        NetworkingPresence = require(l_Parent_0.NetworkingPresence),
        NetworkingShareLinks = require(l_Parent_0.NetworkingShareLinks),
        NetworkingSquads = require(l_Parent_0.NetworkingSquads),
        NetworkingUsers = require(l_Parent_0.NetworkingUsers),
        NetworkingUserSettings = require(l_Parent_0.NetworkingUserSettings),
        RoactFitComponents = require(l_Parent_0.RoactFitComponents),
        RoduxAliases = require(l_Parent_0.RoduxAliases),
        RoduxCall = require(l_Parent_0.RoduxCall_v18),
        RoduxContacts = require(l_Parent_0.RoduxContacts),
        RoduxFriends = require(l_Parent_0.RoduxFriends),
        RoduxGames = require(l_Parent_0.RoduxGames),
        RoduxNetworking = require(l_Parent_0.RoduxNetworking),
        RoduxPresence = require(l_Parent_0.RoduxPresence),
        RoduxShareLinks = require(l_Parent_0.RoduxShareLinks),
        RoduxSquads = require(l_Parent_0.RoduxSquads),
        RoduxUserPermissions = require(l_Parent_0.RoduxUserPermissions),
        RoduxUsers = require(l_Parent_0.RoduxUsers),
        SocialLibraries = require(l_Parent_0.SocialLibraries)
    };
else
    return {
        CollisionMatchers = l_lazyRequire_0(l_Parent_0.CollisionMatchers),
        GenericPagination = l_lazyRequire_0(l_Parent_0.GenericPagination),
        httpRequest = l_lazyRequire_0(l_Parent_0.httpRequest),
        llama = l_lazyRequire_0(l_Parent_0.llama),
        Mock = l_lazyRequire_0(l_Parent_0.Mock),
        NetworkingAccountInformation = l_lazyRequire_0(l_Parent_0.NetworkingAccountInformation),
        NetworkingAccountSettings = l_lazyRequire_0(l_Parent_0.NetworkingAccountSettings),
        NetworkingAliases = l_lazyRequire_0(l_Parent_0.NetworkingAliases),
        NetworkingBlocking = l_lazyRequire_0(l_Parent_0.NetworkingBlocking),
        NetworkingCall = l_lazyRequire_0(l_Parent_0.NetworkingCall),
        NetworkingChat = l_lazyRequire_0(l_Parent_0.NetworkingChat),
        NetworkingContacts = l_lazyRequire_0(l_Parent_0.NetworkingContacts),
        NetworkingCurrentlyWearing = l_lazyRequire_0(l_Parent_0.NetworkingCurrentlyWearing),
        NetworkingFriends = l_lazyRequire_0(l_Parent_0.NetworkingFriends),
        NetworkingGames = l_lazyRequire_0(l_Parent_0.NetworkingGames),
        NetworkingPremiumFeatures = l_lazyRequire_0(l_Parent_0.NetworkingPremiumFeatures),
        NetworkingPresence = l_lazyRequire_0(l_Parent_0.NetworkingPresence),
        NetworkingShareLinks = l_lazyRequire_0(l_Parent_0.NetworkingShareLinks),
        NetworkingSquads = l_lazyRequire_0(l_Parent_0.NetworkingSquads),
        NetworkingUsers = l_lazyRequire_0(l_Parent_0.NetworkingUsers),
        NetworkingUserSettings = l_lazyRequire_0(l_Parent_0.NetworkingUserSettings),
        RoactFitComponents = l_lazyRequire_0(l_Parent_0.RoactFitComponents),
        RoduxAliases = l_lazyRequire_0(l_Parent_0.RoduxAliases),
        RoduxCall = l_lazyRequire_0(l_Parent_0.RoduxCall_v18),
        RoduxContacts = l_lazyRequire_0(l_Parent_0.RoduxContacts),
        RoduxFriends = l_lazyRequire_0(l_Parent_0.RoduxFriends),
        RoduxGames = l_lazyRequire_0(l_Parent_0.RoduxGames),
        RoduxNetworking = l_lazyRequire_0(l_Parent_0.RoduxNetworking),
        RoduxPresence = l_lazyRequire_0(l_Parent_0.RoduxPresence),
        RoduxShareLinks = l_lazyRequire_0(l_Parent_0.RoduxShareLinks),
        RoduxSquads = l_lazyRequire_0(l_Parent_0.RoduxSquads),
        RoduxUserPermissions = l_lazyRequire_0(l_Parent_0.RoduxUserPermissions),
        RoduxUsers = l_lazyRequire_0(l_Parent_0.RoduxUsers),
        SocialLibraries = l_lazyRequire_0(l_Parent_0.SocialLibraries)
    };
end;


local v0 = require(script.Parent.isArray);
local v1 = "Array.concat(...) only works with array-like tables but " .. "it received an object-like table.\nYou can avoid this error by wrapping the " .. "object-like table into an array. Example: `concat({1, 2}, {a = true})` should " .. "be `concat({1, 2}, { {a = true} }`";
return function(v2, ...)
    local v3 = {};
    local v4 = 0;
    if not v0(v2) then
        v4 = v4 + 1;
        v3[v4] = v2;
    else
        for _, v6 in ipairs(v2) do
            v4 = v4 + 1;
            v3[v4] = v6;
        end;
    end;
    for v7 = 1, select("#", ...) do
        local v8 = select(v7, ...);
        local v9 = typeof(v8);
        if not (v8 == nil) then
            if v9 == "table" then
                if not (not _G.__DEV__ or v0(v8)) then
                    error(v1);
                end;
                for v10 = 1, #v8 do
                    v4 = v4 + 1;
                    v3[v4] = v8[v10];
                end;
            else
                v4 = v4 + 1;
                v3[v4] = v8;
            end;
        end;
    end;
    return v3;
end;


return function(v0, v1, v2)
    if typeof(v0) ~= "table" then
        error(string.format("Array.every called on %s", (typeof(v0))));
    end;
    if typeof(v1) ~= "function" then
        error("callback is not a function");
    end;
    local v3 = #v0;
    local v4 = 1;
    while true do
        if v4 <= v3 then
            local v5 = v0[v4];
            local _ = nil;
            if not (v5 ~= nil) or if v2 ~= nil then v1(v2, v5, v4, v0) else v1(v5, v4, v0) then
                v4 = v4 + 1;
            else
                return false;
            end;
        else
            return true;
        end;
    end;
end;


return function(v0, v1, v2)
    if typeof(v0) ~= "table" then
        error(string.format("Array.filter called on %s", (typeof(v0))));
    end;
    if typeof(v1) ~= "function" then
        error("callback is not a function");
    end;
    local v3 = #v0;
    local v4 = {};
    local v5 = 1;
    if v2 == nil then
        for v6 = 1, v3 do
            local v7 = v0[v6];
            if not (not (v7 ~= nil) or not v1(v7, v6, v0)) then
                v4[v5] = v7;
                v5 = v5 + 1;
            end;
        end;
        return v4;
    else
        for v8 = 1, v3 do
            local v9 = v0[v8];
            if not (not (v9 ~= nil) or not v1(v2, v9, v8, v0)) then
                v4[v5] = v9;
                v5 = v5 + 1;
            end;
        end;
        return v4;
    end;
end;


return function(v0, v1)
    for v2 = 1, #v0 do
        local v3 = v0[v2];
        if v1(v3, v2, v0) then
            return v3;
        end;
    end;
    return nil;
end;


return function(v0, v1)
    for v2 = 1, #v0 do
        if v1(v0[v2], v2, v0) then
            return v2;
        end;
    end;
    return -1;
end;


return function(v0, v1, v2)
    if typeof(v0) ~= "table" then
        error(string.format("Array.forEach called on %s", (typeof(v0))));
    end;
    if typeof(v1) ~= "function" then
        error("callback is not a function");
    end;
    local v3 = #v0;
    local v4 = 1;
    while v4 <= v3 do
        local v5 = v0[v4];
        if v2 ~= nil then
            v1(v2, v5, v4, v0);
        else
            v1(v5, v4, v0);
        end;
        if #v0 < v3 then
            v3 = #v0;
        end;
        v4 = v4 + 1;
    end;
end;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.isArray);
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.instanceof);
local v4 = nil;
local v5 = nil;
return function(v6, v7, v8)
    if not v4 then
        v4 = require(l_Parent_1).Set;
    end;
    if not v5 then
        v5 = require(l_Parent_1).Map;
    end;
    if v6 == nil then
        error("cannot create array from a nil value");
    end;
    local v9 = typeof(v6);
    local v10 = {};
    if not (v9 == "table") or not v1(v6) then
        if not v3(v6, v4) then
            if not v3(v6, v5) then
                if v9 == "string" then
                    if not v7 then
                        for v11 = 1, v6:len() do
                            v10[v11] = v6:sub(v11, v11);
                        end;
                    else
                        for v12 = 1, v6:len() do
                            if v8 ~= nil then
                                v10[v12] = v7(v8, v6:sub(v12, v12), v12);
                            else
                                v10[v12] = v7(v6:sub(v12, v12), v12);
                            end;
                        end;
                        return v10;
                    end;
                end;
                return v10;
            elseif not v7 then
                for v13, v14 in v6:ipairs() do
                    v10[v13] = v14;
                end;
                return v10;
            else
                for v15, v16 in v6:ipairs() do
                    if v8 ~= nil then
                        v10[v15] = v7(v8, v16, v15);
                    else
                        v10[v15] = v7(v16, v15);
                    end;
                end;
                return v10;
            end;
        elseif not v7 then
            for v17, v18 in v6:ipairs() do
                v10[v17] = v18;
            end;
            return v10;
        else
            for v19, v20 in v6:ipairs() do
                if v8 ~= nil then
                    v10[v19] = v7(v8, v20, v19);
                else
                    v10[v19] = v7(v20, v19);
                end;
            end;
            return v10;
        end;
    elseif not v7 then
        for v21 = 1, #v6 do
            v10[v21] = v6[v21];
        end;
        return v10;
    else
        for v22 = 1, #v6 do
            if v8 ~= nil then
                v10[v22] = v7(v8, v6[v22], v22);
            else
                v10[v22] = v7(v6[v22], v22);
            end;
        end;
        return v10;
    end;
end;


local v0 = require(script.Parent.indexOf);
return function(v1, v2, v3)
    return v0(v1, v2, v3) ~= -1;
end;


return function(v0, v1, v2)
    local v3 = v2 or 1;
    local v4 = #v0;
    if v3 < 1 then
        v3 = math.max(v4 - math.abs(v3), 1);
    end;
    for v5 = v3, v4 do
        if v0[v5] == v1 then
            return v5;
        end;
    end;
    return -1;
end;


return {
    concat = require(script.concat),
    every = require(script.every),
    filter = require(script.filter),
    find = require(script.find),
    findIndex = require(script.findIndex),
    forEach = require(script.forEach),
    from = require(script.from),
    includes = require(script.includes),
    indexOf = require(script.indexOf),
    isArray = require(script.isArray),
    join = require(script.join),
    map = require(script.map),
    reduce = require(script.reduce),
    reverse = require(script.reverse),
    shift = require(script.shift),
    slice = require(script.slice),
    some = require(script.some),
    sort = require(script.sort),
    splice = require(script.splice),
    unshift = require(script.unshift)
};


local v0 = require(script.Parent.map);
return function(v1, v2)
    if #v1 == 0 then
        return "";
    else
        return table.concat(v0(v1, function(v3)
            return (tostring(v3));
        end), v2 or ",");
    end;
end;


return function(v0, v1, v2)
    if typeof(v0) ~= "table" then
        error(string.format("Array.map called on %s", (typeof(v0))));
    end;
    if typeof(v1) ~= "function" then
        error("callback is not a function");
    end;
    local v3 = #v0;
    local v4 = {};
    local v5 = 1;
    while v5 <= v3 do
        local v6 = v0[v5];
        if v6 ~= nil then
            local _ = nil;
            v4[v5] = if v2 ~= nil then v1(v2, v6, v5, v0) else v1(v6, v5, v0);
        end;
        v5 = v5 + 1;
    end;
    return v4;
end;


return function(v0, v1, v2)
    if typeof(v0) ~= "table" then
        error(string.format("Array.reduce called on %s", (typeof(v0))));
    end;
    if typeof(v1) ~= "function" then
        error("callback is not a function");
    end;
    local v3 = #v0;
    local v4 = nil;
    local v5 = 1;
    if v2 ~= nil then
        v4 = v2;
    else
        v5 = 2;
        if v3 == 0 then
            error("reduce of empty array with no initial value");
        end;
        v4 = v0[1];
    end;
    for v6 = v5, v3 do
        v4 = v1(v4, v0[v6], v6, v0);
    end;
    return v4;
end;


reverse = function(v0)
    local v1 = #v0;
    local v2 = 1;
    while v2 < v1 do
        local v3 = v0[v1];
        local v4 = v0[v2];
        v0[v2] = v3;
        v0[v1] = v4;
        v2 = v2 + 1;
        v1 = v1 - 1;
    end;
    return v0;
end;
return reverse;


local v0 = require(script.Parent.isArray);
return function(v1)
    if not (not _G.__DEV__ or v0(v1)) then
        error(string.format("Array.shift called on non-array %s", (typeof(v1))));
    end;
    if #v1 > 0 then
        return table.remove(v1, 1);
    else
        return nil;
    end;
end;


return function(v0, v1, v2)
    if typeof(v0) ~= "table" then
        error(string.format("Array.slice called on %s", (typeof(v0))));
    end;
    local v3 = #v0;
    local v4 = v1 or 1;
    local v5 = nil;
    v5 = if not (v2 ~= nil) or v3 + 1 < v2 then v3 + 1 else v2;
    if v3 + 1 < v4 then
        return {};
    else
        local v6 = {};
        if v4 < 1 then
            v4 = math.max(v3 - math.abs(v4), 1);
        end;
        if v5 < 1 then
            v5 = math.max(v3 - math.abs(v5), 1);
        end;
        local l_v4_0 = v4;
        local v8 = 1;
        while l_v4_0 < v5 do
            v6[v8] = v0[l_v4_0];
            l_v4_0 = l_v4_0 + 1;
            v8 = v8 + 1;
        end;
        return v6;
    end;
end;


return function(v0, v1, v2)
    if typeof(v0) ~= "table" then
        error(string.format("Array.some called on %s", (typeof(v0))));
    end;
    if typeof(v1) ~= "function" then
        error("callback is not a function");
    end;
    for v3, v4 in ipairs(v0) do
        if v2 ~= nil then
            if not (not (v4 ~= nil) or not v1(v2, v4, v3, v0)) then
                return true;
            end;
        elseif not (not (v4 ~= nil) or not v1(v4, v3, v0)) then
            return true;
        end;
    end;
    return false;
end;