{"version":3,"sources":["../../../../../node_modules/.pnpm/title@3.5.3/node_modules/title/lib/lower-case.js","../../../../../node_modules/.pnpm/title@3.5.3/node_modules/title/lib/specials.js","../../../../../node_modules/.pnpm/title@3.5.3/node_modules/title/lib/index.js","../../../src/api-definition/const.ts","../../../../commons/core-utils/src/assertNever.ts","../../../../commons/core-utils/src/identity.ts","../../../../commons/core-utils/src/isNonNullish.ts","../../../../commons/core-utils/src/objects/isPlainObject.ts","../../../../commons/core-utils/src/sanitizeUrl.ts","../../../../commons/core-utils/src/titleCase.ts","../../../../commons/core-utils/src/specialTokens.ts","../../../../commons/core-utils/src/unknownToString.ts","../../../../commons/core-utils/src/visitDiscriminatedUnion.ts","../../../src/api-definition/unwrap.ts","../../../src/orpc-client/api/contract-latest.ts","../../../src/orpc-client/api/shared.ts","../../../src/orpc-client/shared.ts","../../../src/orpc-client/api/contract-register.ts","../../../src/api-definition/availability.ts","../../../src/api-definition/collect-referenced-types.ts","../../../src/api-definition/collect-type-tree.ts","../../../src/api-definition/typeid-visitor.ts","../../../src/api-definition/prune.ts","../../../src/api-definition/endpoint-context.ts","../../../src/api-definition/endpoint-path-literal.ts","../../../src/api-definition/join.ts","../../../src/api-definition/lang.ts","../../../src/api-definition/migrators/v1ToV2.ts","../../../src/navigation/consts.ts","../../../src/api-definition/snippets/curl.ts","../../../src/utils/obfuscate-secret.ts","../../../src/api-definition/wrapOpenRPCRequest.ts","../../../src/api-definition/snippets/SnippetHttpRequest.ts","../../../src/api-definition/url.ts","../../../src/api-definition/sort-keys.ts","../../../src/api-definition/status-message.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/__dirname.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/chunk-DtuTasat.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/buffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/@fern-api/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/@fern-api/src/DynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/index.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/lodash.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_root.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/camelCase.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/capitalize.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/upperFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCaseFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_castSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicode.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stringToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCompounder.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayReduce.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/deburr.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_deburrLetter.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_basePropertyOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/words.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiWords.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicodeWord.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeWords.js","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/assert.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/objects/keys.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/ast/AbstractAstNode.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/utils/stacktrace.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/ast/AbstractWriter.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/utils/index.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/ast/Argument.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/ast/Ternary.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/dynamic-snippets/index.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/dynamic-snippets/Result.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/index.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/utils/HttpEndpointReferenceParser.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/dynamic-snippets/Options.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/browser-compatible-base/src/dynamic-snippets/Scope.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/@fern-api/src/context/DynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/core/Writer.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/Block.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/utils/type-guards.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/Literal.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/core/AstNode.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/types/ClassReference.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/utils/fail.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/types/Type.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/audience/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/auth/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/auth/types/AuthScheme.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/auth/types/AuthSchemesRequirement.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/auth/types/OAuthConfiguration.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/commons/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/commons/types/AvailabilityStatus.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/constants/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/auth/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/auth/types/Auth.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/auth/types/AuthValues.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/commons/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/declaration/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/endpoints/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/endpoints/types/FileUploadRequestBodyProperty.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/endpoints/types/InlinedRequestBody.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/endpoints/types/ReferencedRequestBodyType.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/endpoints/types/Request.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/endpoints/types/Response.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/environment/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/environment/types/Environments.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/http/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/http/types/HttpMethod.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/ir/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/ir/types/GeneratorOutputConfig.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/ir/types/PublishInfo.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/snippets/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/snippets/types/ErrorSeverity.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/types/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/types/types/LiteralType.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/types/types/NamedType.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/types/types/ObjectPropertyAccess.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/types/types/PrimitiveTypeV1.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/types/types/SingleDiscriminatedUnionType.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/types/types/TypeReference.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/dynamic/resources/variables/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/environment/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/environment/types/Environments.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/errors/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/errors/types/ErrorDeclarationDiscriminantValue.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/examples/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/examples/types/V2AuthValues.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/examples/types/V2EndpointLocationHttpMethod.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/examples/types/V2HttpEndpointResponseBody.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/generatorExec/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/generatorExec/resources/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/generatorExec/resources/config/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/generatorExec/resources/config/types/GeneratorEnvironment.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/generatorExec/resources/config/types/GeneratorPublishTarget.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/generatorExec/resources/config/types/GithubPublishInfo.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/generatorExec/resources/config/types/LicenseConfig.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/generatorExec/resources/config/types/LicenseId.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/generatorExec/resources/config/types/OutputMode.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/ExampleCodeSample.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/ExampleEndpointSuccessResponse.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/ExampleQueryParameterShape.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/ExampleRequestBody.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/ExampleResponse.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/FileProperty.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/FileUploadBodyPropertyEncoding.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/FileUploadRequestProperty.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/HttpEndpointSource.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/HttpMethod.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/HttpRequestBody.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/HttpResponseBody.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/JsonResponse.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/NonStreamHttpResponseBody.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/Pagination.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/PathParameterLocation.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/RequestPropertyValue.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/SdkRequestBodyType.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/SdkRequestShape.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/StreamingResponse.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/SupportedSdkLanguage.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/http/types/Transport.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/ir/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/ir/types/ApiDefinitionSource.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/ir/types/ApiVersionScheme.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/ir/types/ErrorDiscriminationStrategy.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/ir/types/ExampleStyle.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/proto/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/proto/types/ProtobufMethodType.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/proto/types/ProtobufType.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/proto/types/WellKnownProtobufType.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/publish/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/publish/types/PublishingConfig.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/publish/types/PublishTarget.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/ContainerType.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/ExampleContainer.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/ExamplePrimitive.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/ExampleSingleUnionTypeProperties.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/ExampleTypeReferenceShape.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/ExampleTypeShape.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/Literal.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/NamedTypeDefault.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/ObjectPropertyAccess.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/PrimitiveTypeV1.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/PrimitiveTypeV2.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/ResolvedTypeReference.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/ShapeType.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/SingleUnionTypeProperties.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/Source.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/Type.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/TypeReference.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/types/types/UnionDiscriminatorContext.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/variables/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/webhooks/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/webhooks/types/AsymmetricAlgorithm.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/webhooks/types/AsymmetricKeySource.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/webhooks/types/HmacAlgorithm.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/webhooks/types/WebhookHttpMethod.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/webhooks/types/WebhookPayload.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/webhooks/types/WebhookPayloadComponent.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/webhooks/types/WebhookSignatureEncoding.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/webhooks/types/WebhookSignatureVerification.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/webhooks/types/WebhookTimestampFormat.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/websocket/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/websocket/types/ExampleWebSocketMessageBody.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/websocket/types/WebSocketMessageBody.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-fern+ir-sdk@65.4.0/node_modules/@fern-fern/ir-sdk/dist/esm/api/resources/websocket/types/WebSocketMessageOrigin.mjs","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/utils/text.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/utils/dynamic-ir-type-guards.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/utils/ir-type-guards.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/ClassInstantiation.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/Dictionary.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/EnumInstantiation.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/InstantiatedPrimitive.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/List.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/MethodInvocation.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/ReadOnlymemory.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/Set.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/code/String_.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/utils/escapeForCSharpString.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/core/XmlDocWriter.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js","https://raw.githubusercontent.com/fb55/htmlparser2/e2939a6c7b05d5c4845b4a2e458a4fc0a65a321d/src/index.ts","https://raw.githubusercontent.com/fb55/htmlparser2/e2939a6c7b05d5c4845b4a2e458a4fc0a65a321d/src/Parser.ts","https://raw.githubusercontent.com/fb55/htmlparser2/e2939a6c7b05d5c4845b4a2e458a4fc0a65a321d/src/Tokenizer.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-html.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-xml.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode_codepoint.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/index.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/stringify.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/index.js","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/index.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/encode.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/encode-html.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/escape.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/traversal.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/manipulation.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/querying.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/legacy.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/helpers.ts","https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/feeds.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/Access.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/And.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/Annotation.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/AnnotationGroup.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/AnonymousFunction.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/Or.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/Parameter.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/core/index.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/Switch.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/Ternary.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/language/XmlDocBlock.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/types/Class.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/types/DefinedType.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/types/Field.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/types/Method.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/types/Enum.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/types/Interface.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/ast/types/TestClass.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/context/generation-info.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/csharp.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/context/name-registry.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/context/knownTypes.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/utils/lazy.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/context/extern.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/context/model-navigator.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/codegen/src/with-generation.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/@fern-api/src/context/DynamicLiteralMapper.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/@fern-api/src/context/DynamicTypeMapper.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/@fern-api/src/context/FilePropertyMapper.ts","../../../../../node_modules/.pnpm/@fern-api+csharp-dynamic-snippets@2.56.5/node_modules/@fern-api/src/EndpointSnippetGenerator.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/__dirname.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/chunk-DtuTasat.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/buffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/chunk-DEMDiNwt.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/chunk-BlJi4mNy.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/path.js","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/@fern-api/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/@fern-api/src/DynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/index.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/assert.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/objects/keys.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/ast/AbstractAstNode.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/utils/stacktrace.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/ast/AbstractFormatter.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/ast/AbstractWriter.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/utils/index.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/dynamic-snippets/index.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/dynamic-snippets/Result.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/index.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/utils/HttpEndpointReferenceParser.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/browser-compatible-base/src/dynamic-snippets/Scope.ts","../../../../../node_modules/.pnpm/packages/commons/path-utils/src/index.ts","../../../../../node_modules/.pnpm/packages/commons/path-utils/src/basename.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/@fern-api/src/context/DynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/core/GoFile.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/core/Writer.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/go.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Alias.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Comment.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/core/AstNode.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Enum.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Identifier.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/TypeInstantiation.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/FuncInvocation.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/utils/writeArguments.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/GoTypeReference.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/utils/writeGenerics.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/MethodInvocation.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Field.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/File.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Func.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Method.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/MultiNode.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Parameter.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Pointer.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Selector.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Struct.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Switch.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/Type.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/ast/TypeDeclaration.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/utils/goExportedFieldName.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/ast/src/utils/resolveRootImportPath.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/@fern-api/src/context/DynamicTypeInstantiationMapper.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/@fern-api/src/context/DynamicTypeMapper.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/@fern-api/src/context/FilePropertyMapper.ts","../../../../../node_modules/.pnpm/@fern-api+go-dynamic-snippets@1.33.0/node_modules/@fern-api/src/EndpointSnippetGenerator.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/__dirname.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/chunk-DtuTasat.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/buffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/@fern-api/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/@fern-api/src/DynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/index.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/lodash.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_root.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/camelCase.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/capitalize.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/upperFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCaseFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_castSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicode.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stringToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCompounder.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayReduce.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/deburr.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_deburrLetter.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_basePropertyOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/words.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiWords.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicodeWord.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeWords.js","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/assert.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/extractErrorMessage.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/objects/keys.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/ast/AbstractAstNode.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/utils/stacktrace.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/ast/AbstractFormatter.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/ast/AbstractWriter.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/utils/index.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/ast/Argument.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/dynamic-snippets/index.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/dynamic-snippets/Result.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/index.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/utils/HttpEndpointReferenceParser.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/dynamic-snippets/Options.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/browser-compatible-base/src/dynamic-snippets/Scope.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/@fern-api/src/context/DynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/core/JavaFile.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/core/Writer.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/custom-config/BaseJavaCustomConfigSchema.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/custom-config/CustomReadmeSectionSchema.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/java.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/Class.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/core/AstNode.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/Access.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/ClassInstantiation.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/utils/writeArguments.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/TypeLiteral.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/ClassReference.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/Type.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/Method.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/MethodInvocation.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/ast/src/ast/Parameter.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/@fern-api/src/context/DynamicTypeLiteralMapper.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/@fern-api/src/context/DynamicTypeMapper.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/@fern-api/src/context/FilePropertyMapper.ts","../../../../../node_modules/.pnpm/@fern-api+java-dynamic-snippets@4.1.0/node_modules/@fern-api/src/EndpointSnippetGenerator.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/__dirname.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/chunk-DtuTasat.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/buffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/@fern-api/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/@fern-api/src/DynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/index.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/lodash.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_root.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObject.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_WeakMap.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getNative.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNative.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isFunction.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isMasked.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_coreJsData.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_toSource.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getValue.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/noop.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludes.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIndexOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseFindIndex.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNaN.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_strictIndexOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isIndex.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/eq.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArrayLike.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isLength.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isPrototype.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/keys.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayLikeKeys.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseTimes.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArguments.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsArguments.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isBuffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/stubFalse.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isTypedArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsTypedArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseUnary.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_nodeUtil.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseKeys.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeys.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_overArg.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_MapCache.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheClear.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Hash.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashClear.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_nativeCreate.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashDelete.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashGet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hashSet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_ListCache.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheClear.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheDelete.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_assocIndexOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheGet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_listCacheSet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Map.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheDelete.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getMapData.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_isKeyable.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheGet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheSet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayPush.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/camelCase.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/capitalize.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/upperFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCaseFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_castSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicode.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stringToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCompounder.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayReduce.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/deburr.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_deburrLetter.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_basePropertyOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/words.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiWords.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicodeWord.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeWords.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Stack.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackClear.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackDelete.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackGet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stackSet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getSymbols.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayFilter.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/stubArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeys.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetAllKeys.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_DataView.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Promise.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Set.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Uint8Array.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqual.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqualDeep.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_equalArrays.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_SetCache.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_setCacheAdd.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_setCacheHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arraySome.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_cacheHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_equalByTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_mapToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_setToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_equalObjects.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludesWith.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isEqual.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseUniq.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createSet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/uniqWith.js","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/assert.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/objects/keys.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/ast/AbstractAstNode.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/utils/stacktrace.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/ast/AbstractWriter.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/utils/index.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/ast/Argument.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/ast/Ternary.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/dynamic-snippets/index.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/dynamic-snippets/Result.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/index.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/utils/HttpEndpointReferenceParser.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/browser-compatible-base/src/dynamic-snippets/Scope.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/@fern-api/src/context/DynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/core/Constant.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/constants.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/php.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/DataClass.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Class.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/ClassReference.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/core/AstNode.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/core/Writer.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Comment.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/utils/convertToPhpVariableName.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/utils/orderByAccess.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Access.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Parameter.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Type.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/TypeLiteral.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/ClassInstantiation.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/utils/writeArguments.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/core/index.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/MethodInvocation.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/utils/convertFromPhpVariableName.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Array.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Attribute.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Enum.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Method.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Field.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Interface.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Map.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/Trait.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/ast/MergeArrays.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/codegen/src/utils.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/@fern-api/src/context/DynamicTypeLiteralMapper.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/@fern-api/src/context/FilePropertyMapper.ts","../../../../../node_modules/.pnpm/@fern-api+php-dynamic-snippets@2.3.1/node_modules/@fern-api/src/EndpointSnippetGenerator.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/__dirname.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/chunk-DtuTasat.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/buffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/@fern-api/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/@fern-api/src/DynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/index.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/lodash.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_root.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/camelCase.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/capitalize.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/upperFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCaseFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_castSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicode.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stringToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCompounder.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayReduce.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/deburr.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_deburrLetter.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_basePropertyOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/words.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiWords.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicodeWord.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeWords.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/snakeCase.js","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/assert.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/objects/keys.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/ast/AbstractAstNode.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/utils/stacktrace.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/ast/AbstractWriter.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/utils/index.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/dynamic-snippets/index.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/dynamic-snippets/Result.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/index.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/utils/HttpEndpointReferenceParser.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/browser-compatible-base/src/dynamic-snippets/Scope.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/@fern-api/src/context/DynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/python.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/AccessAttribute.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/core/AstNode.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/core/Writer.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Assign.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/BaseInvocation.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Class.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/ClassInstantiation.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Comment.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Decorator.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Field.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Lambda.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/LambdaParameter.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Parameter.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Method.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/MethodArgument.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/MethodInvocation.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Operator.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/OperatorType.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/PythonFile.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/core/utils.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/ModuleImport.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Reference.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/StarImport.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/Type.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/ast/src/TypeInstantiation.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/@fern-api/src/context/DynamicTypeLiteralMapper.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/@fern-api/src/context/FilePropertyMapper.ts","../../../../../node_modules/.pnpm/@fern-api+python-dynamic-snippets@5.2.1/node_modules/@fern-api/src/EndpointSnippetGenerator.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/__dirname.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/chunk-DtuTasat.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/buffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/@fern-api/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/@fern-api/src/DynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/index.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/lodash.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_root.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/upperFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCaseFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_castSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicode.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stringToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeToArray.js","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/assert.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/objects/keys.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/ast/AbstractAstNode.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/utils/stacktrace.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/ast/AbstractFormatter.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/ast/AbstractWriter.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/utils/index.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/dynamic-snippets/index.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/dynamic-snippets/Result.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/index.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/utils/HttpEndpointReferenceParser.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/@fern-api/src/context/DynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/ClassReference.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/core/AstNode.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/core/RubyFile.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/core/Writer.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ruby.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/Begin.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/IfElse.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/Class.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/Comment.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/Method.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/Type.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/Module.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/ClassInstantiation.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/KeywordArgument.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/KeywordParameter.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/Parameter.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/KeywordSplatParameter.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/MethodInvocation.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/PositionalArgument.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/PositionalParameter.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/PositionalSplatParameter.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/TypeLiteral.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/TypeParameter.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/YieldParameter.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/ast/src/ast/Raise.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/@fern-api/src/context/DynamicToLiteralMapper.ts","../../../../../node_modules/.pnpm/@fern-api+ruby-dynamic-snippets@1.1.13/node_modules/@fern-api/src/EndpointSnippetGenerator.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/__dirname.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/chunk-DtuTasat.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/buffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/isFinite.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/maxSafeInteger.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/isSafeNumber.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/toOrdinal.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/makeOrdinal.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/toWords.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/toWordsOrdinal.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/number-to-words@1.2.4/node_modules/number-to-words/src/index.js","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/@fern-api/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/@fern-api/src/DynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/index.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/lodash.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isSymbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseGetTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Symbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_root.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_freeGlobal.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getRawTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_objectToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObjectLike.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isObject.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getNative.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNative.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/isFunction.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isMasked.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_coreJsData.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_toSource.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getValue.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/noop.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayIncludes.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIndexOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseFindIndex.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseIsNaN.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_strictIndexOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/eq.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_MapCache.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheClear.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Hash.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashClear.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_nativeCreate.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashDelete.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashGet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hashSet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_ListCache.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheClear.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheDelete.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_assocIndexOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheGet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_listCacheSet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Map.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheDelete.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_getMapData.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_isKeyable.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheGet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_mapCacheSet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/camelCase.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/capitalize.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/upperFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createCaseFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_castSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hasUnicode.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_stringToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_asciiToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_unicodeToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createCompounder.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayReduce.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/deburr.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_deburrLetter.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePropertyOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/words.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_asciiWords.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_hasUnicodeWord.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_unicodeWords.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_Set.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_SetCache.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setCacheAdd.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setCacheHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_cacheHas.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_setToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_arrayIncludesWith.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseUniq.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createSet.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/uniqWith.js","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/assert.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/noop.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/objects/keys.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/objects/entries.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/SymbolRegistry.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/visitDiscriminatedUnion.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/ast/AbstractAstNode.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/utils/stacktrace.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/ast/AbstractWriter.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/utils/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/dynamic-snippets/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/dynamic-snippets/Result.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/index.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/utils/HttpEndpointReferenceParser.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/browser-compatible-base/src/dynamic-snippets/Scope.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/@fern-api/src/context/DynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/helpers/enum-with-associated-values/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/helpers/enum-with-associated-values/enum-with-associated-values.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/helpers/pascal-case.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/helpers/literal-enum/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/helpers/literal-enum/literal-enum.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/helpers/referencer.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/helpers/undiscriminated-union/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/helpers/undiscriminated-union/undiscriminated-union.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/name-registry/name-registry.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/name-registry/requests-namespace.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/name-registry/source-module-namespace.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/name-registry/test-module-namespace.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/swift.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/AccessLevel.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Class.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/core/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/core/AstNode.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/core/Writer.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Comment.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/ComputedProperty.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/syntax/escape-swift-string-literal.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/syntax/reserved-keywords.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Expression.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Statement.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/DeclarationType.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/DocComment.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/EnumWithAssociatedValues.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/EnumWithRawValues.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Extension.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/FunctionArgument.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/FunctionParameter.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Initializer.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/LineBreak.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Method.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Pattern.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Property.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Protocol.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/Struct.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/ast/TypeReference.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/symbol/as-is.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/symbol/symbol.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/symbol/symbol-registry/symbol-registry.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/symbol/symbol-registry/symbol-graph/index.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/symbol/symbol-registry/symbol-graph/symbol-graph.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/symbol/symbol-registry/symbol-graph/symbol.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/codegen/src/symbol/template.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/@fern-api/src/util/pascal-case.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/@fern-api/src/context/DynamicTypeLiteralMapper.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/@fern-api/src/context/FilePropertyMapper.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/@fern-api/src/context/register-discriminated-unions.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/@fern-api/src/context/register-literal-enums.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/@fern-api/src/context/register-undiscriminated-unions.ts","../../../../../node_modules/.pnpm/@fern-api+swift-dynamic-snippets@0.27.0/node_modules/@fern-api/src/EndpointSnippetGenerator.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/__dirname.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/process.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/chunk-DtuTasat.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/buffer.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/esbuild-plugin-polyfill-node@0.3.0_esbuild@0.27.3/node_modules/esbuild-plugin-polyfill-node/polyfills/buffer.js","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/@fern-api/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/@fern-api/src/DynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/index.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/lodash.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_root.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/isArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/toString.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/camelCase.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/capitalize.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/upperFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCaseFirst.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_castSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_baseSlice.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicode.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_stringToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeToArray.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_createCompounder.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_arrayReduce.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/deburr.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_deburrLetter.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_basePropertyOf.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/words.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_asciiWords.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_hasUnicodeWord.js","../../../../../node_modules/.pnpm/node_modules/.pnpm/lodash-es@4.18.1/node_modules/lodash-es/_unicodeWords.js","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/assert.ts","../../../../../node_modules/.pnpm/packages/commons/core-utils/src/objects/keys.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/ast/AbstractAstNode.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/utils/stacktrace.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/ast/AbstractFormatter.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/ast/AbstractWriter.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/utils/index.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/dynamic-snippets/index.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGenerator.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/dynamic-snippets/Result.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/dynamic-snippets/AbstractDynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/index.ts","../../../../../node_modules/.pnpm/packages/cli/fern-definition/schema/src/utils/HttpEndpointReferenceParser.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/dynamic-snippets/ErrorReporter.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/browser-compatible-base/src/dynamic-snippets/Scope.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/@fern-api/src/context/DynamicSnippetsGeneratorContext.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/index.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/core/index.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/core/AstNode.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/core/TypeScriptFile.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/core/Writer.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/typescript.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/index.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/ClassInstantiation.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/CodeBlock.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/Comment.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/Function.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/Type.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/FunctionInvocation.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/MethodInvocation.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/Parameter.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/Reference.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/TypeLiteral.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/ast/src/ast/Variable.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/browser-compatible-base/src/utils/index.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/browser-compatible-base/src/utils/constructNpmPackage.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/browser-compatible-base/src/utils/getNamespaceExport.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/@fern-api/src/context/DynamicTypeLiteralMapper.ts","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/commons/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/auth/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/commons/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/declaration/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/endpoints/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/environment/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/http/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/http/types/HttpMethod.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/ir/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/snippets/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/snippets/types/ErrorSeverity.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/types/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/types/types/ObjectPropertyAccess.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/types/types/PrimitiveTypeV1.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/dynamic/resources/variables/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/generatorExec/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/generatorExec/resources/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/generatorExec/resources/config/index.mjs","../../../../../node_modules/.pnpm/node_modules/.pnpm/@fern-api+dynamic-ir-sdk@64.0.0/node_modules/@fern-api/dynamic-ir-sdk/dist/esm/api/resources/generatorExec/resources/config/types/LicenseId.mjs","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/@fern-api/src/context/FilePropertyMapper.ts","../../../../../node_modules/.pnpm/@fern-api+typescript-dynamic-snippets@3.62.1/node_modules/@fern-api/src/EndpointSnippetGenerator.ts","../../../../snippets/dist/index.js","../../../src/api-definition/snippets/generators.ts","../../../src/api-definition/snippets/auth-scheme.ts","../../../src/api-definition/snippets/constants.ts","../../../src/api-definition/snippets/get-har-request.ts","../../../src/api-definition/snippets/HttpSnippetConverter.ts","../../../src/api-definition/snippets/http-snippets.ts","../../../src/api-definition/snippets/sdk-snippets.ts","../../../src/api-definition/snippets/backfill.ts","../../../src/api-definition/snippets/graphql-snippets.ts","../../../src/api-definition/snippets/types.ts","../../../src/api-definition/transformer.ts"],"sourcesContent":["const conjunctions = [\n  'for',\n  'and',\n  'nor',\n  'but',\n  'or',\n  'yet',\n  'so'\n]\n\nconst articles = [\n  'a',\n  'an',\n  'the'\n]\n\nconst prepositions = [\n  'aboard',\n  'about',\n  'above',\n  'across',\n  'after',\n  'against',\n  'along',\n  'amid',\n  'among',\n  'anti',\n  'around',\n  'as',\n  'at',\n  'before',\n  'behind',\n  'below',\n  'beneath',\n  'beside',\n  'besides',\n  'between',\n  'beyond',\n  'but',\n  'by',\n  'concerning',\n  'considering',\n  'despite',\n  'down',\n  'during',\n  'except',\n  'excepting',\n  'excluding',\n  'following',\n  'for',\n  'from',\n  'in',\n  'inside',\n  'into',\n  'like',\n  'minus',\n  'near',\n  'of',\n  'off',\n  'on',\n  'onto',\n  'opposite',\n  'over',\n  'past',\n  'per',\n  'plus',\n  'regarding',\n  'round',\n  'save',\n  'since',\n  'than',\n  'through',\n  'to',\n  'toward',\n  'towards',\n  'under',\n  'underneath',\n  'unlike',\n  'until',\n  'up',\n  'upon',\n  'versus',\n  'via',\n  'with',\n  'within',\n  'without'\n]\n\nmodule.exports = new Set([\n  ...conjunctions,\n  ...articles,\n  ...prepositions\n])\n","const intended = [\n  'ZEIT',\n  'ZEIT Inc.',\n  'Vercel',\n  'Vercel Inc.',\n  'CLI',\n  'API',\n  'HTTP',\n  'HTTPS',\n  'JSX',\n  'DNS',\n  'URL',\n  'now.sh',\n  'now.json',\n  'vercel.app',\n  'vercel.json',\n  'CI',\n  'CD',\n  'CDN',\n  'package.json',\n  'package.lock',\n  'yarn.lock',\n  'GitHub',\n  'GitLab',\n  'CSS',\n  'Sass',\n  'JS',\n  'JavaScript',\n  'TypeScript',\n  'HTML',\n  'WordPress',\n  'Next.js',\n  'Node.js',\n  'Webpack',\n  'Docker',\n  'Bash',\n  'Kubernetes',\n  'SWR',\n  'TinaCMS',\n  'UI',\n  'UX',\n  'TS',\n  'TSX',\n  'iPhone',\n  'iPad',\n  'watchOS',\n  'iOS',\n  'iPadOS',\n  'macOS',\n  'PHP',\n  'composer.json',\n  'composer.lock',\n  'CMS',\n  'SQL',\n  'C',\n  'C#',\n  'GraphQL',\n  'GraphiQL',\n  'JWT',\n  'JWTs'\n]\n\nmodule.exports = intended\n","// Utilities\nconst lowerCase = require('./lower-case')\nconst specials = require('./specials')\n\nconst word = \"[^\\\\s'’\\\\(\\\\)!?;:\\\"-]\"\nconst regex = new RegExp(`(?:(?:(\\\\s?(?:^|[.\\\\(\\\\)!?;:\"-])\\\\s*)(${word}))|(${word}))(${word}*[’']*${word}*)`, \"g\")\n\nconst convertToRegExp = specials => specials.map(s => [new RegExp(`\\\\b${s}\\\\b`, 'gi'), s])\n\nfunction parseMatch(match) {\n  const firstCharacter = match[0]\n\n  // test first character\n  if (/\\s/.test(firstCharacter)) {\n    // if whitespace - trim and return\n    return match.slice(1)\n  }\n  if (/[\\(\\)]/.test(firstCharacter)) {\n    // if parens - this shouldn't be replaced\n    return null\n  }\n\n  return match\n}\n\nmodule.exports = (str, options = {}) => {\n  str = str.toLowerCase().replace(regex, (m, lead = '', forced, lower, rest, offset, string) => {\n    const isLastWord = m.length + offset >= string.length;\n\n    const parsedMatch = parseMatch(m)\n    if (!parsedMatch) {\n      return m\n    }\n    if (!forced) {\n      const fullLower = lower + rest\n\n      if (lowerCase.has(fullLower) && !isLastWord) {\n        return parsedMatch\n      }\n    }\n\n    return lead + (lower || forced).toUpperCase() + rest\n  })\n\n  const customSpecials = options.special || []\n  const replace = [...specials, ...customSpecials]\n  const replaceRegExp = convertToRegExp(replace)\n\n  replaceRegExp.forEach(([pattern, s]) => {\n    str = str.replace(pattern, s)\n  })\n\n  return str\n}\n","/**\n * The maximum number of times to loop while unwrapping a type reference.\n * This may need to be increased if the API definition contains extremely deeply nested type references.\n */\nexport const LOOP_TOLERANCE = 100;\n\n/**\n * The maximum number of times to loop while expanding type IDs.\n * Since there can be many type ids to expand, this number is an order of magnitude larger than `LOOP_TOLERANCE`.\n */\nexport const LARGE_LOOP_TOLERANCE = 100 ** 2;\n","export function assertNever(x: never): never {\n    throw new Error(\"Unexpected value: \" + JSON.stringify(x));\n}\n\nexport function assertNeverNoThrow(_: never): void {}\n\nexport default assertNever;\n","export function identity<T>(value: T): T {\n    return value;\n}\n\nexport default identity;\n","export function isNonNullish<T>(x: T | null | undefined): x is T {\n    return x != null;\n}\n\nexport function assertNonNullish<T>(x: T | null | undefined, message?: string): asserts x is T {\n    if (x == null) {\n        throw new Error(message ?? \"Value is null or undefined\");\n    }\n}\n","// https://github.com/lodash/lodash/blob/master/isPlainObject.js\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n    if (!isObjectLike(value) || String(value) !== \"[object Object]\") {\n        return false;\n    }\n    if (Object.getPrototypeOf(value) == null) {\n        return true;\n    }\n    let proto = value;\n    while (Object.getPrototypeOf(proto) != null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(value) === proto;\n}\n\nfunction isObjectLike(value: unknown) {\n    return typeof value === \"object\" && value != null;\n}\n\nexport default isPlainObject;\n","/**\n * validates and sanitizes a base URL.\n * returns null if the URL cannot be coerced into a valid URL.\n */\nexport function sanitizeUrl(url: string | undefined): string | undefined {\n    if (!url) {\n        return undefined;\n    }\n\n    // handle protocol-relative URLs (starting with //)\n    if (url.startsWith(\"//\")) {\n        try {\n            const parsedUrl = new URL(`https:${url}`);\n            return parsedUrl.toString();\n        } catch {\n            return undefined;\n        }\n    }\n\n    // handle URLs without protocol\n    if (\n        !url.startsWith(\"http://\") &&\n        !url.startsWith(\"https://\") &&\n        !url.startsWith(\"wss://\") &&\n        !url.startsWith(\"ws://\") &&\n        !url.startsWith(\"mailto:\") &&\n        !url.startsWith(\"tel:\")\n    ) {\n        try {\n            const parsedUrl = new URL(`https://${url}`);\n            return parsedUrl.toString();\n        } catch {\n            return undefined;\n        }\n    }\n\n    // validate complete URLs\n    try {\n        const parsedUrl = new URL(url);\n        return parsedUrl.toString();\n    } catch {\n        return undefined;\n    }\n}\n","import title from \"title\";\n\nimport { SPECIAL_TOKENS } from \"./specialTokens\";\n\nexport function titleCase(name: string): string {\n    // regex match pascalCase or CamelCase and add spaces between words\n    name = name.replace(/([a-z])([A-Z])/g, \"$1 $2\");\n\n    // regex match snake_case and replace \"_\" with \" \"\n    name = name.replace(/_/g, \" \");\n\n    // regex match kebab-case and replace \"-\" with \" \"\n    name = name.replace(/-/g, \" \");\n\n    const titleCased = title(name, { special: SPECIAL_TOKENS });\n\n    // regex match \"V 2\", \"V 4\", etc. and replace it with \"V2\", \"V4\", etc.\n    const versionedTitle = titleCased.replace(/V\\s(\\d)/g, \"V$1\");\n    return versionedTitle;\n}\n\nexport default titleCase;\n","export const SPECIAL_TOKENS = [\n    // privacy\n    \"PII\",\n    \"PHI\",\n    \"PCI\",\n    \"GDPR\",\n    \"CCPA\",\n    \"HIPAA\",\n    \"COPPA\",\n    \"FERPA\",\n    \"GLBA\",\n    \"SOX\",\n    \"FISMA\",\n    \"NIST\",\n    \"CIS\",\n    \"ISO\",\n    \"IEC\",\n    \"ITAR\",\n    \"EAR\",\n    \"CMMC\",\n    \"CUI\",\n    \"CDI\",\n    \"FTC\",\n    \"FCC\",\n    \"SEC\",\n    \"FINRA\",\n\n    // security\n    \"XSS\",\n    \"CSRF\",\n    \"SSRF\",\n    \"XSRF\",\n    \"TLS\",\n    \"SSL\",\n    \"SSH\",\n    \"API\",\n    \"OAuth\",\n    \"OAuth1\",\n    \"OAuth1.0\",\n    \"OAuth2\",\n    \"OAuth2.0\",\n    \"SAML\",\n    \"SCIM\",\n    \"SSO\",\n    \"OpenID\",\n    \"OpenID Connect\",\n    \"CAPTCHA\",\n    \"reCAPTCHA\",\n    \"2FA\",\n    \"MFA\",\n    \"OTP\",\n    \"TOTP\",\n    \"HOTP\",\n    \"U2F\",\n    \"FIDO\",\n    \"FIDO2\",\n    \"PKI\",\n    \"HMAC\",\n    \"AES\",\n    \"RSA\",\n    \"SHA\",\n    \"MD5\",\n    \"BCrypt\",\n    \"PBKDF2\",\n    \"Argon2\",\n    \"SCrypt\",\n    \"JWT\",\n    \"JWE\",\n    \"JWS\",\n    \"JWK\",\n    \"JWA\",\n    \"JOSE\",\n\n    // shopping\n    \"SKU\",\n    \"SKUs\",\n    \"UPC\",\n    \"EAN\",\n    \"ISBN\",\n    \"ASIN\",\n    \"MPN\",\n    \"MSRP\",\n    \"RRP\",\n    \"MSRP\",\n\n    // time\n    \"AM\",\n    \"PM\",\n    \"UTC\",\n    \"GMT\",\n    \"PST\",\n    \"PDT\",\n    \"EST\",\n    \"EDT\",\n    \"CST\",\n    \"CDT\",\n    \"MST\",\n    \"MDT\",\n\n    // geography\n    \"USA\",\n    \"UK\",\n    \"EU\",\n    \"UAE\",\n    \"APAC\",\n    \"EMEA\",\n    \"LATAM\",\n    \"ANZ\",\n    \"SEA\",\n    \"MEA\",\n    \"MENA\",\n    \"NATO\",\n    \"NA\",\n    \"SA\",\n    \"CA\",\n    \"EU\",\n    \"AU\",\n    \"NZ\",\n    \"JP\",\n    \"KR\",\n    \"CN\",\n    \"HK\",\n    \"TW\",\n    \"SG\",\n    \"MY\",\n    \"TH\",\n    \"ID\",\n    \"PH\",\n    \"VN\",\n    \"IN\",\n    \"PK\",\n    \"BD\",\n    \"LK\",\n    \"NP\",\n    \"MM\",\n    \"KH\",\n    \"LA\",\n    \"MM\",\n    \"BT\",\n    \"MV\",\n\n    // finance\n    \"ACH\",\n    \"USD\",\n    \"EUR\",\n    \"GBP\",\n    \"JPY\",\n    \"CNY\",\n    \"RUB\",\n    \"INR\",\n    \"AUD\",\n    \"CAD\",\n    \"CHF\",\n    \"SGD\",\n    \"MYR\",\n    \"THB\",\n    \"IDR\",\n    \"KRW\",\n    \"PHP\",\n    \"VND\",\n    \"HKD\",\n    \"TWD\",\n    \"MXN\",\n    \"BRL\",\n    \"ARS\",\n    \"CLP\",\n    \"COP\",\n    \"PEN\",\n    \"ZAR\",\n    \"NGN\",\n    \"EGP\",\n    \"AED\",\n    \"SAR\",\n    \"ILS\",\n    \"TRY\",\n    \"SEK\",\n    \"NOK\",\n    \"DKK\",\n    \"ISK\",\n    \"HUF\",\n    \"PLN\",\n    \"CZK\",\n    \"RON\",\n    \"BGN\",\n\n    // programming\n    \"API\",\n    \"APIs\",\n    \"SDK\",\n    \"SDKs\",\n    \"AI\",\n    \"OCR\",\n    \"REST\",\n    \"SOAP\",\n    \"JSON\",\n    \"XML\",\n    \"HTTP\",\n    \"HTTPS\",\n    \"URI\",\n    \"URL\",\n    \"CRUD\",\n    \"RESTful\",\n    \"KYB\",\n    \"KYC\",\n    \"AML\",\n    \"HTML\",\n    \"CSS\",\n    \"JS\",\n    \"SQL\",\n    \"DB\",\n    \"UI\",\n    \"UX\",\n    \"SaaS\",\n    \"PaaS\",\n    \"IaaS\",\n    \"IP\",\n    \"TCP\",\n    \"UDP\",\n    \"DNS\",\n    \"FTP\",\n    \"SMTP\",\n    \"IMAP\",\n    \"POP3\",\n    \"CSV\",\n    \"MVC\",\n    \"MVP\",\n    \"MVVM\",\n    \"DOM\",\n    \"SPA\",\n    \"SSR\",\n    \"CSR\",\n    \"DDoS\",\n    \"CDN\",\n    \"IoT\",\n    \"ML\",\n    \"DL\",\n    \"NLP\",\n    \"CLI\",\n    \"GUI\",\n    \"BI\",\n    \"ETL\",\n    \"RDBMS\",\n    \"NoSQL\",\n    \"IDE\",\n    \"CMS\",\n    \"CCPA\",\n    \"POSIX\",\n    \"ABI\",\n    \"API\",\n    \"AST\",\n    \"COBOL\",\n    \"DDL\",\n    \"DML\",\n\n    // AI-related\n    \"NN\", // Neural Network\n    \"CNN\", // Convolutional Neural Network\n    \"RNN\", // Recurrent Neural Network\n    \"LSTM\", // Long Short Term Memory\n    \"GRU\", // Gated Recurrent Unit\n    \"ANN\", // Artificial Neural Network\n    \"GAN\", // Generative Adversarial Network\n    \"RL\", // Reinforcement Learning\n    \"DL\", // Deep Learning\n    \"ML\", // Machine Learning\n    \"NLP\", // Natural Language Processing\n    \"NLG\", // Natural Language Generation\n    \"NLU\", // Natural Language Understanding\n    \"BERT\", // Bidirectional Encoder Representations from Transformers\n    \"GPT\", // Generative Pre-training Transformer\n    \"SVM\", // Support Vector Machine\n    \"PCA\", // Principal Component Analysis\n    \"AI\", // Artificial Intelligence\n    \"CV\", // Computer Vision\n    \"TF\", // TensorFlow\n    \"TTS\", // Text-to-Speech\n    \"ASR\", // Automatic Speech Recognition\n    \"HMM\", // Hidden Markov Model\n    \"DNN\", // Deep Neural Network\n    \"MLP\", // Multi-Layer Perceptron\n    \"RBM\", // Restricted Boltzmann Machine\n    \"CRF\", // Conditional Random Field\n\n    // Media\n    \"PDF\",\n    \"PDFs\",\n    \"RTF\",\n    \"TXT\",\n    \"XLS\",\n    \"XLSX\",\n    \"PPT\",\n\n    // Image\n    \"JPG\",\n    \"JPEG\",\n    \"PNG\",\n    \"GIF\",\n    \"GIFs\",\n    \"SVG\",\n    \"TIFF\",\n    \"BMP\",\n    \"ICO\",\n    \"PSD\",\n    \"WebP\",\n    \"AVIF\",\n    \"HEIF\",\n    \"HEIC\",\n    \"EPS\",\n\n    // Audio\n    \"MP3\",\n    \"WAV\",\n    \"AIFF\",\n    \"FLAC\",\n    \"WMA\",\n    \"AAC\",\n    \"OGG\",\n\n    // Video\n    \"AVI\",\n    \"WMV\",\n    \"MOV\",\n    \"M4V\",\n    \"MP4\",\n    \"MPG\",\n    \"MPEG\",\n    \"FLV\",\n    \"SWF\",\n    \"MKV\",\n    \"WebM\",\n\n    // Cloud Computing\n    \"GCP\", // Google Cloud Platform\n    \"AWS\", // Amazon Web Services\n    \"VM\", // Virtual Machines\n    \"VPC\", // Virtual Private Cloud\n    \"S3\", // AWS Simple Storage Service\n    \"EC2\", // AWS Elastic Compute Cloud\n\n    // Data Storage and Databases\n    \"DynamoDB\",\n    \"CosmosDB\",\n    \"BigQuery\",\n    \"CI/CD\",\n\n    // Security and Compliance\n    \"SOC1\", // Service Organization Control 1\n    \"SOC2\", // Service Organization Control 2\n    \"SOC3\", // Service Organization Control 3\n    \"PCI DSS\", // Payment Card Industry Data Security Standard\n    \"WAF\", // Web Application Firewall\n    \"IAM\", // Identity and Access Management\n\n    // Networking\n    \"SDN\", // Software-Defined Networking\n    \"MPLS\", // Multi-Protocol Label Switching\n    \"BGP\", // Border Gateway Protocol\n\n    // Frameworks and Libraries\n    \"Vue.js\",\n    \"Node.js\",\n    \".NET\"\n];\n","interface Opts {\n    renderNull?: boolean;\n}\n\nexport function unknownToString(value: unknown, { renderNull = false }: Opts = {}): string {\n    if (value == null || typeof value === \"function\") {\n        return renderNull ? \"null\" : \"\";\n    } else if (typeof value === \"string\") {\n        return value;\n    }\n    return JSON.stringify(value);\n}\n\nexport default unknownToString;\n","import { assertNever } from \"./assertNever\";\n\nexport type DiscriminatedUnionVisitor<T extends Record<Discriminant, string>, U, Discriminant extends string> = {\n    [D in T[Discriminant]]: (value: Extract<T, Record<Discriminant, D>>) => U;\n} & {\n    _other?: (value: Record<Discriminant, string>) => U;\n};\n\nexport function visitDiscriminatedUnion<T extends Record<\"type\", string>>(\n    item: T\n): { _visit: <U>(visitor: DiscriminatedUnionVisitor<T, U, \"type\">) => U };\nexport function visitDiscriminatedUnion<T extends Record<Discriminant, string>, Discriminant extends string>(\n    item: T,\n    discriminant: Discriminant\n): { _visit: <U>(visitor: DiscriminatedUnionVisitor<T, U, Discriminant>) => U };\nexport function visitDiscriminatedUnion<T extends Record<Discriminant, string>, Discriminant extends string>(\n    item: T,\n    discriminant: Discriminant = \"type\" as Discriminant\n): {\n    _visit: <U>(visitor: DiscriminatedUnionVisitor<T, U, Discriminant>) => U;\n} {\n    return {\n        _visit: (visitor) => {\n            const visit = visitor[item[discriminant]];\n            if (visit != null) {\n                return visit(item as Extract<T, Record<Discriminant, string>>);\n            } else {\n                if (visitor._other == null) {\n                    assertNever(item as never);\n                }\n                return visitor._other(item);\n            }\n        }\n    };\n}\n\nexport default visitDiscriminatedUnion;\n","import { isPlainObject } from \"@fern-api/ui-core-utils\";\nimport visitDiscriminatedUnion from \"@fern-api/ui-core-utils/visitDiscriminatedUnion\";\nimport { compact, sortBy } from \"es-toolkit/array\";\n\nimport { AvailabilityOrder, coalesceAvailability } from \"./availability\";\nimport { LOOP_TOLERANCE } from \"./const\";\nimport * as Latest from \"./latest\";\nimport type { DereferencedNonOptionalTypeShapeOrReference, TypeShapeOrReference } from \"./types\";\n\nexport type UnwrappedReference = {\n    shape: DereferencedNonOptionalTypeShapeOrReference;\n    availability: Latest.Availability | undefined;\n    descriptions: string[];\n    visitedTypeIds: Set<Latest.TypeId>;\n    isOptional: boolean;\n    isNullable: boolean;\n    default?: unknown;\n};\n\nexport type UnwrappedObjectType = {\n    properties: Latest.ObjectProperty[];\n    extraProperties: Latest.TypeReference | null | undefined;\n    descriptions: string[];\n    visitedTypeIds: Set<Latest.TypeId>;\n};\n\ntype InternalDefaultValue =\n    | { type: \"unknown\"; value: unknown }\n    | { type: \"typeReferenceId\"; value: Latest.TypeReferenceIdDefault };\n\n/**\n * Cache for unwrapped references. Perform the unwrapping only once.\n */\nconst UnwrapReferenceCache = new WeakMap<TypeShapeOrReference, UnwrappedReference>();\n\n/**\n * A TypeShape or TypeReference might be an alias or reference to another type.\n * This function unwraps the reference, including any optional wrappers, to get the actual shape.\n *\n * When optionals are detected, attempt to find the default value for the shape.\n * Since aliases can be recursive, the first default value found is returned, which can be contained in:\n * - the optional wrapper\n * - the type reference id\n * - the primitive or literal shape itself\n *\n * @param typeRef to unwrap\n * @param types from the API definition\n * @returns UnwrappedReference containing the shape, whether it is optional, and the default value if it exists\n */\nexport function unwrapReference(\n    typeRef: TypeShapeOrReference,\n    types: Record<string, Latest.TypeDefinition>\n): UnwrappedReference;\nexport function unwrapReference(\n    typeRef: TypeShapeOrReference | undefined,\n    types: Record<string, Latest.TypeDefinition>\n): UnwrappedReference | undefined;\nexport function unwrapReference(\n    typeRef: TypeShapeOrReference | undefined,\n    types: Record<string, Latest.TypeDefinition>\n): UnwrappedReference | undefined {\n    if (typeRef == null) {\n        return undefined;\n    }\n\n    const cached = UnwrapReferenceCache.get(typeRef);\n    if (cached != null) {\n        return cached;\n    }\n\n    let isOptional = false;\n    let isNullable = false;\n    const defaults: InternalDefaultValue[] = [];\n    const descriptions: string[] = [];\n    const availabilities: Latest.Availability[] = [];\n\n    const visitedTypeIds = new Set<Latest.TypeId>();\n    let internalTypeRef: TypeShapeOrReference | undefined = typeRef;\n    let loop = 0;\n    let circularReference = false;\n    while (internalTypeRef != null) {\n        if (loop > LOOP_TOLERANCE) {\n            // infinite loop detected\n            internalTypeRef = undefined;\n            break;\n        }\n\n        if (internalTypeRef.type === \"nullable\") {\n            isNullable = true;\n            internalTypeRef = internalTypeRef.shape;\n        } else if (internalTypeRef.type === \"optional\") {\n            isOptional = true;\n            if (internalTypeRef.default != null) {\n                defaults.push({\n                    type: \"unknown\",\n                    value: internalTypeRef.default\n                });\n            }\n            internalTypeRef = internalTypeRef.shape;\n        } else if (internalTypeRef.type === \"alias\") {\n            internalTypeRef = internalTypeRef.value;\n        } else if (internalTypeRef.type === \"id\") {\n            if (visitedTypeIds.has(internalTypeRef.id)) {\n                // circular reference detected\n                internalTypeRef = undefined;\n                circularReference = true;\n                break;\n            }\n\n            if (internalTypeRef.default != null) {\n                defaults.push({\n                    type: \"typeReferenceId\",\n                    value: internalTypeRef.default\n                });\n            }\n            const typeDef: Latest.TypeDefinition | undefined = types[internalTypeRef.id];\n            visitedTypeIds.add(internalTypeRef.id);\n            internalTypeRef = typeDef?.shape;\n            if (typeDef != null) {\n                if (typeDef.availability) {\n                    availabilities.push(typeDef.availability);\n                }\n\n                if (typeDef.description != null) {\n                    descriptions.push(typeDef.description);\n                }\n            }\n        } else {\n            break;\n        }\n\n        loop++;\n    }\n\n    if (internalTypeRef == null) {\n        // Note: this should be a fatal error, but we're handling it gracefully for now\n        if (circularReference) {\n            console.error(\n                `Circular reference detected. Falling back to unknown type. types=[${[...visitedTypeIds].join(\", \")}]`\n            );\n        } else {\n            console.error(\n                `Type reference is invalid. Falling back to unknown type. types=[${[...visitedTypeIds].join(\", \")}]`\n            );\n        }\n    }\n\n    const toRet = {\n        shape: internalTypeRef ?? { type: \"unknown\", displayName: undefined },\n        availability: coalesceAvailability(availabilities),\n        visitedTypeIds,\n        isOptional,\n        isNullable,\n        default: selectDefaultValue(internalTypeRef, defaults),\n        descriptions\n    };\n\n    UnwrapReferenceCache.set(typeRef, toRet);\n\n    return toRet;\n}\n\nfunction selectDefaultValue(\n    shape: DereferencedNonOptionalTypeShapeOrReference | undefined,\n    defaults: InternalDefaultValue[]\n): unknown | undefined {\n    const defaultValue = defaults.find((d) => {\n        // If the shape is unknown, we can't validate the default value, so we assume it's always the first one\n        if (shape == null) {\n            return true;\n        }\n\n        // if a typeReferenceId is found, we need to validate that the default value is compatible with the shape\n        else if (d.type === \"typeReferenceId\") {\n            return visitDiscriminatedUnion(d.value)._visit({\n                enum: () => shape?.type === \"enum\"\n            });\n        }\n\n        // TODO: validate that the default value is compatible with the shape\n        else {\n            return true;\n        }\n    });\n\n    if (defaultValue?.type === \"unknown\") {\n        return defaultValue.value;\n    } else if (defaultValue?.type === \"typeReferenceId\") {\n        return defaultValue.value.value;\n    } else if (shape?.type === \"primitive\") {\n        return primitiveToDefault(shape.value);\n    } else if (shape?.type === \"enum\") {\n        return shape.default;\n    } else {\n        return undefined;\n    }\n}\n\nconst UnwrapObjectTypeCache = new WeakMap<Latest.ObjectType, UnwrappedObjectType>();\n\n/**\n * Dereferences extended objects and returns all properties of the object.\n * If an object extends another object, the properties of the extended object will be sorted alphabetically.\n * Additionally, required properties will come before optional properties.\n *\n * @param object to dereference\n * @param types from the API definition\n * @returns the properties of the object, including properties from extended objects\n */\nexport function unwrapObjectType(\n    object: Latest.ObjectType,\n    types: Record<Latest.TypeId, Latest.TypeDefinition>,\n    parentVisitedTypeIds?: Set<Latest.TypeId>\n): UnwrappedObjectType {\n    const cached = UnwrapObjectTypeCache.get(object);\n    if (cached != null) {\n        return cached;\n    }\n\n    const directProperties = object.properties;\n    const extraProperties = object.extraProperties;\n    const descriptions: string[] = [];\n    const visitedTypeIds = new Set<Latest.TypeId>();\n    const extendedProperties = object.extends.flatMap((typeId): Latest.ObjectProperty[] => {\n        if (parentVisitedTypeIds?.has(typeId)) {\n            console.error(`Circular reference detected. Cannot extend type=${typeId}`);\n            return [];\n        }\n\n        const typeDef = types[typeId];\n        visitedTypeIds.add(typeId);\n        if (typeDef?.description) {\n            descriptions.push(typeDef.description);\n        }\n\n        const unwrapped = unwrapReference(typeDef?.shape, types);\n        unwrapped?.descriptions.forEach((description) => descriptions.push(description));\n        unwrapped?.visitedTypeIds.forEach((typeId) => visitedTypeIds.add(typeId));\n\n        // TODO: should we be able to extend discriminated and undiscriminated unions?\n        if (unwrapped?.shape.type !== \"object\") {\n            console.warn(\"Object extends non-object\", typeId);\n            return [];\n        }\n        const extended = unwrapObjectType(unwrapped.shape, types, visitedTypeIds);\n        extended.visitedTypeIds.forEach((typeId) => visitedTypeIds.add(typeId));\n\n        // merge the availability of the extended object with the availability of the properties\n        // use a local variable to avoid mutating the cached result\n        const extendedPropsWithAvailability = extended.properties.map((property) => {\n            return {\n                ...property,\n                availability: coalesceAvailability(\n                    compact([typeDef?.availability, unwrapped.availability, property.availability])\n                )\n            };\n        });\n\n        descriptions.push(...extended.descriptions);\n\n        if (!unwrapped.isOptional) {\n            return extendedPropsWithAvailability;\n        }\n\n        // if the extended object is optional, we need to make all properties optional\n        return extendedPropsWithAvailability.map((property): Latest.ObjectProperty => {\n            // if a default value is present for the referenced object, we can find the default value for this property\n            const defaultProperty = isPlainObject(unwrapped.default) ? unwrapped.default[property.key] : undefined;\n\n            const valueShape: Latest.TypeReference.Optional =\n                property.valueShape.type === \"alias\" && property.valueShape.value.type === \"optional\"\n                    ? {\n                          ...property.valueShape.value,\n                          default: defaultProperty ?? property.valueShape.value.default\n                      }\n                    : {\n                          type: \"optional\",\n                          shape: property.valueShape,\n                          default: defaultProperty\n                      };\n\n            return {\n                ...property,\n                valueShape: { type: \"alias\", value: valueShape }\n            };\n        });\n    });\n\n    if (extendedProperties.length === 0) {\n        // if there are no extended properties, we can just return the direct properties\n        // required properties should come before optional properties\n        // however, we do NOT sort the properties by key because the initial order of properties may be significant\n        const properties = sortBy(\n            [...directProperties],\n            [\n                (property) => unwrapReference(property.valueShape, types)?.isOptional,\n                (property) => AvailabilityOrder.indexOf(property.availability ?? Latest.Availability.Stable)\n            ]\n        );\n        const toRet = {\n            properties,\n            descriptions,\n            extraProperties,\n            visitedTypeIds\n        };\n        UnwrapObjectTypeCache.set(object, toRet);\n        return toRet;\n    }\n    const propertyKeys = new Set(object.properties.map((property) => property.key));\n    // deduplicate extended properties: remove those that conflict with direct properties,\n    // and also remove duplicates between different extends chains (keep first occurrence)\n    const seenExtendedKeys = new Set<string>();\n    const filteredExtendedProperties = extendedProperties.filter((extendedProperty) => {\n        if (propertyKeys.has(extendedProperty.key) || seenExtendedKeys.has(extendedProperty.key)) {\n            return false;\n        }\n        seenExtendedKeys.add(extendedProperty.key);\n        return true;\n    });\n\n    // required properties should come before optional properties\n    // since there are extended properties, the initial order of properties are not significant, and we should sort by key\n    const properties = sortBy(\n        [...directProperties, ...filteredExtendedProperties],\n        [\n            (property) => unwrapReference(property.valueShape, types)?.isOptional,\n            (property) => AvailabilityOrder.indexOf(property.availability ?? Latest.Availability.Stable),\n            (property) => property.key\n        ]\n    );\n    const toRet = { properties, descriptions, extraProperties, visitedTypeIds };\n    UnwrapObjectTypeCache.set(object, toRet);\n    return toRet;\n}\n\n/**\n * The discriminant of a discriminated union is converted to a literal type, *prepended* to the additional properties.\n */\nexport function unwrapDiscriminatedUnionVariant(\n    union: Pick<Latest.DiscriminatedUnionType, \"discriminant\">,\n    variant: Latest.DiscriminatedUnionVariant,\n    types: Record<string, Latest.TypeDefinition>\n): UnwrappedObjectType {\n    const { properties, descriptions, visitedTypeIds } = unwrapObjectType(variant, types); // this is already cached\n    return {\n        properties: [\n            {\n                key: union.discriminant,\n                valueShape: {\n                    type: \"alias\",\n                    value: {\n                        type: \"literal\",\n                        value: {\n                            type: \"stringLiteral\",\n                            value: variant.discriminantValue\n                        }\n                    }\n                },\n                propertyAccess: undefined,\n                // the description and availability of the discriminant should not be included here\n                // because they are already included in the union variant itself\n                description: undefined,\n                availability: undefined\n            },\n            ...properties\n        ],\n        extraProperties: undefined,\n        descriptions,\n        visitedTypeIds\n    };\n}\n\nfunction primitiveToDefault(shape: Latest.PrimitiveType): unknown | undefined {\n    return visitDiscriminatedUnion(shape, \"type\")._visit<unknown | undefined>({\n        string: (value) => value.default,\n        integer: (value) => value.default,\n        double: (value) => value.default,\n        uint: () => undefined,\n        uint64: () => undefined,\n        boolean: (value) => value.default,\n        long: (value) => value.default,\n        datetime: (datetime) => datetime.default,\n        uuid: (uuid) => uuid.default,\n        base64: (base64) => base64.default,\n        date: (value) => value.default,\n        bigInteger: (value) => value.default,\n        scalar: (value) => value.default\n    });\n}\n","import * as z from \"zod\";\n\nimport {\n    AuthSchemeIdSchema,\n    AvailabilitySchema,\n    Base64TypeSchema,\n    BigIntegerTypeSchema,\n    BooleanTypeSchema,\n    DateTypeSchema,\n    DatetimeTypeSchema,\n    DoubleTypeSchema,\n    EndpointIdSchema,\n    EndpointPathPartSchema,\n    EnvironmentIdSchema,\n    EnvironmentSchema,\n    GraphQlOperationIdSchema,\n    HttpMethodSchema,\n    IntegerTypeSchema,\n    LongTypeSchema,\n    MultipleAuthTypeSchema,\n    PropertyKeySchema,\n    ProtocolSchema,\n    ScalarTypeSchema,\n    StringTypeSchema,\n    SubpackageIdSchema,\n    TypeIdSchema,\n    Uint64TypeSchema,\n    UintTypeSchema,\n    UuidTypeSchema,\n    WebhookHttpMethodSchema,\n    WebhookIdSchema,\n    WebSocketIdSchema,\n    WebSocketMessageIdSchema,\n    WebSocketMessageOriginSchema\n} from \"./shared.js\";\n\n// ── Latest commons ───────────────────────────────────────────────────────\n\nexport const PathPartSchema = EndpointPathPartSchema;\nexport type PathPart = z.infer<typeof PathPartSchema>;\n\nexport const WithNamespaceSchema = z.object({\n    namespace: z.array(SubpackageIdSchema).nullish()\n});\nexport type WithNamespace = z.infer<typeof WithNamespaceSchema>;\n\n// ── Latest auth ──────────────────────────────────────────────────────────\n\nimport { BasicAuthSchema, BearerAuthSchema, HeaderAuthSchema, OAuthSchema } from \"./shared.js\";\n\nexport { BasicAuthSchema, BearerAuthSchema, HeaderAuthSchema, OAuthSchema };\n\nexport const LatestAuthSchemeSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"bearerAuth\"), ...BearerAuthSchema.shape }),\n    z.object({ type: z.literal(\"basicAuth\"), ...BasicAuthSchema.shape }),\n    z.object({ type: z.literal(\"header\"), ...HeaderAuthSchema.shape }),\n    z.object({ type: z.literal(\"oAuth\"), value: OAuthSchema })\n]);\nexport type LatestAuthScheme = z.infer<typeof LatestAuthSchemeSchema>;\n\n// ── Latest type ──────────────────────────────────────────────────────────\n\nexport const LatestObjectPropertyAccessSchema = z.enum([\"READ_ONLY\", \"WRITE_ONLY\"]);\nexport type LatestObjectPropertyAccess = z.infer<typeof LatestObjectPropertyAccessSchema>;\n\nexport const LatestTypeReferenceIdDefaultSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"enum\"), value: z.string() })\n]);\nexport type LatestTypeReferenceIdDefault = z.infer<typeof LatestTypeReferenceIdDefaultSchema>;\n\nexport const LatestPrimitiveTypeSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"integer\"), ...IntegerTypeSchema.shape }),\n    z.object({ type: z.literal(\"double\"), ...DoubleTypeSchema.shape }),\n    z.object({ type: z.literal(\"string\"), ...StringTypeSchema.shape }),\n    z.object({ type: z.literal(\"long\"), ...LongTypeSchema.shape }),\n    z.object({ type: z.literal(\"boolean\"), ...BooleanTypeSchema.shape }),\n    z.object({ type: z.literal(\"datetime\"), ...DatetimeTypeSchema.shape }),\n    z.object({ type: z.literal(\"uuid\"), ...UuidTypeSchema.shape }),\n    z.object({ type: z.literal(\"base64\"), ...Base64TypeSchema.shape }),\n    z.object({ type: z.literal(\"date\"), ...DateTypeSchema.shape }),\n    z.object({ type: z.literal(\"bigInteger\"), ...BigIntegerTypeSchema.shape }),\n    z.object({ type: z.literal(\"uint\"), ...UintTypeSchema.shape }),\n    z.object({ type: z.literal(\"uint64\"), ...Uint64TypeSchema.shape }),\n    z.object({ type: z.literal(\"scalar\"), ...ScalarTypeSchema.shape })\n]);\nexport type LatestPrimitiveType = z.infer<typeof LatestPrimitiveTypeSchema>;\n\nexport const LatestLiteralTypeSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"booleanLiteral\"), value: z.boolean() }),\n    z.object({ type: z.literal(\"stringLiteral\"), value: z.string() })\n]);\nexport type LatestLiteralType = z.infer<typeof LatestLiteralTypeSchema>;\n\nexport const LatestUnknownTypeSchema = z.object({\n    displayName: z.string().nullish()\n});\nexport type LatestUnknownType = z.infer<typeof LatestUnknownTypeSchema>;\n\nexport const LatestEnumValueSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    value: z.string()\n});\nexport type LatestEnumValue = z.infer<typeof LatestEnumValueSchema>;\n\nexport const LatestEnumTypeSchema = z.object({\n    default: z.string().nullish(),\n    values: z.array(LatestEnumValueSchema)\n});\nexport type LatestEnumType = z.infer<typeof LatestEnumTypeSchema>;\n\nexport type LatestTypeShape =\n    | LatestTypeShape.Alias\n    | LatestTypeShape.Enum\n    | LatestTypeShape.UndiscriminatedUnion\n    | LatestTypeShape.DiscriminatedUnion\n    | LatestTypeShape.Object_;\n\nexport namespace LatestTypeShape {\n    export interface Alias {\n        type: \"alias\";\n        value: LatestTypeReference;\n    }\n    export interface Enum extends LatestEnumType {\n        type: \"enum\";\n    }\n    export interface UndiscriminatedUnion extends LatestUndiscriminatedUnionType {\n        type: \"undiscriminatedUnion\";\n    }\n    export interface DiscriminatedUnion extends LatestDiscriminatedUnionType {\n        type: \"discriminatedUnion\";\n    }\n    export interface Object_ extends LatestObjectType {\n        type: \"object\";\n    }\n}\n\nexport type LatestTypeReference =\n    | LatestTypeReference.Id\n    | LatestTypeReference.Primitive\n    | LatestTypeReference.Optional\n    | LatestTypeReference.Nullable\n    | LatestTypeReference.List\n    | LatestTypeReference.Set\n    | LatestTypeReference.Map\n    | LatestTypeReference.Literal\n    | LatestTypeReference.Unknown;\n\nexport namespace LatestTypeReference {\n    export interface Id {\n        type: \"id\";\n        id: string;\n        default?: LatestTypeReferenceIdDefault | null;\n    }\n    export interface Primitive {\n        type: \"primitive\";\n        value: LatestPrimitiveType;\n    }\n    export interface Optional {\n        type: \"optional\";\n        shape: LatestTypeShape;\n        default?: unknown | null;\n    }\n    export interface Nullable {\n        type: \"nullable\";\n        shape: LatestTypeShape;\n    }\n    export interface List {\n        type: \"list\";\n        itemShape: LatestTypeShape;\n        minItems?: number | null;\n        maxItems?: number | null;\n    }\n    export interface Set {\n        type: \"set\";\n        itemShape: LatestTypeShape;\n        minItems?: number | null;\n        maxItems?: number | null;\n    }\n    export interface Map {\n        type: \"map\";\n        keyShape: LatestTypeShape;\n        valueShape: LatestTypeShape;\n        minProperties?: number | null;\n        maxProperties?: number | null;\n    }\n    export interface Literal {\n        type: \"literal\";\n        value: LatestLiteralType;\n    }\n    export interface Unknown extends LatestUnknownType {\n        type: \"unknown\";\n    }\n}\n\nexport interface LatestObjectType {\n    extends: string[];\n    properties: LatestObjectProperty[];\n    extraProperties?: LatestTypeReference | null;\n}\n\nexport interface LatestObjectProperty {\n    description?: string | null;\n    availability?: z.infer<typeof AvailabilitySchema> | null;\n    key: string;\n    valueShape: LatestTypeShape;\n    propertyAccess?: LatestObjectPropertyAccess | null;\n}\n\nexport interface LatestParameterProperty extends LatestObjectProperty {\n    explode?: boolean | null;\n}\n\nexport interface LatestUndiscriminatedUnionVariant {\n    description?: string | null;\n    availability?: z.infer<typeof AvailabilitySchema> | null;\n    displayName?: string | null;\n    shape: LatestTypeShape;\n}\n\nexport interface LatestUndiscriminatedUnionType {\n    variants: LatestUndiscriminatedUnionVariant[];\n}\n\nexport interface LatestDiscriminatedUnionVariant extends LatestObjectType {\n    description?: string | null;\n    availability?: z.infer<typeof AvailabilitySchema> | null;\n    discriminantValue: string;\n    displayName?: string | null;\n}\n\nexport interface LatestDiscriminatedUnionType {\n    discriminant: string;\n    variants: LatestDiscriminatedUnionVariant[];\n}\n\nexport const LatestObjectPropertySchema: z.ZodType<LatestObjectProperty> = z.lazy(() =>\n    z.object({\n        description: z.string().nullish(),\n        availability: AvailabilitySchema.nullish(),\n        key: PropertyKeySchema,\n        valueShape: LatestTypeShapeSchema,\n        propertyAccess: LatestObjectPropertyAccessSchema.nullish()\n    })\n);\n\nexport const LatestParameterPropertySchema: z.ZodType<LatestParameterProperty> = z.lazy(() =>\n    z.object({\n        description: z.string().nullish(),\n        availability: AvailabilitySchema.nullish(),\n        key: PropertyKeySchema,\n        valueShape: LatestTypeShapeSchema,\n        propertyAccess: LatestObjectPropertyAccessSchema.nullish(),\n        explode: z.boolean().nullish()\n    })\n);\n\nexport const LatestObjectTypeSchema: z.ZodType<LatestObjectType> = z.lazy(() =>\n    z.object({\n        extends: z.array(TypeIdSchema),\n        properties: z.array(LatestObjectPropertySchema),\n        extraProperties: LatestTypeReferenceSchema.nullish()\n    })\n);\n\nexport const LatestUndiscriminatedUnionVariantSchema: z.ZodType<LatestUndiscriminatedUnionVariant> = z.lazy(() =>\n    z.object({\n        description: z.string().nullish(),\n        availability: AvailabilitySchema.nullish(),\n        displayName: z.string().nullish(),\n        shape: LatestTypeShapeSchema\n    })\n);\n\nexport const LatestUndiscriminatedUnionTypeSchema: z.ZodType<LatestUndiscriminatedUnionType> = z.lazy(() =>\n    z.object({\n        variants: z.array(LatestUndiscriminatedUnionVariantSchema)\n    })\n);\n\nexport const LatestDiscriminatedUnionVariantSchema: z.ZodType<LatestDiscriminatedUnionVariant> = z.lazy(() =>\n    z.object({\n        description: z.string().nullish(),\n        availability: AvailabilitySchema.nullish(),\n        discriminantValue: z.string(),\n        displayName: z.string().nullish(),\n        extends: z.array(TypeIdSchema),\n        properties: z.array(LatestObjectPropertySchema),\n        extraProperties: LatestTypeReferenceSchema.nullish()\n    })\n);\n\nexport const LatestDiscriminatedUnionTypeSchema: z.ZodType<LatestDiscriminatedUnionType> = z.lazy(() =>\n    z.object({\n        discriminant: PropertyKeySchema,\n        variants: z.array(LatestDiscriminatedUnionVariantSchema)\n    })\n);\n\nexport const LatestTypeShapeSchema: z.ZodType<LatestTypeShape> = z.lazy(() =>\n    z.discriminatedUnion(\"type\", [\n        z.object({\n            type: z.literal(\"alias\"),\n            value: LatestTypeReferenceSchema\n        }),\n        z.object({\n            type: z.literal(\"enum\"),\n            default: z.string().nullish(),\n            values: z.array(LatestEnumValueSchema)\n        }),\n        z.object({\n            type: z.literal(\"undiscriminatedUnion\"),\n            variants: z.array(LatestUndiscriminatedUnionVariantSchema)\n        }),\n        z.object({\n            type: z.literal(\"discriminatedUnion\"),\n            discriminant: PropertyKeySchema,\n            variants: z.array(LatestDiscriminatedUnionVariantSchema)\n        }),\n        z.object({\n            type: z.literal(\"object\"),\n            extends: z.array(TypeIdSchema),\n            properties: z.array(LatestObjectPropertySchema),\n            extraProperties: LatestTypeReferenceSchema.nullish()\n        })\n    ])\n);\n\nexport const LatestTypeReferenceSchema: z.ZodType<LatestTypeReference> = z.lazy(() =>\n    z.discriminatedUnion(\"type\", [\n        z.object({\n            type: z.literal(\"id\"),\n            id: TypeIdSchema,\n            default: LatestTypeReferenceIdDefaultSchema.nullish()\n        }),\n        z.object({\n            type: z.literal(\"primitive\"),\n            value: LatestPrimitiveTypeSchema\n        }),\n        z.object({\n            type: z.literal(\"optional\"),\n            shape: LatestTypeShapeSchema,\n            default: z.unknown().nullish()\n        }),\n        z.object({\n            type: z.literal(\"nullable\"),\n            shape: LatestTypeShapeSchema\n        }),\n        z.object({\n            type: z.literal(\"list\"),\n            itemShape: LatestTypeShapeSchema,\n            minItems: z.number().int().nullish(),\n            maxItems: z.number().int().nullish()\n        }),\n        z.object({\n            type: z.literal(\"set\"),\n            itemShape: LatestTypeShapeSchema,\n            minItems: z.number().int().nullish(),\n            maxItems: z.number().int().nullish()\n        }),\n        z.object({\n            type: z.literal(\"map\"),\n            keyShape: LatestTypeShapeSchema,\n            valueShape: LatestTypeShapeSchema,\n            minProperties: z.number().int().nullish(),\n            maxProperties: z.number().int().nullish()\n        }),\n        z.object({\n            type: z.literal(\"literal\"),\n            value: LatestLiteralTypeSchema\n        }),\n        z.object({\n            type: z.literal(\"unknown\"),\n            displayName: z.string().nullish()\n        })\n    ])\n);\n\nexport const LatestTypeDefinitionSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    name: z.string(),\n    shape: LatestTypeShapeSchema,\n    displayName: z.string().nullish()\n});\nexport type LatestTypeDefinition = z.infer<typeof LatestTypeDefinitionSchema>;\n\nexport const LatestContentTypeSchema = z.union([z.string(), z.array(z.string())]);\nexport type LatestContentType = z.infer<typeof LatestContentTypeSchema>;\n\nexport const LatestBytesRequestSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    isOptional: z.boolean(),\n    contentType: LatestContentTypeSchema.nullish()\n});\nexport type LatestBytesRequest = z.infer<typeof LatestBytesRequestSchema>;\n\nexport const LatestFormDataPropertySchema: z.ZodType<LatestFormDataField> = z.lazy(() =>\n    z.discriminatedUnion(\"type\", [\n        z.object({\n            type: z.literal(\"file\"),\n            description: z.string().nullish(),\n            availability: AvailabilitySchema.nullish(),\n            key: PropertyKeySchema,\n            isOptional: z.boolean(),\n            contentType: LatestContentTypeSchema.nullish()\n        }),\n        z.object({\n            type: z.literal(\"files\"),\n            description: z.string().nullish(),\n            availability: AvailabilitySchema.nullish(),\n            key: PropertyKeySchema,\n            isOptional: z.boolean(),\n            contentType: LatestContentTypeSchema.nullish()\n        }),\n        z.object({\n            type: z.literal(\"property\"),\n            description: z.string().nullish(),\n            availability: AvailabilitySchema.nullish(),\n            key: PropertyKeySchema,\n            valueShape: LatestTypeShapeSchema,\n            propertyAccess: LatestObjectPropertyAccessSchema.nullish(),\n            contentType: LatestContentTypeSchema.nullish(),\n            exploded: z.boolean().nullish()\n        })\n    ])\n);\n\nexport type LatestFormDataFile = {\n    type: \"file\";\n    description?: string | null;\n    availability?: z.infer<typeof AvailabilitySchema> | null;\n    key: string;\n    isOptional: boolean;\n    contentType?: LatestContentType | null;\n};\n\nexport type LatestFormDataFiles = {\n    type: \"files\";\n    description?: string | null;\n    availability?: z.infer<typeof AvailabilitySchema> | null;\n    key: string;\n    isOptional: boolean;\n    contentType?: LatestContentType | null;\n};\n\nexport type LatestFormDataPropertyVariant = {\n    type: \"property\";\n    description?: string | null;\n    availability?: z.infer<typeof AvailabilitySchema> | null;\n    key: string;\n    valueShape: LatestTypeShape;\n    propertyAccess?: LatestObjectPropertyAccess | null;\n    contentType?: LatestContentType | null;\n    exploded?: boolean | null;\n};\n\nexport type LatestFormDataField = LatestFormDataFile | LatestFormDataFiles | LatestFormDataPropertyVariant;\n\nexport const LatestFormDataRequestSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    fields: z.array(LatestFormDataPropertySchema)\n});\nexport type LatestFormDataRequest = z.infer<typeof LatestFormDataRequestSchema>;\n\nexport const LatestNullableTypeSchema: z.ZodType<{ shape: LatestTypeShape }> = z.lazy(() =>\n    z.object({\n        shape: LatestTypeShapeSchema\n    })\n);\n\nexport const LatestOptionalTypeSchema: z.ZodType<{ shape: LatestTypeShape; default?: unknown }> = z.lazy(() =>\n    z.object({\n        shape: LatestTypeShapeSchema,\n        default: z.unknown().nullish()\n    })\n);\n\nexport const LatestListTypeSchema: z.ZodType<{\n    itemShape: LatestTypeShape;\n    minItems?: number | null;\n    maxItems?: number | null;\n}> = z.lazy(() =>\n    z.object({\n        itemShape: LatestTypeShapeSchema,\n        minItems: z.number().int().nullish(),\n        maxItems: z.number().int().nullish()\n    })\n);\n\nexport const LatestSetTypeSchema: z.ZodType<{\n    itemShape: LatestTypeShape;\n    minItems?: number | null;\n    maxItems?: number | null;\n}> = z.lazy(() =>\n    z.object({\n        itemShape: LatestTypeShapeSchema,\n        minItems: z.number().int().nullish(),\n        maxItems: z.number().int().nullish()\n    })\n);\n\nexport const LatestMapTypeSchema: z.ZodType<{\n    keyShape: LatestTypeShape;\n    valueShape: LatestTypeShape;\n    minProperties?: number | null;\n    maxProperties?: number | null;\n}> = z.lazy(() =>\n    z.object({\n        keyShape: LatestTypeShapeSchema,\n        valueShape: LatestTypeShapeSchema,\n        minProperties: z.number().int().nullish(),\n        maxProperties: z.number().int().nullish()\n    })\n);\n\n// ── Latest endpoint ──────────────────────────────────────────────────────\n\nexport const LatestLanguageSchema = z.string();\nexport type LatestLanguage = z.infer<typeof LatestLanguageSchema>;\n\nexport const LatestExampleEndpointRequestSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n    z.object({ type: z.literal(\"form\"), value: z.record(z.string(), z.unknown()) }),\n    z.object({ type: z.literal(\"bytes\"), value: z.unknown() })\n]);\nexport type LatestExampleEndpointRequest = z.infer<typeof LatestExampleEndpointRequestSchema>;\n\nexport const LatestExampleEndpointResponseSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n    z.object({ type: z.literal(\"filename\"), value: z.unknown() }),\n    z.object({ type: z.literal(\"stream\"), value: z.array(z.unknown()) }),\n    z.object({ type: z.literal(\"sse\"), value: z.array(z.object({ event: z.string(), data: z.unknown() })) })\n]);\nexport type LatestExampleEndpointResponse = z.infer<typeof LatestExampleEndpointResponseSchema>;\n\nexport const LatestExampleErrorResponseSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"json\"), value: z.unknown() })\n]);\nexport type LatestExampleErrorResponse = z.infer<typeof LatestExampleErrorResponseSchema>;\n\nexport const LatestHttpRequestBodyShapeSchema: z.ZodType<LatestHttpRequestBodyShape> = z.lazy(() =>\n    z.discriminatedUnion(\"type\", [\n        z.object({\n            type: z.literal(\"object\"),\n            extends: z.array(TypeIdSchema),\n            properties: z.array(LatestObjectPropertySchema),\n            extraProperties: LatestTypeReferenceSchema.nullish()\n        }),\n        z.object({ type: z.literal(\"alias\"), value: LatestTypeReferenceSchema }),\n        z.object({ type: z.literal(\"bytes\"), ...LatestBytesRequestSchema.shape }),\n        z.object({ type: z.literal(\"formData\"), ...LatestFormDataRequestSchema.shape })\n    ])\n);\n\nexport type LatestHttpRequestBodyShape =\n    | ({ type: \"object\" } & LatestObjectType)\n    | { type: \"alias\"; value: LatestTypeReference }\n    | ({ type: \"bytes\" } & z.infer<typeof LatestBytesRequestSchema>)\n    | ({ type: \"formData\" } & z.infer<typeof LatestFormDataRequestSchema>);\n\nexport const LatestHttpRequestSchema = z.object({\n    description: z.string().nullish(),\n    contentType: z.string().nullish(),\n    body: LatestHttpRequestBodyShapeSchema\n});\nexport type LatestHttpRequest = z.infer<typeof LatestHttpRequestSchema>;\n\nexport const LatestFileDownloadResponseBodyShapeSchema = z.object({\n    contentType: z.string().nullish()\n});\nexport type LatestFileDownloadResponseBodyShape = z.infer<typeof LatestFileDownloadResponseBodyShapeSchema>;\n\nexport const LatestStreamResponseSchema = z.object({\n    terminator: z.string().nullish(),\n    shape: LatestTypeShapeSchema\n});\nexport type LatestStreamResponse = z.infer<typeof LatestStreamResponseSchema>;\n\nexport type LatestHttpResponseBodyShape =\n    | { type: \"empty\" }\n    | ({ type: \"object\" } & LatestObjectType)\n    | { type: \"alias\"; value: LatestTypeReference }\n    | ({ type: \"fileDownload\" } & z.infer<typeof LatestFileDownloadResponseBodyShapeSchema>)\n    | { type: \"streamingText\" }\n    | ({ type: \"stream\" } & z.infer<typeof LatestStreamResponseSchema>);\n\nexport const LatestHttpResponseBodyShapeSchema: z.ZodType<LatestHttpResponseBodyShape> = z.lazy(() =>\n    z.discriminatedUnion(\"type\", [\n        z.object({ type: z.literal(\"empty\") }),\n        z.object({\n            type: z.literal(\"object\"),\n            extends: z.array(TypeIdSchema),\n            properties: z.array(LatestObjectPropertySchema),\n            extraProperties: LatestTypeReferenceSchema.nullish()\n        }),\n        z.object({ type: z.literal(\"alias\"), value: LatestTypeReferenceSchema }),\n        z.object({ type: z.literal(\"fileDownload\"), ...LatestFileDownloadResponseBodyShapeSchema.shape }),\n        z.object({ type: z.literal(\"streamingText\") }),\n        z.object({ type: z.literal(\"stream\"), ...LatestStreamResponseSchema.shape })\n    ])\n);\n\nexport const LatestHttpResponseSchema = z.object({\n    description: z.string().nullish(),\n    body: LatestHttpResponseBodyShapeSchema,\n    statusCode: z.number().int(),\n    isWildcard: z.boolean().nullish()\n});\nexport type LatestHttpResponse = z.infer<typeof LatestHttpResponseSchema>;\n\nexport const LatestErrorExampleSchema = z.object({\n    description: z.string().nullish(),\n    name: z.string().nullish(),\n    responseBody: LatestExampleErrorResponseSchema\n});\nexport type LatestErrorExample = z.infer<typeof LatestErrorExampleSchema>;\n\nexport const LatestErrorResponseSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    shape: LatestTypeShapeSchema.nullish(),\n    statusCode: z.number().int(),\n    isWildcard: z.boolean().nullish(),\n    name: z.string(),\n    examples: z.array(LatestErrorExampleSchema).nullish(),\n    headers: z.array(LatestObjectPropertySchema).nullish()\n});\nexport type LatestErrorResponse = z.infer<typeof LatestErrorResponseSchema>;\n\nexport const LatestCodeSnippetSchema = z.object({\n    description: z.string().nullish(),\n    name: z.string().nullish(),\n    language: LatestLanguageSchema,\n    install: z.string().nullish(),\n    code: z.string(),\n    generated: z.boolean()\n});\nexport type LatestCodeSnippet = z.infer<typeof LatestCodeSnippetSchema>;\n\nexport const LatestExampleEndpointCallSchema = z.object({\n    description: z.string().nullish(),\n    path: z.string(),\n    responseStatusCode: z.number().int(),\n    name: z.string().nullish(),\n    pathParameters: z.record(PropertyKeySchema, z.unknown()).nullish(),\n    queryParameters: z.record(PropertyKeySchema, z.unknown()).nullish(),\n    headers: z.record(PropertyKeySchema, z.unknown()).nullish(),\n    requestBody: LatestExampleEndpointRequestSchema.nullish(),\n    responseBody: LatestExampleEndpointResponseSchema.nullish(),\n    snippets: z.record(LatestLanguageSchema, z.array(LatestCodeSnippetSchema)).nullish(),\n    codeExamples: z.unknown().nullish(),\n    codeSamples: z.array(LatestCodeSnippetSchema).nullish()\n});\nexport type LatestExampleEndpointCall = z.infer<typeof LatestExampleEndpointCallSchema>;\n\nexport const LatestEndpointDefinitionSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    namespace: z.array(z.string()).nullish(),\n    id: EndpointIdSchema,\n    method: HttpMethodSchema,\n    path: z.array(PathPartSchema),\n    displayName: z.string().nullish(),\n    operationId: z.string().nullish(),\n    auth: z.array(AuthSchemeIdSchema).nullish(),\n    multiAuth: z.array(MultipleAuthTypeSchema).nullish(),\n    defaultEnvironment: EnvironmentIdSchema.nullish(),\n    environments: z.array(EnvironmentSchema).nullish(),\n    pathParameters: z.array(LatestParameterPropertySchema).nullish(),\n    queryParameters: z.array(LatestParameterPropertySchema).nullish(),\n    requestHeaders: z.array(LatestObjectPropertySchema).nullish(),\n    responseHeaders: z.array(LatestObjectPropertySchema).nullish(),\n    requests: z.array(LatestHttpRequestSchema).nullish(),\n    responses: z.array(LatestHttpResponseSchema).nullish(),\n    errors: z.array(LatestErrorResponseSchema).nullish(),\n    examples: z.array(LatestExampleEndpointCallSchema).nullish(),\n    protocol: ProtocolSchema.nullish(),\n    includeInApiExplorer: z.boolean().nullish(),\n    snippetTemplates: z.unknown().nullish()\n});\nexport type LatestEndpointDefinition = z.infer<typeof LatestEndpointDefinitionSchema>;\n\n// ── Latest graphql ───────────────────────────────────────────────────────\n\nexport const LatestGraphQlOperationTypeSchema = z.enum([\"QUERY\", \"MUTATION\", \"SUBSCRIPTION\"]);\nexport type LatestGraphQlOperationType = z.infer<typeof LatestGraphQlOperationTypeSchema>;\n\nexport const LatestGraphQlArgumentSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    name: z.string(),\n    type: LatestTypeShapeSchema,\n    defaultValue: z.unknown().nullish()\n});\nexport type LatestGraphQlArgument = z.infer<typeof LatestGraphQlArgumentSchema>;\n\nexport const LatestGraphQlExampleSchema = z.object({\n    description: z.string().nullish(),\n    name: z.string().nullish(),\n    query: z.string(),\n    variables: z.record(z.string(), z.unknown()).nullish(),\n    response: z.unknown().nullish()\n});\nexport type LatestGraphQlExample = z.infer<typeof LatestGraphQlExampleSchema>;\n\nexport const LatestGraphQlOperationSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    namespace: z.array(z.string()).nullish(),\n    id: GraphQlOperationIdSchema,\n    operationType: LatestGraphQlOperationTypeSchema,\n    name: z.string(),\n    displayName: z.string().nullish(),\n    arguments: z.array(LatestGraphQlArgumentSchema).nullish(),\n    returnType: LatestTypeShapeSchema,\n    examples: z.array(LatestGraphQlExampleSchema).nullish(),\n    snippets: z.record(LatestLanguageSchema, z.array(LatestCodeSnippetSchema)).nullish()\n});\nexport type LatestGraphQlOperation = z.infer<typeof LatestGraphQlOperationSchema>;\n\n// ── Latest webhook ───────────────────────────────────────────────────────\n\nexport type LatestWebhookPayloadShape =\n    | ({ type: \"object\" } & LatestObjectType)\n    | { type: \"alias\"; value: LatestTypeReference }\n    | ({ type: \"formData\" } & z.infer<typeof LatestFormDataRequestSchema>);\n\nexport const LatestWebhookPayloadShapeSchema: z.ZodType<LatestWebhookPayloadShape> = z.lazy(() =>\n    z.discriminatedUnion(\"type\", [\n        z.object({\n            type: z.literal(\"object\"),\n            extends: z.array(TypeIdSchema),\n            properties: z.array(LatestObjectPropertySchema),\n            extraProperties: LatestTypeReferenceSchema.nullish()\n        }),\n        z.object({ type: z.literal(\"alias\"), value: LatestTypeReferenceSchema }),\n        z.object({ type: z.literal(\"formData\"), ...LatestFormDataRequestSchema.shape })\n    ])\n);\n\nexport const LatestWebhookPayloadSchema = z.object({\n    description: z.string().nullish(),\n    shape: LatestWebhookPayloadShapeSchema\n});\nexport type LatestWebhookPayload = z.infer<typeof LatestWebhookPayloadSchema>;\n\nexport const LatestExampleWebhookPayloadSchema = z.object({\n    name: z.string().nullish(),\n    payload: z.unknown()\n});\nexport type LatestExampleWebhookPayload = z.infer<typeof LatestExampleWebhookPayloadSchema>;\n\nexport const LatestWebhookDefinitionSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    namespace: z.array(z.string()).nullish(),\n    id: WebhookIdSchema,\n    displayName: z.string().nullish(),\n    operationId: z.string().nullish(),\n    method: WebhookHttpMethodSchema,\n    path: z.array(z.string()),\n    headers: z.array(LatestObjectPropertySchema).nullish(),\n    payloads: z.array(LatestWebhookPayloadSchema).nullish(),\n    responses: z.array(LatestHttpResponseSchema).nullish(),\n    examples: z.array(LatestExampleWebhookPayloadSchema).nullish()\n});\nexport type LatestWebhookDefinition = z.infer<typeof LatestWebhookDefinitionSchema>;\n\n// ── Latest websocket ─────────────────────────────────────────────────────\n\nexport const LatestWebSocketMessageSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    type: WebSocketMessageIdSchema,\n    displayName: z.string().nullish(),\n    origin: WebSocketMessageOriginSchema,\n    body: LatestTypeShapeSchema\n});\nexport type LatestWebSocketMessage = z.infer<typeof LatestWebSocketMessageSchema>;\n\nexport const LatestExampleWebSocketMessageSchema = z.object({\n    type: WebSocketMessageIdSchema,\n    body: z.unknown()\n});\nexport type LatestExampleWebSocketMessage = z.infer<typeof LatestExampleWebSocketMessageSchema>;\n\nexport const LatestExampleWebSocketSessionSchema = z.object({\n    description: z.string().nullish(),\n    path: z.string(),\n    name: z.string().nullish(),\n    pathParameters: z.record(PropertyKeySchema, z.unknown()).nullish(),\n    queryParameters: z.record(PropertyKeySchema, z.unknown()).nullish(),\n    requestHeaders: z.record(PropertyKeySchema, z.unknown()).nullish(),\n    messages: z.array(LatestExampleWebSocketMessageSchema).nullish()\n});\nexport type LatestExampleWebSocketSession = z.infer<typeof LatestExampleWebSocketSessionSchema>;\n\nexport const LatestWebSocketChannelSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    namespace: z.array(z.string()).nullish(),\n    id: WebSocketIdSchema,\n    displayName: z.string().nullish(),\n    operationId: z.string().nullish(),\n    path: z.array(PathPartSchema),\n    messages: z.array(LatestWebSocketMessageSchema),\n    auth: z.array(AuthSchemeIdSchema).nullish(),\n    defaultEnvironment: EnvironmentIdSchema.nullish(),\n    environments: z.array(EnvironmentSchema).nullish(),\n    pathParameters: z.array(LatestParameterPropertySchema).nullish(),\n    queryParameters: z.array(LatestParameterPropertySchema).nullish(),\n    requestHeaders: z.array(LatestObjectPropertySchema).nullish(),\n    examples: z.array(LatestExampleWebSocketSessionSchema).nullish()\n});\nexport type LatestWebSocketChannel = z.infer<typeof LatestWebSocketChannelSchema>;\n\n// ── Latest SubpackageMetadata & ApiDefinition ────────────────────────────\n\nexport const LatestSubpackageMetadataSchema = z.object({\n    id: SubpackageIdSchema,\n    name: z.string(),\n    displayName: z.string().nullish()\n});\nexport type LatestSubpackageMetadata = z.infer<typeof LatestSubpackageMetadataSchema>;\n\n// Import SnippetsConfigSchema from contract-register\nimport { SnippetsConfigSchema } from \"./contract-register.js\";\n\nexport const LatestApiDefinitionSchema = z.object({\n    id: z.string(),\n    apiName: z.string().nullish(),\n    endpoints: z.record(EndpointIdSchema, LatestEndpointDefinitionSchema),\n    websockets: z.record(WebSocketIdSchema, LatestWebSocketChannelSchema),\n    webhooks: z.record(WebhookIdSchema, LatestWebhookDefinitionSchema),\n    graphqlOperations: z.record(GraphQlOperationIdSchema, LatestGraphQlOperationSchema),\n    types: z.record(TypeIdSchema, LatestTypeDefinitionSchema),\n    subpackages: z.record(SubpackageIdSchema, LatestSubpackageMetadataSchema),\n    auths: z.record(AuthSchemeIdSchema, LatestAuthSchemeSchema),\n    globalHeaders: z.array(LatestObjectPropertySchema).nullish(),\n    snippetsConfiguration: SnippetsConfigSchema.nullish()\n});\nexport type LatestApiDefinition = z.infer<typeof LatestApiDefinitionSchema>;\n\n// Alias for backward compatibility (consumers use FdrAPI.api.latest.ApiDefinition)\nexport type ApiDefinition = LatestApiDefinition;\nexport const ApiDefinitionSchema = LatestApiDefinitionSchema;\n","import * as z from \"zod\";\nimport { ApiDefinitionIdSchema, HttpMethod, HttpMethodSchema } from \"../shared.js\";\n\nexport { ApiDefinitionIdSchema, HttpMethod, HttpMethodSchema };\n\nexport const TypeIdSchema = z.string();\nexport type TypeId = z.infer<typeof TypeIdSchema>;\nexport function TypeId(value: string): TypeId {\n    return value;\n}\n\nexport const EndpointIdSchema = z.string();\nexport type EndpointId = z.infer<typeof EndpointIdSchema>;\nexport function EndpointId(value: string): EndpointId {\n    return value;\n}\n\nexport const WebSocketIdSchema = z.string();\nexport type WebSocketId = z.infer<typeof WebSocketIdSchema>;\nexport function WebSocketId(value: string): WebSocketId {\n    return value;\n}\n\nexport const WebhookIdSchema = z.string();\nexport type WebhookId = z.infer<typeof WebhookIdSchema>;\nexport function WebhookId(value: string): WebhookId {\n    return value;\n}\n\nexport const GraphQlOperationIdSchema = z.string();\nexport type GraphQlOperationId = z.infer<typeof GraphQlOperationIdSchema>;\nexport function GraphQlOperationId(value: string): GraphQlOperationId {\n    return value;\n}\n\nexport const EnvironmentIdSchema = z.string();\nexport type EnvironmentId = z.infer<typeof EnvironmentIdSchema>;\nexport function EnvironmentId(value: string): EnvironmentId {\n    return value;\n}\n\nexport const PropertyKeySchema = z.string();\nexport type PropertyKey = z.infer<typeof PropertyKeySchema>;\nexport function PropertyKey(value: string): PropertyKey {\n    return value;\n}\n\nexport const AuthSchemeIdSchema = z.string();\nexport type AuthSchemeId = z.infer<typeof AuthSchemeIdSchema>;\nexport function AuthSchemeId(value: string): AuthSchemeId {\n    return value;\n}\n\nexport const SubpackageIdSchema = z.string();\nexport type SubpackageId = z.infer<typeof SubpackageIdSchema>;\nexport function SubpackageId(value: string): SubpackageId {\n    return value;\n}\n\nexport const WebSocketMessageIdSchema = z.string();\nexport type WebSocketMessageId = z.infer<typeof WebSocketMessageIdSchema>;\nexport function WebSocketMessageId(value: string): WebSocketMessageId {\n    return value;\n}\n\nexport const FileIdSchema: z.ZodType<FileId> = z.string() as any;\nexport type FileId = string & { FileId: void };\nexport function FileId(value: string): FileId {\n    return value as unknown as FileId;\n}\n\nexport const MultipleAuthTypeSchema = z.object({\n    schemes: z.array(AuthSchemeIdSchema)\n});\nexport type MultipleAuthType = z.infer<typeof MultipleAuthTypeSchema>;\n\nexport const GrpcMethodSchema = z.enum([\"UNARY\", \"CLIENT_STREAM\", \"SERVER_STREAM\", \"BIDIRECTIONAL_STREAM\"]);\n\nexport const AvailabilitySchema = z.enum([\n    \"Stable\",\n    \"GenerallyAvailable\",\n    \"InDevelopment\",\n    \"PreRelease\",\n    \"Deprecated\",\n    \"Beta\"\n]);\n\nexport const WebSocketMessageOriginSchema = z.enum([\"client\", \"server\"]);\nexport type WebSocketMessageOrigin = z.infer<typeof WebSocketMessageOriginSchema>;\n\nexport const WebhookHttpMethodSchema = z.enum([\"GET\", \"POST\"]);\nexport type WebhookHttpMethod = z.infer<typeof WebhookHttpMethodSchema>;\n\nexport const WithDescriptionSchema = z.object({\n    description: z.string().nullish()\n});\nexport type WithDescription = z.infer<typeof WithDescriptionSchema>;\n\nexport const WithAvailabilitySchema = z.object({\n    availability: AvailabilitySchema.nullish()\n});\nexport type WithAvailability = z.infer<typeof WithAvailabilitySchema>;\n\nexport const EnvironmentSchema = z.object({\n    id: EnvironmentIdSchema,\n    baseUrl: z.string(),\n    audiences: z.array(z.string()).nullish()\n});\nexport type Environment = z.infer<typeof EnvironmentSchema>;\n\nexport const RestProtocolSchema = z.object({});\n\nexport const OpenRpcProtocolSchema = z.object({\n    methodName: z.string()\n});\n\nexport const GrpcProtocolSchema = z.object({\n    methodName: z.string(),\n    methodType: GrpcMethodSchema.nullish()\n});\n\nexport const ProtocolSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"rest\"), ...RestProtocolSchema.shape }),\n    z.object({ type: z.literal(\"openrpc\"), ...OpenRpcProtocolSchema.shape }),\n    z.object({ type: z.literal(\"grpc\"), ...GrpcProtocolSchema.shape })\n]);\nexport type Protocol = z.infer<typeof ProtocolSchema>;\n\nexport const ObjectPropertyAccessSchema = z.enum([\"READ_ONLY\", \"WRITE_ONLY\"]);\nexport type ObjectPropertyAccess = z.infer<typeof ObjectPropertyAccessSchema>;\n\nexport const TypeReferenceIdDefaultSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"enum\"), value: z.string() })\n]);\nexport type TypeReferenceIdDefault = z.infer<typeof TypeReferenceIdDefaultSchema>;\n\nconst _numberNullish = z.number().nullish();\nconst _numberIntNullish = z.number().int().nullish();\n\nfunction coerceNumber(val: unknown): unknown {\n    if (typeof val === \"string\" && val.trim() !== \"\") {\n        const num = Number(val);\n        if (!Number.isNaN(num)) {\n            return num;\n        }\n    }\n    return val;\n}\n\nconst coercedNumberNullish = z.preprocess(coerceNumber, z.number().nullish()) as unknown as typeof _numberNullish;\nconst coercedNumberIntNullish = z.preprocess(\n    coerceNumber,\n    z.number().int().nullish()\n) as unknown as typeof _numberIntNullish;\n\nexport const IntegerTypeSchema = z.object({\n    minimum: coercedNumberIntNullish,\n    maximum: coercedNumberIntNullish,\n    exclusiveMinimum: coercedNumberIntNullish,\n    exclusiveMaximum: coercedNumberIntNullish,\n    multipleOf: coercedNumberIntNullish,\n    default: coercedNumberIntNullish\n});\nexport type IntegerType = z.infer<typeof IntegerTypeSchema>;\n\nexport const DoubleTypeSchema = z.object({\n    minimum: coercedNumberNullish,\n    maximum: coercedNumberNullish,\n    exclusiveMinimum: coercedNumberNullish,\n    exclusiveMaximum: coercedNumberNullish,\n    multipleOf: coercedNumberNullish,\n    default: coercedNumberNullish\n});\nexport type DoubleType = z.infer<typeof DoubleTypeSchema>;\n\nexport const StringTypeSchema = z.object({\n    format: z.string().nullish(),\n    regex: z.string().nullish(),\n    minLength: z.number().int().nullish(),\n    maxLength: z.number().int().nullish(),\n    default: z.string().nullish()\n});\nexport type StringType = z.infer<typeof StringTypeSchema>;\n\nexport const LongTypeSchema = z.object({\n    minimum: coercedNumberNullish,\n    maximum: coercedNumberNullish,\n    exclusiveMinimum: coercedNumberNullish,\n    exclusiveMaximum: coercedNumberNullish,\n    multipleOf: coercedNumberNullish,\n    default: coercedNumberNullish\n});\nexport type LongType = z.infer<typeof LongTypeSchema>;\n\nconst _booleanNullish = z.boolean().nullish();\n\nexport const BooleanTypeSchema = z.object({\n    default: z.preprocess((val) => {\n        if (typeof val === \"string\") {\n            if (val.toLowerCase() === \"true\") {\n                return true;\n            }\n            if (val.toLowerCase() === \"false\") {\n                return false;\n            }\n        }\n        return val;\n    }, z.boolean().nullish()) as unknown as typeof _booleanNullish\n});\nexport type BooleanType = z.infer<typeof BooleanTypeSchema>;\n\nexport const DatetimeTypeSchema = z.object({\n    default: z.string().nullish()\n});\nexport type DatetimeType = z.infer<typeof DatetimeTypeSchema>;\n\nexport const UuidTypeSchema = z.object({\n    default: z.string().nullish()\n});\nexport type UuidType = z.infer<typeof UuidTypeSchema>;\n\nexport const Base64TypeSchema = z.object({\n    default: z.string().nullish(),\n    mimeType: z.string().nullish()\n});\nexport type Base64Type = z.infer<typeof Base64TypeSchema>;\n\nexport const DateTypeSchema = z.object({\n    default: z.string().nullish()\n});\nexport type DateType = z.infer<typeof DateTypeSchema>;\n\nexport const BigIntegerTypeSchema = z.object({\n    default: z.string().nullish()\n});\nexport type BigIntegerType = z.infer<typeof BigIntegerTypeSchema>;\n\nexport const UintTypeSchema = z.object({\n    minimum: coercedNumberIntNullish,\n    maximum: coercedNumberIntNullish,\n    exclusiveMinimum: coercedNumberIntNullish,\n    exclusiveMaximum: coercedNumberIntNullish,\n    multipleOf: coercedNumberIntNullish,\n    default: coercedNumberIntNullish\n});\nexport type UintType = z.infer<typeof UintTypeSchema>;\n\nexport const Uint64TypeSchema = z.object({\n    minimum: coercedNumberNullish,\n    maximum: coercedNumberNullish,\n    exclusiveMinimum: coercedNumberNullish,\n    exclusiveMaximum: coercedNumberNullish,\n    multipleOf: coercedNumberNullish,\n    default: coercedNumberNullish\n});\nexport type Uint64Type = z.infer<typeof Uint64TypeSchema>;\n\nexport const ScalarTypeSchema = z.object({\n    name: z.string(),\n    description: z.string().nullish(),\n    default: z.unknown().nullish()\n});\nexport type ScalarType = z.infer<typeof ScalarTypeSchema>;\n\nexport const PrimitiveTypeSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"integer\"), ...IntegerTypeSchema.shape }),\n    z.object({ type: z.literal(\"double\"), ...DoubleTypeSchema.shape }),\n    z.object({ type: z.literal(\"string\"), ...StringTypeSchema.shape }),\n    z.object({ type: z.literal(\"long\"), ...LongTypeSchema.shape }),\n    z.object({ type: z.literal(\"boolean\"), ...BooleanTypeSchema.shape }),\n    z.object({ type: z.literal(\"datetime\"), ...DatetimeTypeSchema.shape }),\n    z.object({ type: z.literal(\"uuid\"), ...UuidTypeSchema.shape }),\n    z.object({ type: z.literal(\"base64\"), ...Base64TypeSchema.shape }),\n    z.object({ type: z.literal(\"date\"), ...DateTypeSchema.shape }),\n    z.object({ type: z.literal(\"bigInteger\"), ...BigIntegerTypeSchema.shape }),\n    z.object({ type: z.literal(\"uint\"), ...UintTypeSchema.shape }),\n    z.object({ type: z.literal(\"uint64\"), ...Uint64TypeSchema.shape }),\n    z.object({ type: z.literal(\"scalar\"), ...ScalarTypeSchema.shape })\n]);\nexport type PrimitiveType = z.infer<typeof PrimitiveTypeSchema>;\n\nexport const LiteralTypeSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"booleanLiteral\"), value: z.boolean() }),\n    z.object({ type: z.literal(\"stringLiteral\"), value: z.string() })\n]);\nexport type LiteralType = z.infer<typeof LiteralTypeSchema>;\n\nexport type TypeReference =\n    | TypeReference.Id\n    | TypeReference.Primitive\n    | TypeReference.Optional\n    | TypeReference.Nullable\n    | TypeReference.List\n    | TypeReference.Set\n    | TypeReference.Map\n    | TypeReference.Literal\n    | TypeReference.Unknown;\n\nexport namespace TypeReference {\n    export interface Id {\n        type: \"id\";\n        value: string;\n        default?: TypeReferenceIdDefault | null;\n    }\n    export interface Primitive {\n        type: \"primitive\";\n        value: PrimitiveType;\n    }\n    export interface Optional {\n        type: \"optional\";\n        itemType: TypeReference;\n        defaultValue?: unknown | null;\n    }\n    export interface Nullable {\n        type: \"nullable\";\n        itemType: TypeReference;\n    }\n    export interface List {\n        type: \"list\";\n        itemType: TypeReference;\n        minItems?: number | null;\n        maxItems?: number | null;\n    }\n    export interface Set {\n        type: \"set\";\n        itemType: TypeReference;\n        minItems?: number | null;\n        maxItems?: number | null;\n    }\n    export interface Map {\n        type: \"map\";\n        keyType: TypeReference;\n        valueType: TypeReference;\n        minProperties?: number | null;\n        maxProperties?: number | null;\n    }\n    export interface Literal {\n        type: \"literal\";\n        value: LiteralType;\n    }\n    export interface Unknown {\n        type: \"unknown\";\n    }\n}\n\nexport const TypeReferenceSchema: z.ZodType<TypeReference> = z.lazy(() =>\n    z.discriminatedUnion(\"type\", [\n        z.object({\n            type: z.literal(\"id\"),\n            value: TypeIdSchema,\n            default: TypeReferenceIdDefaultSchema.nullish()\n        }),\n        z.object({\n            type: z.literal(\"primitive\"),\n            value: PrimitiveTypeSchema\n        }),\n        z.object({\n            type: z.literal(\"optional\"),\n            itemType: TypeReferenceSchema,\n            defaultValue: z.unknown().nullish()\n        }),\n        z.object({\n            type: z.literal(\"nullable\"),\n            itemType: TypeReferenceSchema\n        }),\n        z.object({\n            type: z.literal(\"list\"),\n            itemType: TypeReferenceSchema,\n            minItems: z.number().int().nullish(),\n            maxItems: z.number().int().nullish()\n        }),\n        z.object({\n            type: z.literal(\"set\"),\n            itemType: TypeReferenceSchema,\n            minItems: z.number().int().nullish(),\n            maxItems: z.number().int().nullish()\n        }),\n        z.object({\n            type: z.literal(\"map\"),\n            keyType: TypeReferenceSchema,\n            valueType: TypeReferenceSchema,\n            minProperties: z.number().int().nullish(),\n            maxProperties: z.number().int().nullish()\n        }),\n        z.object({\n            type: z.literal(\"literal\"),\n            value: LiteralTypeSchema\n        }),\n        z.object({\n            type: z.literal(\"unknown\")\n        })\n    ])\n);\n\nexport const ObjectPropertySchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    key: PropertyKeySchema,\n    valueType: TypeReferenceSchema,\n    propertyAccess: ObjectPropertyAccessSchema.nullish()\n});\nexport type ObjectProperty = z.infer<typeof ObjectPropertySchema>;\n\nexport const ObjectTypeSchema = z.object({\n    extends: z.array(TypeIdSchema),\n    properties: z.array(ObjectPropertySchema),\n    extraProperties: TypeReferenceSchema.nullish()\n});\nexport type ObjectType = z.infer<typeof ObjectTypeSchema>;\n\nexport const EnumValueSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    value: z.string()\n});\nexport type EnumValue = z.infer<typeof EnumValueSchema>;\n\nexport const EnumTypeSchema = z.object({\n    default: z.string().nullish(),\n    values: z.array(EnumValueSchema)\n});\nexport type EnumType = z.infer<typeof EnumTypeSchema>;\n\nexport const DiscriminatedUnionVariantSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    discriminantValue: z.string(),\n    displayName: z.string().nullish(),\n    additionalProperties: ObjectTypeSchema\n});\nexport type DiscriminatedUnionVariant = z.infer<typeof DiscriminatedUnionVariantSchema>;\n\nexport const DiscriminatedUnionTypeSchema = z.object({\n    discriminant: z.string(),\n    variants: z.array(DiscriminatedUnionVariantSchema)\n});\nexport type DiscriminatedUnionType = z.infer<typeof DiscriminatedUnionTypeSchema>;\n\nexport const ContentTypeSchema = z.union([z.string(), z.array(z.string())]);\nexport type ContentType = z.infer<typeof ContentTypeSchema>;\n\nexport const FilePropertySingleSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    key: PropertyKeySchema,\n    isOptional: z.boolean(),\n    contentType: ContentTypeSchema.nullish()\n});\nexport type FilePropertySingle = z.infer<typeof FilePropertySingleSchema>;\n\nexport const FilePropertyArraySchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    key: PropertyKeySchema,\n    isOptional: z.boolean(),\n    contentType: ContentTypeSchema.nullish()\n});\nexport type FilePropertyArray = z.infer<typeof FilePropertyArraySchema>;\n\nexport const FormDataFilePropertySchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"file\"), ...FilePropertySingleSchema.shape }),\n    z.object({ type: z.literal(\"fileArray\"), ...FilePropertyArraySchema.shape })\n]);\nexport type FormDataFileProperty = z.infer<typeof FormDataFilePropertySchema>;\n\nexport const FormDataBodyPropertySchema = z.object({\n    ...ObjectPropertySchema.shape,\n    contentType: ContentTypeSchema.nullish(),\n    exploded: z.boolean().nullish()\n});\nexport type FormDataBodyProperty = z.infer<typeof FormDataBodyPropertySchema>;\n\nexport const FormDataPropertySchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"file\"), value: FormDataFilePropertySchema }),\n    z.object({ type: z.literal(\"bodyProperty\"), ...FormDataBodyPropertySchema.shape })\n]);\nexport type FormDataProperty = z.infer<typeof FormDataPropertySchema>;\n\nexport const FormDataRequestSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    name: z.string(),\n    properties: z.array(FormDataPropertySchema)\n});\nexport type FormDataRequest = z.infer<typeof FormDataRequestSchema>;\n\nexport const EndpointPathPartSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"literal\"), value: z.string() }),\n    z.object({ type: z.literal(\"pathParameter\"), value: PropertyKeySchema })\n]);\nexport type EndpointPathPart = z.infer<typeof EndpointPathPartSchema>;\n\nexport const PathParameterSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    key: PropertyKeySchema,\n    type: TypeReferenceSchema,\n    explode: z.boolean().nullish()\n});\nexport type PathParameter = z.infer<typeof PathParameterSchema>;\n\nexport const EndpointPathSchema = z.object({\n    parts: z.array(EndpointPathPartSchema),\n    pathParameters: z.array(PathParameterSchema)\n});\nexport type EndpointPath = z.infer<typeof EndpointPathSchema>;\n\nexport const QueryParameterSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    key: z.string(),\n    type: TypeReferenceSchema,\n    explode: z.boolean().nullish()\n});\nexport type QueryParameter = z.infer<typeof QueryParameterSchema>;\n\nexport const HeaderSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    key: z.string(),\n    type: TypeReferenceSchema\n});\nexport type Header = z.infer<typeof HeaderSchema>;\n\nexport const JsonBodyShapeSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n    z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema })\n]);\nexport type JsonBodyShape = z.infer<typeof JsonBodyShapeSchema>;\n\nexport const FileDownloadResponseBodyShapeSchema = z.object({\n    contentType: z.string().nullish()\n});\nexport type FileDownloadResponseBodyShape = z.infer<typeof FileDownloadResponseBodyShapeSchema>;\n\nexport const StreamResponseV2Schema = z.object({\n    terminator: z.string().nullish(),\n    shape: JsonBodyShapeSchema\n});\nexport type StreamResponseV2 = z.infer<typeof StreamResponseV2Schema>;\n\nexport const StreamConditionSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"booleanRequestProperty\"), value: PropertyKeySchema })\n]);\nexport type StreamCondition = z.infer<typeof StreamConditionSchema>;\n\nexport const FilenameWithDataSchema = z.object({\n    filename: z.string(),\n    data: FileIdSchema\n});\nexport type FilenameWithData = z.infer<typeof FilenameWithDataSchema>;\n\nexport const FormValueSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n    z.object({ type: z.literal(\"filename\"), value: z.string() }),\n    z.object({ type: z.literal(\"filenames\"), value: z.array(z.string()) }),\n    z.object({ type: z.literal(\"filenameWithData\"), ...FilenameWithDataSchema.shape }),\n    z.object({ type: z.literal(\"filenamesWithData\"), value: z.array(FilenameWithDataSchema) }),\n    z.object({ type: z.literal(\"exploded\"), value: z.array(z.unknown()) })\n]);\nexport type FormValue = z.infer<typeof FormValueSchema>;\n\nexport const BytesValueSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"base64\"), value: z.string() })\n]);\nexport type BytesValue = z.infer<typeof BytesValueSchema>;\n\n// The form variant uses z.unknown() for record values instead of FormValueSchema to be\n// forward-compatible with new form value types and to tolerate form values produced by\n// the AI example enhancer (which may not conform to the strict FormValueSchema).\n// Example data is display-only and does not require strict validation at registration time.\nexport const ExampleEndpointRequestSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n    z.object({ type: z.literal(\"form\"), value: z.record(z.string(), z.unknown()) }),\n    z.object({ type: z.literal(\"bytes\"), value: BytesValueSchema })\n]);\nexport type ExampleEndpointRequest = z.infer<typeof ExampleEndpointRequestSchema>;\n\nexport const ExampleServerSentEventSchema = z.object({\n    event: z.string(),\n    data: z.unknown()\n});\nexport type ExampleServerSentEvent = z.infer<typeof ExampleServerSentEventSchema>;\n\nexport const ExampleEndpointResponseSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n    z.object({ type: z.literal(\"filename\"), value: z.unknown() }),\n    z.object({ type: z.literal(\"stream\"), value: z.array(z.unknown()) }),\n    z.object({ type: z.literal(\"sse\"), value: z.array(ExampleServerSentEventSchema) })\n]);\nexport type ExampleEndpointResponse = z.infer<typeof ExampleEndpointResponseSchema>;\n\nexport const ErrorDeclarationSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    type: TypeReferenceSchema.nullish(),\n    statusCode: z.number().int()\n});\nexport type ErrorDeclaration = z.infer<typeof ErrorDeclarationSchema>;\n\nexport const ExampleErrorResponseSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"json\"), value: z.unknown() })\n]);\nexport type ExampleErrorResponse = z.infer<typeof ExampleErrorResponseSchema>;\n\nexport const ErrorExampleSchema = z.object({\n    description: z.string().nullish(),\n    name: z.string().nullish(),\n    responseBody: ExampleErrorResponseSchema\n});\nexport type ErrorExample = z.infer<typeof ErrorExampleSchema>;\n\nexport const GraphQlOperationTypeSchema = z.enum([\"QUERY\", \"MUTATION\", \"SUBSCRIPTION\"]);\nexport type GraphQlOperationType = z.infer<typeof GraphQlOperationTypeSchema>;\n\nexport const GraphQlArgumentSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    name: z.string(),\n    type: TypeReferenceSchema,\n    defaultValue: z.unknown().nullish()\n});\nexport type GraphQlArgument = z.infer<typeof GraphQlArgumentSchema>;\n\nexport const GraphQlExampleSchema = z.object({\n    description: z.string().nullish(),\n    name: z.string().nullish(),\n    query: z.string(),\n    variables: z.record(z.string(), z.unknown()).nullish(),\n    response: z.unknown().nullish()\n});\nexport type GraphQlExample = z.infer<typeof GraphQlExampleSchema>;\n\nexport const CodeSnippetSchema = z.object({\n    description: z.string().nullish(),\n    name: z.string().nullish(),\n    language: z.string(),\n    install: z.string().nullish(),\n    code: z.string(),\n    generated: z.boolean()\n});\nexport type CodeSnippet = z.infer<typeof CodeSnippetSchema>;\n\nexport const GraphQlOperationSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    id: GraphQlOperationIdSchema,\n    operationType: GraphQlOperationTypeSchema,\n    name: z.string(),\n    displayName: z.string().nullish(),\n    arguments: z.array(GraphQlArgumentSchema).nullish(),\n    returnType: TypeReferenceSchema,\n    examples: z.array(GraphQlExampleSchema).nullish(),\n    snippets: z.record(z.string(), z.array(CodeSnippetSchema)).nullish()\n});\nexport type GraphQlOperation = z.infer<typeof GraphQlOperationSchema>;\n\nexport const WebhookPayloadShapeSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n    z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema }),\n    z.object({ type: z.literal(\"formData\"), ...FormDataRequestSchema.shape })\n]);\nexport type WebhookPayloadShape = z.infer<typeof WebhookPayloadShapeSchema>;\n\nexport const WebhookPayloadSchema = z.object({\n    description: z.string().nullish(),\n    type: WebhookPayloadShapeSchema\n});\nexport type WebhookPayload = z.infer<typeof WebhookPayloadSchema>;\n\nexport const ExampleWebhookPayloadSchema = z.object({\n    name: z.string().nullish(),\n    payload: z.unknown()\n});\nexport type ExampleWebhookPayload = z.infer<typeof ExampleWebhookPayloadSchema>;\n\nexport const WebSocketMessageBodyShapeSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n    z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema })\n]);\nexport type WebSocketMessageBodyShape = z.infer<typeof WebSocketMessageBodyShapeSchema>;\n\nexport const WebSocketMessageSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    type: WebSocketMessageIdSchema,\n    displayName: z.string().nullish(),\n    origin: WebSocketMessageOriginSchema,\n    body: WebSocketMessageBodyShapeSchema\n});\nexport type WebSocketMessage = z.infer<typeof WebSocketMessageSchema>;\n\nexport const ExampleWebSocketMessageSchema = z.object({\n    type: WebSocketMessageIdSchema,\n    body: z.unknown()\n});\nexport type ExampleWebSocketMessage = z.infer<typeof ExampleWebSocketMessageSchema>;\n\nexport const ExampleWebSocketSessionSchema = z.object({\n    description: z.string().nullish(),\n    name: z.string().nullish(),\n    path: z.string(),\n    pathParameters: z.record(PropertyKeySchema, z.unknown()),\n    queryParameters: z.record(z.string(), z.unknown()),\n    headers: z.record(z.string(), z.unknown()),\n    messages: z.array(ExampleWebSocketMessageSchema)\n});\nexport type ExampleWebSocketSession = z.infer<typeof ExampleWebSocketSessionSchema>;\n\nexport type ApiNavigationConfigItem =\n    | ApiNavigationConfigItem.Subpackage\n    | ApiNavigationConfigItem.EndpointId\n    | ApiNavigationConfigItem.WebsocketId\n    | ApiNavigationConfigItem.WebhookId\n    | ApiNavigationConfigItem.GraphqlOperationId;\n\nexport namespace ApiNavigationConfigItem {\n    export interface Subpackage {\n        type: \"subpackage\";\n        subpackageId: string;\n        items: ApiNavigationConfigItem[];\n    }\n    export interface EndpointId {\n        type: \"endpointId\";\n        value: string;\n    }\n    export interface WebsocketId {\n        type: \"websocketId\";\n        value: string;\n    }\n    export interface WebhookId {\n        type: \"webhookId\";\n        value: string;\n    }\n    export interface GraphqlOperationId {\n        type: \"graphqlOperationId\";\n        value: string;\n    }\n}\n\nexport const ApiNavigationConfigItemSchema: z.ZodType<ApiNavigationConfigItem> = z.lazy(() =>\n    z.discriminatedUnion(\"type\", [\n        z.object({\n            type: z.literal(\"subpackage\"),\n            subpackageId: SubpackageIdSchema,\n            items: z.array(ApiNavigationConfigItemSchema)\n        }),\n        z.object({ type: z.literal(\"endpointId\"), value: EndpointIdSchema }),\n        z.object({ type: z.literal(\"websocketId\"), value: WebSocketIdSchema }),\n        z.object({ type: z.literal(\"webhookId\"), value: WebhookIdSchema }),\n        z.object({ type: z.literal(\"graphqlOperationId\"), value: GraphQlOperationIdSchema })\n    ])\n);\n\nexport const ApiNavigationConfigRootSchema = z.object({\n    items: z.array(ApiNavigationConfigItemSchema)\n});\nexport type ApiNavigationConfigRoot = z.infer<typeof ApiNavigationConfigRootSchema>;\n\nexport const BearerAuthSchema = z.object({\n    description: z.string().nullish(),\n    tokenName: z.string().nullish()\n});\nexport type BearerAuth = z.infer<typeof BearerAuthSchema>;\n\nexport const BasicAuthSchema = z.object({\n    description: z.string().nullish(),\n    usernameName: z.string().nullish(),\n    passwordName: z.string().nullish(),\n    passwordAlwaysEmpty: z.boolean().nullish()\n});\nexport type BasicAuth = z.infer<typeof BasicAuthSchema>;\n\nexport const HeaderAuthSchema = z.object({\n    description: z.string().nullish(),\n    nameOverride: z.string().nullish(),\n    headerWireValue: z.string(),\n    prefix: z.string().nullish()\n});\nexport type HeaderAuth = z.infer<typeof HeaderAuthSchema>;\n\nexport const OAuthClientCredentialsReferencedEndpointSchema = z.object({\n    description: z.string().nullish(),\n    endpointId: EndpointIdSchema,\n    accessTokenLocator: z.string(),\n    headerName: z.string().nullish(),\n    tokenPrefix: z.string().nullish()\n});\nexport type OAuthClientCredentialsReferencedEndpoint = z.infer<typeof OAuthClientCredentialsReferencedEndpointSchema>;\n\nexport const OAuthClientCredentialsSchema = z.discriminatedUnion(\"type\", [\n    z.object({\n        type: z.literal(\"referencedEndpoint\"),\n        ...OAuthClientCredentialsReferencedEndpointSchema.shape\n    })\n]);\nexport type OAuthClientCredentials = z.infer<typeof OAuthClientCredentialsSchema>;\n\nexport const OAuthSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"clientCredentials\"), value: OAuthClientCredentialsSchema })\n]);\nexport type OAuth = z.infer<typeof OAuthSchema>;\n\nexport const ApiAuthSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"bearerAuth\"), ...BearerAuthSchema.shape }),\n    z.object({ type: z.literal(\"basicAuth\"), ...BasicAuthSchema.shape }),\n    z.object({ type: z.literal(\"header\"), ...HeaderAuthSchema.shape }),\n    z.object({ type: z.literal(\"oAuth\"), value: OAuthSchema })\n]);\nexport type ApiAuth = z.infer<typeof ApiAuthSchema>;\n","import * as z from \"zod\";\n\n// ── Org / API identifiers ──────────────────────────────────────────────\n\nexport const OrgIdSchema = z.string();\nexport type OrgId = z.infer<typeof OrgIdSchema>;\nexport function OrgId(value: string): OrgId {\n    return value;\n}\n\nexport const ApiIdSchema = z.string();\nexport type ApiId = z.infer<typeof ApiIdSchema>;\nexport function ApiId(value: string): ApiId {\n    return value;\n}\n\nexport const ApiDefinitionIdSchema = z.string().uuid();\nexport type ApiDefinitionId = z.infer<typeof ApiDefinitionIdSchema>;\nexport function ApiDefinitionId(value: string): ApiDefinitionId {\n    return value;\n}\n\n// ── HTTP / Endpoint schemas ─────────────────────────────────────────────\n\nexport const HttpMethodSchema = z.enum([\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"HEAD\"]);\nexport type HttpMethod = z.infer<typeof HttpMethodSchema>;\n\nexport const HttpMethod = {\n    Get: \"GET\",\n    Post: \"POST\",\n    Put: \"PUT\",\n    Patch: \"PATCH\",\n    Delete: \"DELETE\",\n    Head: \"HEAD\"\n} as const;\n\nexport const UrlSchema: z.ZodType<Url> = z.string() as any;\nexport type Url = string & { Url: void };\nexport function Url(value: string): Url {\n    return value as unknown as Url;\n}\n\nexport const EndpointPathLiteralSchema = z.string();\nexport type EndpointPathLiteral = z.infer<typeof EndpointPathLiteralSchema>;\nexport function EndpointPathLiteral(value: string): EndpointPathLiteral {\n    return value;\n}\n\nexport const EndpointIdentifierSchema = z.object({\n    path: z.string(),\n    method: HttpMethodSchema,\n    identifierOverride: z.string().nullish()\n});\nexport type EndpointIdentifier = z.infer<typeof EndpointIdentifierSchema>;\n\n// ── SDK request schema ──────────────────────────────────────────────────\n\nexport type SdkRequest =\n    | { type: \"typescript\"; package: string; version: string | undefined }\n    | { type: \"python\"; package: string; version: string | undefined }\n    | { type: \"go\"; githubRepo: string; version: string | undefined }\n    | { type: \"ruby\"; gem: string; version: string | undefined }\n    | { type: \"java\"; group: string; artifact: string; version: string | undefined }\n    | { type: \"csharp\"; package: string; version: string | undefined };\n\nexport const SdkRequestSchema: z.ZodType<SdkRequest> = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"typescript\"), package: z.string(), version: z.string().nullish() }),\n    z.object({ type: z.literal(\"python\"), package: z.string(), version: z.string().nullish() }),\n    z.object({ type: z.literal(\"go\"), githubRepo: z.string(), version: z.string().nullish() }),\n    z.object({ type: z.literal(\"ruby\"), gem: z.string(), version: z.string().nullish() }),\n    z.object({\n        type: z.literal(\"java\"),\n        group: z.string(),\n        artifact: z.string(),\n        version: z.string().nullish()\n    }),\n    z.object({ type: z.literal(\"csharp\"), package: z.string(), version: z.string().nullish() })\n]) as any;\n\n// ── Additional identifiers ─────────────────────────────────────────────\n\nexport const DocsConfigIdSchema = z.string();\nexport type DocsConfigId = z.infer<typeof DocsConfigIdSchema>;\nexport function DocsConfigId(value: string): DocsConfigId {\n    return value;\n}\n\nexport const GrpcIdSchema = z.string();\nexport type GrpcId = z.infer<typeof GrpcIdSchema>;\nexport function GrpcId(value: string): GrpcId {\n    return value;\n}\n\nexport const PageIdSchema = z.string();\nexport type PageId = z.infer<typeof PageIdSchema>;\nexport function PageId(value: string): PageId {\n    return value;\n}\n\nexport const RoleIdSchema = z.string();\nexport type RoleId = z.infer<typeof RoleIdSchema>;\nexport function RoleId(value: string): RoleId {\n    return value;\n}\n\nexport const TokenIdSchema = z.string();\nexport type TokenId = z.infer<typeof TokenIdSchema>;\n\nexport const VersionIdSchema = z.string();\nexport type VersionId = z.infer<typeof VersionIdSchema>;\nexport function VersionId(value: string): VersionId {\n    return value;\n}\n\n// ── Enums ──────────────────────────────────────────────────────────────\n\nexport const LinkTarget = {\n    Blank: \"_blank\",\n    Self: \"_self\",\n    Parent: \"_parent\",\n    Top: \"_top\"\n} as const;\nexport type LinkTarget = (typeof LinkTarget)[keyof typeof LinkTarget];\n\nexport const GrpcMethod = {\n    Unary: \"UNARY\",\n    ClientStream: \"CLIENT_STREAM\",\n    ServerStream: \"SERVER_STREAM\",\n    BidirectionalStream: \"BIDIRECTIONAL_STREAM\"\n} as const;\nexport type GrpcMethod = (typeof GrpcMethod)[keyof typeof GrpcMethod];\n\nexport const Availability = {\n    Stable: \"Stable\",\n    GenerallyAvailable: \"GenerallyAvailable\",\n    InDevelopment: \"InDevelopment\",\n    PreRelease: \"PreRelease\",\n    Deprecated: \"Deprecated\",\n    Beta: \"Beta\"\n} as const;\nexport type Availability = (typeof Availability)[keyof typeof Availability];\n\nexport const SupportedLanguage = {\n    Curl: \"curl\",\n    Python: \"python\",\n    Javascript: \"javascript\",\n    Js: \"js\",\n    Node: \"node\",\n    Typescript: \"typescript\",\n    Ts: \"ts\",\n    Go: \"go\",\n    Ruby: \"ruby\",\n    Csharp: \"csharp\",\n    Php: \"php\",\n    Swift: \"swift\",\n    Rust: \"rust\"\n} as const;\nexport type SupportedLanguage = (typeof SupportedLanguage)[keyof typeof SupportedLanguage];\n\nexport const HttpSnippetLanguage = {\n    Curl: \"curl\",\n    Csharp: \"csharp\",\n    Go: \"go\",\n    Java: \"java\",\n    Javascript: \"javascript\",\n    Php: \"php\",\n    Python: \"python\",\n    Ruby: \"ruby\",\n    Swift: \"swift\",\n    Rust: \"rust\",\n    Typescript: \"typescript\"\n} as const;\nexport type HttpSnippetLanguage = (typeof HttpSnippetLanguage)[keyof typeof HttpSnippetLanguage];\n\n// ── Error types ────────────────────────────────────────────────────────\n\nexport interface InvalidDomainErrorBody {\n    /** Value the domain should end with (i.e. docs.buildwithfern.com or dev.docs.buildwithfern.com) */\n    requiredDomainSuffix: string;\n}\n\n// ── Docs types ─────────────────────────────────────────────────────────\n\nexport interface AnnouncementConfig {\n    /** The text to display in the banner, using markdown. */\n    text: string;\n}\n\n// ── Snippet types ──────────────────────────────────────────────────────\n\nexport type SnippetsByEndpointMethod = Partial<Record<HttpMethod, Snippet[]>>;\n\nexport const SnippetsByEndpointMethodSchema: z.ZodType<SnippetsByEndpointMethod> = z.record(\n    HttpMethodSchema,\n    z.array(z.unknown())\n) as any;\n\n// ── SDK types for snippets ────────────────────────────────────────────\n\nexport interface TypeScriptSdk {\n    package: string;\n    version: string;\n}\n\nexport interface PythonSdk {\n    package: string;\n    version: string;\n}\n\nexport interface GoSdk {\n    githubRepo: string;\n    version: string;\n}\n\nexport interface RubySdk {\n    gem: string;\n    version: string;\n}\n\nexport interface CsharpSdk {\n    package: string;\n    version: string;\n}\n\nexport interface JavaSdk {\n    group: string;\n    artifact: string;\n    version: string;\n}\n\nexport interface TypeScriptSnippet {\n    sdk: TypeScriptSdk;\n    client: string;\n}\n\nexport interface PythonSnippet {\n    sdk: PythonSdk;\n    async_client: string;\n    sync_client: string;\n}\n\nexport interface GoSnippet {\n    sdk: GoSdk;\n    client: string;\n}\n\nexport interface RubySnippet {\n    sdk: RubySdk;\n    client: string;\n}\n\nexport interface CsharpSnippet {\n    sdk: CsharpSdk;\n    client: string;\n}\n\nexport interface JavaSnippet {\n    sdk: JavaSdk;\n    async_client: string;\n    sync_client: string;\n}\n\n// ── Snippet discriminated union ───────────────────────────────────────\n\n// ── Snippet code types (used to deserialize snippet data from DB) ────\n\nexport interface TypeScriptSnippetCode {\n    client: string;\n}\n\nexport interface PythonSnippetCode {\n    async_client: string;\n    sync_client: string;\n}\n\nexport interface GoSnippetCode {\n    client: string;\n}\n\nexport interface RubySnippetCode {\n    client: string;\n}\n\nexport interface JavaSnippetCode {\n    async_client: string;\n    sync_client: string;\n}\n\nexport interface CsharpSnippetCode {\n    client: string;\n}\n\n// ── Sdk type (SdkRequest with required version) ─────────────────────\n\nexport const SdkSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"typescript\"), package: z.string(), version: z.string() }),\n    z.object({ type: z.literal(\"python\"), package: z.string(), version: z.string() }),\n    z.object({ type: z.literal(\"go\"), githubRepo: z.string(), version: z.string() }),\n    z.object({ type: z.literal(\"ruby\"), gem: z.string(), version: z.string() }),\n    z.object({\n        type: z.literal(\"java\"),\n        group: z.string(),\n        artifact: z.string(),\n        version: z.string()\n    }),\n    z.object({ type: z.literal(\"csharp\"), package: z.string(), version: z.string() })\n]);\nexport type Sdk = z.infer<typeof SdkSchema>;\n\n// ── Template type (generic template placeholder) ────────────────────\nexport type Template = unknown;\n\nexport type Snippet = Snippet.Typescript | Snippet.Python | Snippet.Java | Snippet.Go | Snippet.Ruby | Snippet.Csharp;\n\nexport namespace Snippet {\n    interface _Base {\n        exampleIdentifier: string | undefined;\n    }\n\n    export interface Typescript extends TypeScriptSnippet, _Base {\n        type: \"typescript\";\n    }\n\n    export interface Python extends PythonSnippet, _Base {\n        type: \"python\";\n    }\n\n    export interface Java extends JavaSnippet, _Base {\n        type: \"java\";\n    }\n\n    export interface Go extends GoSnippet, _Base {\n        type: \"go\";\n    }\n\n    export interface Ruby extends RubySnippet, _Base {\n        type: \"ruby\";\n    }\n\n    export interface Csharp extends CsharpSnippet, _Base {\n        type: \"csharp\";\n    }\n}\n","import * as z from \"zod\";\nimport type { DiscriminatedUnionType, EnumType, ObjectType, TypeReference } from \"./shared.js\";\nimport {\n    ApiAuthSchema,\n    ApiDefinitionIdSchema,\n    ApiNavigationConfigRootSchema,\n    AuthSchemeIdSchema,\n    AvailabilitySchema,\n    DiscriminatedUnionTypeSchema,\n    EndpointIdSchema,\n    EndpointPathSchema,\n    EnumTypeSchema,\n    EnvironmentIdSchema,\n    EnvironmentSchema,\n    ErrorDeclarationSchema,\n    ErrorExampleSchema,\n    ExampleEndpointRequestSchema,\n    ExampleEndpointResponseSchema,\n    ExampleWebhookPayloadSchema,\n    ExampleWebSocketSessionSchema,\n    FileDownloadResponseBodyShapeSchema,\n    FormDataRequestSchema,\n    GraphQlOperationSchema,\n    HeaderSchema,\n    HttpMethodSchema,\n    JsonBodyShapeSchema,\n    MultipleAuthTypeSchema,\n    ObjectTypeSchema,\n    PropertyKeySchema,\n    ProtocolSchema,\n    QueryParameterSchema,\n    StreamConditionSchema,\n    StreamResponseV2Schema,\n    SubpackageIdSchema,\n    TypeIdSchema,\n    TypeReferenceSchema,\n    WebhookHttpMethodSchema,\n    WebhookIdSchema,\n    WebhookPayloadSchema,\n    WebSocketIdSchema,\n    WebSocketMessageSchema\n} from \"./shared.js\";\n\n// ── Register commons ─────────────────────────────────────────────────────\n\nexport const JqStringSchema = z.string();\nexport type JqString = z.infer<typeof JqStringSchema>;\n\nexport const RegisterLanguageSchema = z.string();\nexport type RegisterLanguage = z.infer<typeof RegisterLanguageSchema>;\n\n// ── Register type ────────────────────────────────────────────────────────\n\nexport const RegisterUndiscriminatedUnionVariantSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    typeName: z.string().nullish(),\n    type: TypeReferenceSchema,\n    displayName: z.string().nullish()\n});\nexport type RegisterUndiscriminatedUnionVariant = z.infer<typeof RegisterUndiscriminatedUnionVariantSchema>;\n\nexport const RegisterUndiscriminatedUnionTypeSchema = z.object({\n    variants: z.array(RegisterUndiscriminatedUnionVariantSchema)\n});\nexport type RegisterUndiscriminatedUnionType = z.infer<typeof RegisterUndiscriminatedUnionTypeSchema>;\n\nexport type RegisterTypeShape =\n    | RegisterTypeShape.Alias\n    | RegisterTypeShape.Enum\n    | RegisterTypeShape.UndiscriminatedUnion\n    | RegisterTypeShape.DiscriminatedUnion\n    | RegisterTypeShape.Object_;\n\nexport namespace RegisterTypeShape {\n    export interface Alias {\n        type: \"alias\";\n        value: TypeReference;\n    }\n    export interface Enum extends EnumType {\n        type: \"enum\";\n    }\n    export interface UndiscriminatedUnion extends RegisterUndiscriminatedUnionType {\n        type: \"undiscriminatedUnion\";\n    }\n    export interface DiscriminatedUnion extends DiscriminatedUnionType {\n        type: \"discriminatedUnion\";\n    }\n    export interface Object_ extends ObjectType {\n        type: \"object\";\n    }\n}\n\nexport const RegisterTypeShapeSchema: z.ZodType<RegisterTypeShape> = z.lazy(() =>\n    z.discriminatedUnion(\"type\", [\n        z.object({\n            type: z.literal(\"alias\"),\n            value: TypeReferenceSchema\n        }),\n        z.object({\n            type: z.literal(\"enum\"),\n            ...EnumTypeSchema.shape\n        }),\n        z.object({\n            type: z.literal(\"undiscriminatedUnion\"),\n            ...RegisterUndiscriminatedUnionTypeSchema.shape\n        }),\n        z.object({\n            type: z.literal(\"discriminatedUnion\"),\n            ...DiscriminatedUnionTypeSchema.shape\n        }),\n        z.object({\n            type: z.literal(\"object\"),\n            ...ObjectTypeSchema.shape\n        })\n    ])\n);\n\nexport const RegisterTypeDefinitionSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    name: z.string(),\n    shape: RegisterTypeShapeSchema,\n    displayName: z.string().nullish()\n});\nexport type RegisterTypeDefinition = z.infer<typeof RegisterTypeDefinitionSchema>;\n\nexport const RegisterBytesRequestSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    isOptional: z.boolean(),\n    contentType: z.string().nullish()\n});\nexport type RegisterBytesRequest = z.infer<typeof RegisterBytesRequestSchema>;\n\n// ── Register endpoint ────────────────────────────────────────────────────\n\nexport const RegisterJsonRequestBodySchema = z.object({\n    contentType: z.string(),\n    shape: JsonBodyShapeSchema\n});\nexport type RegisterJsonRequestBody = z.infer<typeof RegisterJsonRequestBodySchema>;\n\nexport const RegisterHttpRequestBodyShapeSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"json\"), ...RegisterJsonRequestBodySchema.shape }),\n    z.object({ type: z.literal(\"formData\"), ...FormDataRequestSchema.shape }),\n    z.object({ type: z.literal(\"bytes\"), ...RegisterBytesRequestSchema.shape }),\n    z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n    z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema }),\n    z.object({ type: z.literal(\"fileUpload\"), value: FormDataRequestSchema.nullish() })\n]);\nexport type RegisterHttpRequestBodyShape = z.infer<typeof RegisterHttpRequestBodyShapeSchema>;\n\nexport const RegisterHttpRequestSchema = z.object({\n    description: z.string().nullish(),\n    type: RegisterHttpRequestBodyShapeSchema\n});\nexport type RegisterHttpRequest = z.infer<typeof RegisterHttpRequestSchema>;\n\nexport const RegisterHttpRequestsV2Schema = z.object({\n    requests: z.array(RegisterHttpRequestSchema).nullish()\n});\nexport type RegisterHttpRequestsV2 = z.infer<typeof RegisterHttpRequestsV2Schema>;\n\nexport const RegisterCustomCodeSampleSchema = z.object({\n    description: z.string().nullish(),\n    language: z.string(),\n    code: z.string(),\n    name: z.string().nullish(),\n    install: z.string().nullish()\n});\nexport type RegisterCustomCodeSample = z.infer<typeof RegisterCustomCodeSampleSchema>;\n\nexport const RegisterExampleEndpointCallSchema = z.object({\n    description: z.string().nullish(),\n    name: z.string().nullish(),\n    path: z.string(),\n    pathParameters: z.record(PropertyKeySchema, z.unknown()),\n    queryParameters: z.record(z.string(), z.unknown()),\n    headers: z.record(z.string(), z.unknown()),\n    requestBody: z.unknown(),\n    requestBodyV3: ExampleEndpointRequestSchema.nullish(),\n    responseStatusCode: z.number().int(),\n    responseBody: z.unknown(),\n    responseBodyV3: ExampleEndpointResponseSchema.nullish(),\n    codeSamples: z.array(RegisterCustomCodeSampleSchema).nullish()\n});\nexport type RegisterExampleEndpointCall = z.infer<typeof RegisterExampleEndpointCallSchema>;\n\nexport const RegisterNonStreamResponseSchema = z.object({\n    shape: JsonBodyShapeSchema,\n    examples: z.array(RegisterExampleEndpointCallSchema)\n});\nexport type RegisterNonStreamResponse = z.infer<typeof RegisterNonStreamResponseSchema>;\n\nexport const RegisterStreamResponseSchema = z.object({\n    shape: JsonBodyShapeSchema,\n    examples: z.array(RegisterExampleEndpointCallSchema)\n});\nexport type RegisterStreamResponse = z.infer<typeof RegisterStreamResponseSchema>;\n\nexport const RegisterStreamConditionResponseSchema = z.object({\n    response: RegisterNonStreamResponseSchema,\n    streamResponse: RegisterStreamResponseSchema,\n    streamCondition: StreamConditionSchema\n});\nexport type RegisterStreamConditionResponse = z.infer<typeof RegisterStreamConditionResponseSchema>;\n\nexport const RegisterHttpResponseBodyShapeSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n    z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema }),\n    z.object({ type: z.literal(\"fileDownload\"), ...FileDownloadResponseBodyShapeSchema.shape }),\n    z.object({ type: z.literal(\"streamingText\") }),\n    z.object({ type: z.literal(\"stream\"), ...StreamResponseV2Schema.shape }),\n    z.object({ type: z.literal(\"streamCondition\"), ...RegisterStreamConditionResponseSchema.shape })\n]);\nexport type RegisterHttpResponseBodyShape = z.infer<typeof RegisterHttpResponseBodyShapeSchema>;\n\nexport const RegisterHttpResponseSchema = z.object({\n    description: z.string().nullish(),\n    type: RegisterHttpResponseBodyShapeSchema,\n    statusCode: z.number().int().nullish(),\n    isWildcard: z.boolean().nullish()\n});\nexport type RegisterHttpResponse = z.infer<typeof RegisterHttpResponseSchema>;\n\nexport const RegisterHttpResponsesV2Schema = z.object({\n    responses: z.array(RegisterHttpResponseSchema).nullish()\n});\nexport type RegisterHttpResponsesV2 = z.infer<typeof RegisterHttpResponsesV2Schema>;\n\nexport const RegisterErrorDeclarationV2Schema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    type: RegisterTypeShapeSchema.nullish(),\n    statusCode: z.number().int(),\n    isWildcard: z.boolean().nullish(),\n    name: z.string().nullish(),\n    examples: z.array(ErrorExampleSchema).nullish(),\n    headers: z.array(HeaderSchema).nullish()\n});\nexport type RegisterErrorDeclarationV2 = z.infer<typeof RegisterErrorDeclarationV2Schema>;\n\nexport const RegisterEndpointDefinitionSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    slug: z.string().nullish(),\n    auth: z.boolean().nullish(),\n    authV2: z.array(AuthSchemeIdSchema).nullish(),\n    multiAuth: z.array(MultipleAuthTypeSchema).nullish(),\n    defaultEnvironment: EnvironmentIdSchema.nullish(),\n    environments: z.array(EnvironmentSchema).nullish(),\n    method: HttpMethodSchema,\n    id: EndpointIdSchema,\n    originalEndpointId: z.string().nullish(),\n    name: z.string().nullish(),\n    path: EndpointPathSchema,\n    queryParameters: z.array(QueryParameterSchema),\n    headers: z.array(HeaderSchema),\n    responseHeaders: z.array(HeaderSchema).nullish(),\n    request: RegisterHttpRequestSchema.nullish(),\n    requestsV2: RegisterHttpRequestsV2Schema.nullish(),\n    response: RegisterHttpResponseSchema.nullish(),\n    responsesV2: RegisterHttpResponsesV2Schema.nullish(),\n    errors: z.array(ErrorDeclarationSchema).nullish(),\n    errorsV2: z.array(RegisterErrorDeclarationV2Schema).nullish(),\n    examples: z.array(RegisterExampleEndpointCallSchema),\n    protocol: ProtocolSchema.nullish(),\n    includeInApiExplorer: z.boolean().nullish()\n});\nexport type RegisterEndpointDefinition = z.infer<typeof RegisterEndpointDefinitionSchema>;\n\n// ── Register webhook ─────────────────────────────────────────────────────\n\nexport const RegisterWebhookDefinitionSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    method: WebhookHttpMethodSchema,\n    id: WebhookIdSchema,\n    name: z.string().nullish(),\n    path: z.array(z.string()),\n    headers: z.array(HeaderSchema),\n    payload: WebhookPayloadSchema,\n    responses: z.array(RegisterHttpResponseSchema).nullish(),\n    examples: z.array(ExampleWebhookPayloadSchema)\n});\nexport type RegisterWebhookDefinition = z.infer<typeof RegisterWebhookDefinitionSchema>;\n\n// ── Register websocket ───────────────────────────────────────────────────\n\nexport const RegisterWebSocketChannelSchema = z.object({\n    description: z.string().nullish(),\n    availability: AvailabilitySchema.nullish(),\n    id: WebSocketIdSchema,\n    auth: z.boolean(),\n    name: z.string().nullish(),\n    defaultEnvironment: EnvironmentIdSchema.nullish(),\n    environments: z.array(EnvironmentSchema),\n    path: EndpointPathSchema,\n    headers: z.array(HeaderSchema),\n    queryParameters: z.array(QueryParameterSchema),\n    messages: z.array(WebSocketMessageSchema),\n    examples: z.array(ExampleWebSocketSessionSchema)\n});\nexport type RegisterWebSocketChannel = z.infer<typeof RegisterWebSocketChannelSchema>;\n\n// ── Register index schemas ───────────────────────────────────────────────\n\nexport const SourceIdSchema = z.string();\nexport type SourceId = z.infer<typeof SourceIdSchema>;\nexport function SourceId(value: string): SourceId {\n    return value;\n}\n\nexport const SourceSchema = z.discriminatedUnion(\"type\", [\n    z.object({ type: z.literal(\"openapi\") }),\n    z.object({ type: z.literal(\"asyncapi\") }),\n    z.object({ type: z.literal(\"proto\") })\n]);\nexport type Source = z.infer<typeof SourceSchema>;\n\nexport const SourceUploadSchema = z.object({\n    uploadUrl: z.string(),\n    downloadUrl: z.string()\n});\nexport type SourceUpload = z.infer<typeof SourceUploadSchema>;\n\nexport const DynamicIRSchema = z.object({\n    dynamicIR: z.unknown()\n});\nexport type DynamicIR = z.infer<typeof DynamicIRSchema>;\n\nexport const DynamicIRUploadSchema = z.object({\n    uploadUrl: z.string()\n});\nexport type DynamicIRUpload = z.infer<typeof DynamicIRUploadSchema>;\n\nexport const TypescriptPackageSchema = z.object({\n    package: z.string(),\n    version: z.string().nullish()\n});\nexport type TypescriptPackage = z.infer<typeof TypescriptPackageSchema>;\n\nexport const PythonPackageSchema = z.object({\n    package: z.string(),\n    version: z.string().nullish()\n});\nexport type PythonPackage = z.infer<typeof PythonPackageSchema>;\n\nexport const GoModuleSchema = z.object({\n    githubRepo: z.string(),\n    version: z.string().nullish()\n});\nexport type GoModule = z.infer<typeof GoModuleSchema>;\n\nexport const JavaCoordinateSchema = z.object({\n    coordinate: z.string(),\n    version: z.string().nullish()\n});\nexport type JavaCoordinate = z.infer<typeof JavaCoordinateSchema>;\n\nexport const RubyGemSchema = z.object({\n    gem: z.string(),\n    version: z.string().nullish()\n});\nexport type RubyGem = z.infer<typeof RubyGemSchema>;\n\nexport const NugetPackageSchema = z.object({\n    package: z.string(),\n    version: z.string().nullish()\n});\nexport type NugetPackage = z.infer<typeof NugetPackageSchema>;\n\nexport const ComposerPackageSchema = z.object({\n    package: z.string(),\n    version: z.string().nullish()\n});\nexport type ComposerPackage = z.infer<typeof ComposerPackageSchema>;\n\nexport const SwiftPackageSchema = z.object({\n    package: z.string(),\n    version: z.string().nullish()\n});\nexport type SwiftPackage = z.infer<typeof SwiftPackageSchema>;\n\nexport const CratesPackageSchema = z.object({\n    package: z.string(),\n    version: z.string().nullish()\n});\nexport type CratesPackage = z.infer<typeof CratesPackageSchema>;\n\nexport const SnippetsConfigSchema = z.object({\n    typescriptSdk: TypescriptPackageSchema.nullish(),\n    pythonSdk: PythonPackageSchema.nullish(),\n    goSdk: GoModuleSchema.nullish(),\n    javaSdk: JavaCoordinateSchema.nullish(),\n    rubySdk: RubyGemSchema.nullish(),\n    csharpSdk: NugetPackageSchema.nullish(),\n    phpSdk: ComposerPackageSchema.nullish(),\n    swiftSdk: SwiftPackageSchema.nullish(),\n    rustSdk: CratesPackageSchema.nullish()\n});\nexport type SnippetsConfig = z.infer<typeof SnippetsConfigSchema>;\n\nexport const RegisterApiDefinitionPackageSchema = z.object({\n    endpoints: z.array(RegisterEndpointDefinitionSchema),\n    websockets: z.array(RegisterWebSocketChannelSchema).nullish(),\n    webhooks: z.array(RegisterWebhookDefinitionSchema).nullish(),\n    graphqlOperations: z.array(GraphQlOperationSchema).nullish(),\n    types: z.array(TypeIdSchema),\n    subpackages: z.array(SubpackageIdSchema),\n    pointsTo: SubpackageIdSchema.nullish()\n});\nexport type RegisterApiDefinitionPackage = z.infer<typeof RegisterApiDefinitionPackageSchema>;\n\nexport const RegisterApiDefinitionSubpackageSchema = z.object({\n    ...RegisterApiDefinitionPackageSchema.shape,\n    description: z.string().nullish(),\n    subpackageId: SubpackageIdSchema,\n    name: z.string(),\n    displayName: z.string().nullish()\n});\nexport type RegisterApiDefinitionSubpackage = z.infer<typeof RegisterApiDefinitionSubpackageSchema>;\n\nexport const RegisterApiDefinitionSchema = z.object({\n    rootPackage: RegisterApiDefinitionPackageSchema,\n    apiName: z.string().nullish(),\n    types: z.record(TypeIdSchema, RegisterTypeDefinitionSchema),\n    subpackages: z.record(SubpackageIdSchema, RegisterApiDefinitionSubpackageSchema),\n    auth: ApiAuthSchema.nullish(),\n    authSchemes: z.record(AuthSchemeIdSchema, ApiAuthSchema).nullish(),\n    globalHeaders: z.array(HeaderSchema).nullish(),\n    snippetsConfiguration: SnippetsConfigSchema.nullish(),\n    navigation: ApiNavigationConfigRootSchema.nullish()\n});\nexport type RegisterApiDefinition = z.infer<typeof RegisterApiDefinitionSchema>;\n\nexport const RegisterApiDefinitionResponseSchema = z.object({\n    apiDefinitionId: ApiDefinitionIdSchema,\n    sources: z.record(SourceIdSchema, SourceUploadSchema).nullish(),\n    dynamicIRs: z.record(z.string(), DynamicIRUploadSchema).nullish()\n});\nexport type RegisterApiDefinitionResponse = z.infer<typeof RegisterApiDefinitionResponseSchema>;\n\nexport const SnippetInfoSchema = z.object({\n    packageName: z.string(),\n    version: z.string().nullish()\n});\nexport type SnippetInfo = z.infer<typeof SnippetInfoSchema>;\n\nexport const SdkDynamicIrDownloadSchema = z.object({\n    downloadUrl: z.string()\n});\nexport type SdkDynamicIrDownload = z.infer<typeof SdkDynamicIrDownloadSchema>;\n\nexport const GetSdkDynamicIrUploadUrlsResponseSchema = z.object({\n    uploadUrls: z.record(z.string(), DynamicIRUploadSchema)\n});\nexport type GetSdkDynamicIrUploadUrlsResponse = z.infer<typeof GetSdkDynamicIrUploadUrlsResponseSchema>;\n\nexport const CheckSdkDynamicIrExistsResponseSchema = z.object({\n    existingDynamicIrs: z.record(z.string(), SdkDynamicIrDownloadSchema)\n});\nexport type CheckSdkDynamicIrExistsResponse = z.infer<typeof CheckSdkDynamicIrExistsResponseSchema>;\n\nexport const EndpointExampleGenerationErrorBodySchema = z.object({\n    endpointId: z.string()\n});\nexport type EndpointExampleGenerationErrorBody = z.infer<typeof EndpointExampleGenerationErrorBodySchema>;\n","import * as Latest from \"./latest\";\n\n/**\n * The order of availability levels, from most stable to least stable.\n *\n * This is used to sort the availability levels in the UI, and to determine the stability level of a type reference when multiple are available.\n */\nexport const AvailabilityOrder = [\n    Latest.Availability.Stable,\n    Latest.Availability.GenerallyAvailable,\n    Latest.Availability.Beta,\n    Latest.Availability.PreRelease,\n    Latest.Availability.InDevelopment,\n    Latest.Availability.Deprecated\n] as const;\n\n/**\n * @param availabilities an array of availability levels\n * @returns the **least** stable availability level from the input array\n */\nexport function coalesceAvailability(\n    availabilities: (Latest.Availability | null | undefined)[]\n): Latest.Availability | undefined {\n    for (const availability of [...AvailabilityOrder].reverse()) {\n        if (availabilities.includes(availability)) {\n            return availability;\n        }\n    }\n    return undefined;\n}\n\n// the following code is used to check that the contents of the AvailabilityOrder array contains all the values of the Availability enum\ntype AvailabilityValues = (typeof Latest.Availability)[keyof typeof Latest.Availability];\ntype CheckAvailabilityOrder<T extends readonly AvailabilityValues[]> = T[number] extends AvailabilityValues\n    ? AvailabilityValues extends T[number]\n        ? true\n        : false\n    : false;\ntype Assert<T extends true> = T;\nexport type CheckAssert = Assert<CheckAvailabilityOrder<typeof AvailabilityOrder>>;\n","import type { TypeId } from \"../navigation\";\nimport { LARGE_LOOP_TOLERANCE } from \"./const\";\nimport type { TypeDefinition } from \"./latest\";\nimport type { TypeShapeOrReference } from \"./types\";\nimport { unwrapObjectType, unwrapReference } from \"./unwrap\";\n\ninterface CollectReferencedTypeIdsOptions {\n    maxDepth?: number;\n}\n\n/**\n * Collects all TypeIds that are referenced (directly or transitively) from a given type shape.\n * This is useful for filtering down a large types map to only the types needed for rendering\n * a specific schema, significantly reducing payload size.\n *\n * @param type - The root type shape to start traversal from\n * @param types - The full map of all type definitions\n * @param options - Optional configuration (maxDepth defaults to 10)\n * @returns A Set of TypeIds that are referenced from the root type\n */\nexport function collectReferencedTypeIds(\n    type: TypeShapeOrReference,\n    types: Record<TypeId, TypeDefinition>,\n    { maxDepth = 10 }: CollectReferencedTypeIdsOptions = {}\n): Set<TypeId> {\n    const referencedIds = new Set<TypeId>();\n\n    const stack: {\n        shape: TypeShapeOrReference;\n        visitedTypeIds: Set<TypeId>;\n        depth: number;\n    }[] = [{ shape: type, visitedTypeIds: new Set(), depth: 0 }];\n\n    let loop = 0;\n    while (stack.length > 0) {\n        if (loop++ > LARGE_LOOP_TOLERANCE) {\n            console.error(\"Infinite loop detected when collecting referenced type IDs\");\n            break;\n        }\n\n        const { shape, visitedTypeIds: parentVisitedTypeIds, depth } = stack.pop()!;\n\n        if (depth > maxDepth) {\n            continue;\n        }\n\n        const unwrapped = unwrapReference(shape, types);\n\n        // Check for circular references\n        let circularReferenceDetected = false;\n        for (const typeId of unwrapped.visitedTypeIds) {\n            if (parentVisitedTypeIds.has(typeId)) {\n                circularReferenceDetected = true;\n                break;\n            }\n            referencedIds.add(typeId);\n        }\n\n        if (circularReferenceDetected) {\n            continue;\n        }\n\n        const visitedTypeIds = new Set([...parentVisitedTypeIds, ...unwrapped.visitedTypeIds]);\n\n        // Handle object types - need to traverse properties and extended types\n        if (unwrapped.shape.type === \"object\") {\n            const obj = unwrapObjectType(unwrapped.shape, types, parentVisitedTypeIds);\n\n            // Add type IDs from object unwrapping (extended types)\n            for (const typeId of obj.visitedTypeIds) {\n                referencedIds.add(typeId);\n                visitedTypeIds.add(typeId);\n            }\n\n            // Traverse each property's value shape\n            for (const property of obj.properties) {\n                stack.push({\n                    shape: property.valueShape,\n                    visitedTypeIds,\n                    depth: depth + 1\n                });\n            }\n\n            // Traverse extra properties if present\n            if (obj.extraProperties) {\n                stack.push({\n                    shape: obj.extraProperties,\n                    visitedTypeIds,\n                    depth: depth + 1\n                });\n            }\n        } else if (unwrapped.shape.type === \"undiscriminatedUnion\") {\n            // Traverse each variant\n            for (const variant of unwrapped.shape.variants) {\n                stack.push({\n                    shape: variant.shape,\n                    visitedTypeIds,\n                    depth: depth + 1\n                });\n            }\n        } else if (unwrapped.shape.type === \"discriminatedUnion\") {\n            // Traverse each variant (variants extend ObjectType)\n            for (const variant of unwrapped.shape.variants) {\n                stack.push({\n                    shape: { ...variant, type: \"object\" },\n                    visitedTypeIds,\n                    depth: depth + 1\n                });\n            }\n        } else if (unwrapped.shape.type === \"list\" || unwrapped.shape.type === \"set\") {\n            // Traverse item shape\n            stack.push({\n                shape: unwrapped.shape.itemShape,\n                visitedTypeIds,\n                depth: depth + 1\n            });\n        } else if (unwrapped.shape.type === \"map\") {\n            // Traverse both key and value shapes\n            stack.push({\n                shape: unwrapped.shape.keyShape,\n                visitedTypeIds,\n                depth: depth + 1\n            });\n            stack.push({\n                shape: unwrapped.shape.valueShape,\n                visitedTypeIds,\n                depth: depth + 1\n            });\n        }\n        // Primitives, enums, literals, and unknown types don't reference other types\n    }\n\n    return referencedIds;\n}\n\n/**\n * Filters a types map to only include types that are referenced from the given root type.\n * This is a convenience function that combines collectReferencedTypeIds with filtering.\n *\n * @param rootType - The root type shape to start traversal from\n * @param types - The full map of all type definitions\n * @param options - Optional configuration (maxDepth defaults to 10)\n * @returns A filtered types map containing only referenced types\n */\nexport function filterReferencedTypes(\n    rootType: TypeShapeOrReference,\n    types: Record<TypeId, TypeDefinition>,\n    options?: CollectReferencedTypeIdsOptions\n): Record<TypeId, TypeDefinition> {\n    const referencedIds = collectReferencedTypeIds(rootType, types, options);\n\n    return Object.fromEntries(Object.entries(types).filter(([id]) => referencedIds.has(id as TypeId))) as Record<\n        TypeId,\n        TypeDefinition\n    >;\n}\n","import type { Availability, TypeId } from \"../navigation\";\nimport { coalesceAvailability } from \"./availability\";\nimport { LARGE_LOOP_TOLERANCE } from \"./const\";\nimport type { ObjectProperty, TypeDefinition } from \"./latest\";\nimport type { TypeShapeOrReference } from \"./types\";\nimport { unwrapObjectType, unwrapReference } from \"./unwrap\";\n\n/**\n * A path through the type tree, used to identify a type definition.\n *\n * i.e. it may be represented as a jq:\n *\n * - a.b.c.d\n * - a[].b.c\n * - a.b[key].c\n *\n * We collect the true shape of the path here so that the frontend can determine how to render it.\n */\nexport type KeyPathItem =\n    | { type: \"meta\"; value: string; displayName: string | null | undefined }\n    | { type: \"objectProperty\"; key: string; optional: boolean | undefined }\n    | {\n          type: \"undiscriminatedUnionVariant\";\n          displayName: string | null | undefined;\n          idx: number;\n      }\n    | {\n          type: \"discriminatedUnionVariant\";\n          discriminant: string;\n          discriminantDisplayName: string | null | undefined;\n          discriminantValue: string;\n      }\n    | { type: \"list\" | \"set\" | \"mapValue\" | \"extra\" }\n    | { type: \"enumValue\"; value: string };\n\nexport interface TypeDefinitionTreeItem {\n    /**\n     * The path to the type definition\n     */\n    path: KeyPathItem[];\n    descriptions: string[];\n    availability: Availability | null | undefined;\n}\n\ninterface CollectTypeDefinitionTreeOptions {\n    path?: KeyPathItem[];\n    availability?: Availability | null;\n    maxDepth?: number;\n}\n\n/**\n * This function is intended to be used to generate a tree of all type definitions, and is intended to be used\n * for indexing the type tree and their descriptions into algolia.\n */\nexport function collectTypeDefinitionTree(\n    type: TypeShapeOrReference,\n    types: Record<TypeId, TypeDefinition>,\n    { availability: rootAvailability, maxDepth = 5, path: rootpath = [] }: CollectTypeDefinitionTreeOptions = {}\n): TypeDefinitionTreeItem[] {\n    const toRet: TypeDefinitionTreeItem[] = [];\n\n    const stack: {\n        type: TypeShapeOrReference;\n        path: KeyPathItem[];\n        descriptions: string[];\n        availability: Availability | null | undefined;\n        visitedTypeIds: Set<TypeId>;\n    }[] = [\n        {\n            type,\n            path: rootpath,\n            availability: rootAvailability,\n            descriptions: [],\n            visitedTypeIds: new Set()\n        }\n    ];\n\n    let loop = 0;\n    while (stack.length > 0) {\n        if (loop++ > LARGE_LOOP_TOLERANCE) {\n            console.error(\"Infinite loop detected when traversing type definitions\");\n            break;\n        }\n\n        const {\n            type: last,\n            path: parentpath,\n            descriptions: parentDescriptions,\n            visitedTypeIds: parentVisitedTypeIds,\n            availability: parentAvailability\n        } = stack.pop()!;\n\n        if (parentpath.length > maxDepth) {\n            continue;\n        }\n\n        const unwrapped = unwrapReference(last, types);\n\n        // the child's availability must be the least stable availability of the parent and the child\n        const availability = coalesceAvailability([parentAvailability, unwrapped.availability]);\n        const descriptions = [...parentDescriptions, ...unwrapped.descriptions];\n\n        // check if this reference has been unwrapped already by its parents\n        let circularReferenceDetected = false;\n        unwrapped.visitedTypeIds.forEach((typeId) => {\n            if (parentVisitedTypeIds.has(typeId)) {\n                circularReferenceDetected = true;\n            }\n        });\n\n        if (circularReferenceDetected) {\n            continue;\n        }\n\n        const visitedTypeIds = new Set([...parentVisitedTypeIds, ...unwrapped.visitedTypeIds]);\n\n        if (unwrapped.shape.type === \"object\") {\n            const obj = unwrapObjectType(unwrapped.shape, types);\n            descriptions.push(...obj.descriptions);\n\n            obj.visitedTypeIds.forEach((typeId) => visitedTypeIds.add(typeId));\n\n            obj.properties.forEach((property) => {\n                stack.push({\n                    type: property.valueShape,\n                    path: [\n                        ...parentpath,\n                        {\n                            type: \"objectProperty\",\n                            key: property.key,\n                            optional: unwrapReference(property.valueShape, types).isOptional\n                        }\n                    ],\n                    descriptions: property.description ? [property.description] : [],\n                    visitedTypeIds,\n                    availability\n                });\n            });\n\n            if (obj.extraProperties) {\n                stack.push({\n                    type: obj.extraProperties,\n                    path: [...parentpath, { type: \"extra\" }],\n                    descriptions: [],\n                    visitedTypeIds,\n                    availability\n                });\n            }\n        }\n\n        toRet.push({\n            path: parentpath,\n            descriptions,\n            availability\n        });\n\n        if (unwrapped.shape.type === \"undiscriminatedUnion\") {\n            unwrapped.shape.variants.forEach((variant, idx) => {\n                stack.push({\n                    type: variant.shape,\n                    path: [\n                        ...parentpath,\n                        {\n                            type: \"undiscriminatedUnionVariant\",\n                            displayName: variant.displayName,\n                            idx\n                        }\n                    ],\n                    descriptions: variant.description ? [variant.description] : [],\n                    visitedTypeIds,\n                    availability: coalesceAvailability([availability, variant.availability])\n                });\n            });\n        } else if (unwrapped.shape.type === \"discriminatedUnion\") {\n            const discriminant = unwrapped.shape.discriminant;\n\n            unwrapped.shape.variants.forEach((variant) => {\n                const path: KeyPathItem[] = [\n                    ...parentpath,\n                    {\n                        type: \"discriminatedUnionVariant\",\n                        discriminant,\n                        discriminantDisplayName: variant.displayName,\n                        discriminantValue: variant.discriminantValue\n                    }\n                ];\n                stack.push({\n                    type: { ...variant, type: \"object\" },\n                    path,\n                    descriptions: variant.description ? [variant.description] : [],\n                    visitedTypeIds,\n                    availability: coalesceAvailability([availability, variant.availability])\n                });\n            });\n        } else if (unwrapped.shape.type === \"list\" || unwrapped.shape.type === \"set\") {\n            stack.push({\n                type: unwrapped.shape.itemShape,\n                path: [...parentpath, { type: unwrapped.shape.type }],\n                descriptions,\n                visitedTypeIds,\n                availability\n            });\n        } else if (unwrapped.shape.type === \"map\") {\n            stack.push({\n                type: unwrapped.shape.valueShape,\n                path: [...parentpath, { type: \"mapValue\" }],\n                // we don't need to add the descriptions of the key shape here, but the descriptions from the key are appended here:\n                descriptions: [...descriptions, ...unwrapReference(unwrapped.shape.keyShape, types).descriptions],\n                visitedTypeIds,\n                availability\n            });\n        } else if (unwrapped.shape.type === \"enum\") {\n            unwrapped.shape.values.forEach((value) => {\n                toRet.push({\n                    path: [...parentpath, { type: \"enumValue\", value: value.value }],\n                    descriptions: value.description ? [value.description] : [],\n                    availability\n                });\n            });\n        }\n    }\n\n    return toRet;\n}\n\nexport function collectTypeDefinitionTreeForObjectProperty(\n    property: ObjectProperty,\n    types: Record<TypeId, TypeDefinition>,\n    rootPath: KeyPathItem[] = [],\n    maxDepth = 5\n): TypeDefinitionTreeItem[] {\n    return [\n        {\n            path: [\n                ...rootPath,\n                {\n                    type: \"objectProperty\",\n                    key: property.key,\n                    optional: unwrapReference(property.valueShape, types).isOptional\n                }\n            ],\n            descriptions: property.description ? [property.description] : [],\n            availability: property.availability ?? undefined\n        },\n        ...collectTypeDefinitionTree(property.valueShape, types, {\n            maxDepth: maxDepth - 1,\n            availability: property.availability ?? undefined,\n            path: [\n                ...rootPath,\n                {\n                    type: \"objectProperty\",\n                    key: property.key,\n                    optional: unwrapReference(property.valueShape, types).isOptional\n                }\n            ]\n        })\n    ];\n}\n","import visitDiscriminatedUnion from \"@fern-api/ui-core-utils/visitDiscriminatedUnion\";\nimport { noop } from \"ts-essentials\";\n\nimport type * as Latest from \"./latest\";\n\nexport class ApiTypeIdVisitor {\n    public static visitEndpointDefinition(\n        endpoint: Latest.EndpointDefinition,\n        visit: (typeId: Latest.TypeId) => void\n    ): void {\n        endpoint.pathParameters?.forEach((pathParameter) => {\n            ApiTypeIdVisitor.visitTypeShape(pathParameter.valueShape, visit);\n        });\n        endpoint.queryParameters?.forEach((queryParameter) => {\n            ApiTypeIdVisitor.visitTypeShape(queryParameter.valueShape, visit);\n        });\n        endpoint.requestHeaders?.forEach((header) => {\n            ApiTypeIdVisitor.visitTypeShape(header.valueShape, visit);\n        });\n        endpoint.responseHeaders?.forEach((header) => {\n            ApiTypeIdVisitor.visitTypeShape(header.valueShape, visit);\n        });\n        endpoint.requests?.forEach((request) => {\n            if (request.body != null) {\n                ApiTypeIdVisitor.visitHttpRequestBodyShape(request.body, visit);\n            }\n        });\n        endpoint.responses?.forEach((response) => {\n            if (response.body != null) {\n                ApiTypeIdVisitor.visitHttpResponseBodyShape(response.body, visit);\n            }\n        });\n        endpoint.errors?.forEach((error) => {\n            if (error.shape != null) {\n                ApiTypeIdVisitor.visitTypeShape(error.shape, visit);\n            }\n        });\n    }\n\n    public static visitWebSocketChannel(\n        channel: Latest.WebSocketChannel,\n        visit: (typeId: Latest.TypeId) => void\n    ): void {\n        channel.requestHeaders?.forEach((header) => {\n            ApiTypeIdVisitor.visitTypeShape(header.valueShape, visit);\n        });\n        channel.pathParameters?.forEach((pathParameter) => {\n            ApiTypeIdVisitor.visitTypeShape(pathParameter.valueShape, visit);\n        });\n        channel.queryParameters?.forEach((queryParameter) => {\n            ApiTypeIdVisitor.visitTypeShape(queryParameter.valueShape, visit);\n        });\n        channel.messages.forEach((message) => {\n            ApiTypeIdVisitor.visitTypeShape(message.body, visit);\n        });\n    }\n\n    public static visitWebhookDefinition(\n        webhook: Latest.WebhookDefinition,\n        visit: (typeId: Latest.TypeId) => void\n    ): void {\n        webhook.headers?.forEach((header) => {\n            ApiTypeIdVisitor.visitTypeShape(header.valueShape, visit);\n        });\n        if (webhook.payloads?.[0] != null) {\n            ApiTypeIdVisitor.visitWebhookPayloadShape(webhook.payloads[0].shape, visit);\n        }\n        webhook.responses?.forEach((response) => {\n            if (response.body != null) {\n                ApiTypeIdVisitor.visitHttpResponseBodyShape(response.body, visit);\n            }\n        });\n    }\n\n    public static visitGraphQlOperation(\n        operation: Latest.GraphQlOperation,\n        visit: (typeId: Latest.TypeId) => void\n    ): void {\n        operation.arguments?.forEach((arg) => {\n            ApiTypeIdVisitor.visitTypeShape(arg.type, visit);\n        });\n        ApiTypeIdVisitor.visitTypeShape(operation.returnType, visit);\n    }\n\n    public static visitWebhookPayloadShape(\n        payloadShape: Latest.WebhookPayloadShape,\n        visit: (typeId: Latest.TypeId) => void\n    ): void {\n        return visitDiscriminatedUnion(payloadShape)._visit({\n            object: (value) => ApiTypeIdVisitor.visitObjectType(value, visit),\n            alias: (value) => ApiTypeIdVisitor.visitTypeReference(value.value, visit),\n            formData: (value) => ApiTypeIdVisitor.visitFormDataRequest(value, visit)\n        });\n    }\n\n    public static visitHttpRequestBodyShape(\n        bodyShape: Latest.HttpRequestBodyShape,\n        visit: (typeId: Latest.TypeId) => void\n    ): void {\n        return visitDiscriminatedUnion(bodyShape)._visit({\n            object: (value) => ApiTypeIdVisitor.visitObjectType(value, visit),\n            alias: (value) => ApiTypeIdVisitor.visitTypeReference(value.value, visit),\n            bytes: noop,\n            formData: (value) => ApiTypeIdVisitor.visitFormDataRequest(value, visit)\n        });\n    }\n\n    public static visitHttpResponseBodyShape(\n        bodyShape: Latest.HttpResponseBodyShape,\n        visit: (typeId: Latest.TypeId) => void\n    ): void {\n        return visitDiscriminatedUnion(bodyShape)._visit({\n            object: (value) => ApiTypeIdVisitor.visitObjectType(value, visit),\n            alias: (value) => ApiTypeIdVisitor.visitTypeReference(value.value, visit),\n            fileDownload: noop,\n            streamingText: noop,\n            stream: (value) => ApiTypeIdVisitor.visitTypeShape(value.shape, visit),\n            empty: noop\n        });\n    }\n\n    public static visitFormDataRequest(\n        typeDefinition: Latest.FormDataRequest,\n        visit: (typeId: Latest.TypeId) => void\n    ): void {\n        return typeDefinition.fields.forEach((field) =>\n            visitDiscriminatedUnion(field)._visit({\n                file: noop,\n                files: noop,\n                property: (property) => ApiTypeIdVisitor.visitTypeShape(property.valueShape, visit)\n            })\n        );\n    }\n\n    public static visitTypeDefinition(\n        typeDefinition: Latest.TypeDefinition,\n        visit: (typeId: Latest.TypeId) => void\n    ): void {\n        return ApiTypeIdVisitor.visitTypeShape(typeDefinition.shape, visit);\n    }\n\n    public static visitTypeShape(typeShape: Latest.TypeShape, visit: (typeId: Latest.TypeId) => void): void {\n        return visitDiscriminatedUnion(typeShape)._visit({\n            object: (value) => ApiTypeIdVisitor.visitObjectType(value, visit),\n            alias: (value) => ApiTypeIdVisitor.visitTypeReference(value.value, visit),\n            enum: noop,\n            undiscriminatedUnion: (value) =>\n                value.variants.forEach((variant) => ApiTypeIdVisitor.visitTypeShape(variant.shape, visit)),\n            discriminatedUnion: (value) =>\n                value.variants.forEach((variant) => ApiTypeIdVisitor.visitObjectType(variant, visit))\n        });\n    }\n\n    public static visitObjectType(typeShape: Latest.ObjectType, visit: (typeId: Latest.TypeId) => void): void {\n        typeShape.extends.forEach(visit);\n        typeShape.properties.forEach((property) => {\n            ApiTypeIdVisitor.visitTypeShape(property.valueShape, visit);\n        });\n    }\n\n    public static visitTypeReference(\n        typeReference: Latest.TypeReference,\n        visit: (typeId: Latest.TypeId) => void\n    ): void {\n        return visitDiscriminatedUnion(typeReference)._visit({\n            id: (value) => visit(value.id),\n            primitive: noop,\n            optional: (value) => ApiTypeIdVisitor.visitTypeShape(value.shape, visit),\n            nullable: (value) => ApiTypeIdVisitor.visitTypeShape(value.shape, visit),\n            list: (value) => ApiTypeIdVisitor.visitTypeShape(value.itemShape, visit),\n            set: (value) => ApiTypeIdVisitor.visitTypeShape(value.itemShape, visit),\n            map: (value) => {\n                ApiTypeIdVisitor.visitTypeShape(value.keyShape, visit);\n                ApiTypeIdVisitor.visitTypeShape(value.valueShape, visit);\n            },\n            literal: noop,\n            unknown: noop\n        });\n    }\n}\n","import { LARGE_LOOP_TOLERANCE } from \"./const\";\nimport type * as Latest from \"./latest\";\nimport { EndpointId } from \"./latest\";\nimport { ApiTypeIdVisitor } from \"./typeid-visitor\";\n\nexport type PruningNodeType =\n    | { type: \"endpoint\"; endpointId: Latest.EndpointId }\n    | { type: \"webSocket\"; webSocketId: Latest.WebSocketId }\n    | { type: \"webhook\"; webhookId: Latest.WebhookId }\n    | { type: \"grpc\"; grpcId: Latest.GrpcId }\n    | { type: \"graphql\"; graphqlOperationId: Latest.GraphQlOperationId };\n\nclass ApiDefinitionPruner {\n    static instances = new WeakMap<Latest.ApiDefinition, ApiDefinitionPruner>();\n\n    static from(api: Latest.ApiDefinition): ApiDefinitionPruner {\n        const toRet = ApiDefinitionPruner.instances.get(api) ?? new ApiDefinitionPruner(api);\n        ApiDefinitionPruner.instances.set(api, toRet);\n        return toRet;\n    }\n\n    private constructor(private api: Latest.ApiDefinition) {}\n\n    /**\n     * This utility is designed to prune an API definition to only include the desired endpoints, websockets, and webhooks\n     * based on the provided node of the navigation tree, which will reduce the size of the API definition that is sent to the client.\n     *\n     * @param node of the navigation tree to prune the API definition to\n     * @returns a new API definition that is the result of pruning the input API definition to the desired node\n     */\n    public prune(...nodes: PruningNodeType[]): Latest.ApiDefinition {\n        const toRet: Latest.ApiDefinition = {\n            ...this.api,\n            endpoints: {},\n            websockets: {},\n            webhooks: {},\n            graphqlOperations: {},\n            types: {},\n            subpackages: {},\n            auths: {}\n        };\n\n        const namespaces = new Set<Latest.SubpackageId>();\n        const authSchemes = new Set<Latest.AuthSchemeId>();\n\n        for (const node of nodes) {\n            if (node.type === \"endpoint\") {\n                const found = this.api.endpoints[node.endpointId];\n                if (found) {\n                    toRet.endpoints[node.endpointId] = found;\n                    found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));\n                    found.auth?.forEach((authSchemeId) => authSchemes.add(authSchemeId));\n                }\n            } else if (node.type === \"webSocket\") {\n                const found = this.api.websockets[node.webSocketId];\n                if (found) {\n                    toRet.websockets[node.webSocketId] = found;\n                    found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));\n                    found.auth?.forEach((authSchemeId) => authSchemes.add(authSchemeId));\n                }\n            } else if (node.type === \"webhook\") {\n                const found = this.api.webhooks[node.webhookId];\n                if (found) {\n                    toRet.webhooks[node.webhookId] = found;\n                    found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));\n                }\n            } else if (node.type === \"grpc\") {\n                const grpcIdAsEndpointId = EndpointId(node.grpcId);\n                const found = this.api.endpoints[grpcIdAsEndpointId];\n                if (found) {\n                    toRet.endpoints[grpcIdAsEndpointId] = found;\n                    found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));\n                }\n            } else if (node.type === \"graphql\") {\n                const found = this.api.graphqlOperations[node.graphqlOperationId];\n                if (found) {\n                    toRet.graphqlOperations[node.graphqlOperationId] = found;\n                    found.namespace?.forEach((subpackageId) => namespaces.add(subpackageId));\n                }\n            }\n        }\n\n        toRet.types = this.pruneTypes(toRet);\n        namespaces.forEach((subpackageId) => {\n            const subpackage = this.api.subpackages[subpackageId];\n            if (subpackage) {\n                toRet.subpackages[subpackageId] = subpackage;\n            }\n        });\n        authSchemes.forEach((authSchemeId) => {\n            const authScheme = this.api.auths[authSchemeId];\n            if (authScheme) {\n                toRet.auths[authSchemeId] = authScheme;\n            }\n        });\n\n        return toRet;\n    }\n\n    private pruneTypes(partiallyPrunedApi: Latest.ApiDefinition): Record<string, Latest.TypeDefinition> {\n        let typeIds = new Set<Latest.TypeId>();\n        partiallyPrunedApi.globalHeaders?.forEach((header) => {\n            ApiTypeIdVisitor.visitTypeShape(header.valueShape, (typeId) => typeIds.add(typeId));\n        });\n\n        for (const endpoint of Object.values(partiallyPrunedApi.endpoints)) {\n            ApiTypeIdVisitor.visitEndpointDefinition(endpoint, (typeId) => typeIds.add(typeId));\n        }\n\n        for (const websocket of Object.values(partiallyPrunedApi.websockets)) {\n            ApiTypeIdVisitor.visitWebSocketChannel(websocket, (typeId) => typeIds.add(typeId));\n        }\n\n        for (const webhook of Object.values(partiallyPrunedApi.webhooks)) {\n            ApiTypeIdVisitor.visitWebhookDefinition(webhook, (typeId) => typeIds.add(typeId));\n        }\n\n        for (const graphqlOperation of Object.values(partiallyPrunedApi.graphqlOperations)) {\n            ApiTypeIdVisitor.visitGraphQlOperation(graphqlOperation, (typeId) => typeIds.add(typeId));\n        }\n\n        typeIds = this.expandTypeIds(typeIds);\n\n        const types: Record<string, Latest.TypeDefinition> = {};\n\n        typeIds.forEach((typeId) => {\n            const type = this.api.types[typeId];\n            if (type != null) {\n                types[typeId] = type;\n            }\n        });\n\n        return types;\n    }\n\n    private expandTypeIds(typeIds: ReadonlySet<Latest.TypeId>): Set<Latest.TypeId> {\n        const visitedTypeIds = new Set<Latest.TypeId>();\n        const queue = Array.from(typeIds);\n\n        let loop = 0;\n        while (queue.length > 0) {\n            if (loop > LARGE_LOOP_TOLERANCE + typeIds.size) {\n                throw new Error(\"Infinite loop detected while expanding type references.\");\n            }\n\n            const typeId = queue.pop();\n            if (typeId != null && !visitedTypeIds.has(typeId)) {\n                visitedTypeIds.add(typeId);\n                const type = this.api.types[typeId];\n                if (type) {\n                    ApiTypeIdVisitor.visitTypeDefinition(type, (nestedTypeId) => {\n                        queue.push(nestedTypeId);\n                    });\n                }\n            }\n\n            loop++;\n        }\n\n        return visitedTypeIds;\n    }\n}\n\nexport function prune(api: Latest.ApiDefinition, ...nodes: PruningNodeType[]): Latest.ApiDefinition {\n    return ApiDefinitionPruner.from(api).prune(...nodes);\n}\n","import type { EndpointNode, GraphQlNode, GrpcNode, TypeId, WebhookNode, WebSocketNode } from \"../navigation\";\nimport type {\n    ApiDefinition,\n    AuthScheme,\n    AuthSchemeId,\n    EndpointDefinition,\n    EndpointId,\n    GraphQlOperation,\n    ObjectProperty,\n    TypeDefinition,\n    WebhookDefinition,\n    WebSocketChannel\n} from \"./latest\";\nimport { prune } from \"./prune\";\n\nexport type AuthSchemeWithKey = {\n    key: AuthSchemeId;\n    scheme: AuthScheme;\n};\n\nexport type AuthOptionEntry = {\n    key: string;\n    schemeIds: AuthSchemeId[];\n    schemes: AuthScheme[];\n    label: string;\n};\n\nexport type EndpointContext = {\n    node: EndpointNode;\n    endpoint: EndpointDefinition;\n    globalHeaders: ObjectProperty[];\n    auths: AuthScheme[];\n    authsWithKeys: AuthSchemeWithKey[];\n    authOptions: AuthScheme[][];\n    authOptionEntries: AuthOptionEntry[];\n    types: Record<TypeId, TypeDefinition>;\n};\n\nfunction getAuthSchemeLabel(scheme: AuthScheme): string {\n    if (scheme.type === \"basicAuth\") {\n        return \"Basic Auth\";\n    }\n    if (scheme.type === \"bearerAuth\") {\n        return \"Bearer\";\n    }\n    if (scheme.type === \"header\") {\n        return scheme.prefix || \"API Key\";\n    }\n    if (scheme.type === \"oAuth\") {\n        return \"OAuth\";\n    }\n    return \"Auth\";\n}\n\nfunction constructAuthOptions(\n    endpoint: EndpointDefinition,\n    authsMap: Record<AuthSchemeId, AuthScheme>\n): AuthScheme[][] {\n    if (endpoint.multiAuth != null && endpoint.multiAuth.length > 0) {\n        return endpoint.multiAuth\n            .map((multiAuthGroup) =>\n                multiAuthGroup.schemes\n                    .map((schemeId) => authsMap[schemeId])\n                    .filter((scheme): scheme is AuthScheme => scheme != null)\n            )\n            .filter((group) => group.length > 0);\n    }\n\n    if (endpoint.auth != null && endpoint.auth.length > 0) {\n        return endpoint.auth\n            .map((schemeId) => {\n                const scheme = authsMap[schemeId];\n                return scheme ? [scheme] : null;\n            })\n            .filter((group): group is AuthScheme[] => group != null);\n    }\n\n    return [];\n}\n\nfunction constructAuthOptionEntries(\n    endpoint: EndpointDefinition,\n    authsMap: Record<AuthSchemeId, AuthScheme>\n): AuthOptionEntry[] {\n    if (endpoint.multiAuth != null && endpoint.multiAuth.length > 0) {\n        return endpoint.multiAuth\n            .map((multiAuthGroup) => {\n                const schemeIds = multiAuthGroup.schemes;\n                const schemes = schemeIds\n                    .map((schemeId) => authsMap[schemeId])\n                    .filter((scheme): scheme is AuthScheme => scheme != null);\n\n                if (schemes.length === 0) {\n                    return null;\n                }\n\n                const sortedSchemeIds = [...schemeIds].sort();\n                const key = schemes.length === 1 ? String(schemeIds[0]) : `multi:${sortedSchemeIds.join(\"+\")}`;\n                const label = schemes.map(getAuthSchemeLabel).join(\" + \");\n\n                return {\n                    key,\n                    schemeIds,\n                    schemes,\n                    label\n                };\n            })\n            .filter((entry): entry is AuthOptionEntry => entry != null);\n    }\n\n    if (endpoint.auth != null && endpoint.auth.length > 0) {\n        return endpoint.auth\n            .map((schemeId) => {\n                const scheme = authsMap[schemeId];\n                if (!scheme) {\n                    return null;\n                }\n                return {\n                    key: String(schemeId),\n                    schemeIds: [schemeId],\n                    schemes: [scheme],\n                    label: getAuthSchemeLabel(scheme)\n                };\n            })\n            .filter((entry): entry is AuthOptionEntry => entry != null);\n    }\n\n    return [];\n}\n\nexport function createEndpointContext(\n    node: EndpointNode | undefined,\n    apiDefinition: ApiDefinition | undefined\n): EndpointContext | undefined {\n    if (!node) {\n        console.warn(\"[createEndpointContext] node is undefined\");\n        return undefined;\n    }\n    if (apiDefinition == null) {\n        console.warn(\n            `[createEndpointContext] apiDefinition is undefined for node id=${node.id}, endpointId=${node.endpointId}`\n        );\n        return undefined;\n    }\n    const api = prune(apiDefinition, node);\n    const endpoint = api.endpoints[node.endpointId];\n    if (!endpoint) {\n        const availableEndpointIds = Object.keys(api.endpoints);\n        console.warn(\n            `[createEndpointContext] endpoint not found after pruning. endpointId=${node.endpointId}, apiDefinitionId=${node.apiDefinitionId}, availableEndpointIds=[${availableEndpointIds.join(\", \")}]`\n        );\n        return undefined;\n    }\n    return {\n        node,\n        endpoint,\n        auths: endpoint.auth?.map((id) => api.auths[id]).filter((auth): auth is AuthScheme => auth != null) ?? [],\n        authsWithKeys:\n            endpoint.auth\n                ?.map((id) => {\n                    const scheme = api.auths[id];\n                    return scheme ? { key: id, scheme } : null;\n                })\n                .filter((item): item is AuthSchemeWithKey => item != null) ?? [],\n        authOptions: constructAuthOptions(endpoint, api.auths),\n        authOptionEntries: constructAuthOptionEntries(endpoint, api.auths),\n        globalHeaders: api.globalHeaders ?? [],\n        types: api.types\n    };\n}\n\nexport type WebSocketContext = {\n    node: WebSocketNode;\n    channel: WebSocketChannel;\n    globalHeaders: ObjectProperty[];\n    auths: AuthScheme[];\n    authsWithKeys: AuthSchemeWithKey[];\n    authOptions: AuthScheme[][];\n    authOptionEntries: AuthOptionEntry[];\n    types: Record<TypeId, TypeDefinition>;\n};\n\nfunction constructWebSocketAuthOptions(\n    channel: WebSocketChannel,\n    authsMap: Record<AuthSchemeId, AuthScheme>\n): AuthScheme[][] {\n    if (channel.auth != null && channel.auth.length > 0) {\n        return channel.auth\n            .map((schemeId) => {\n                const scheme = authsMap[schemeId];\n                return scheme ? [scheme] : null;\n            })\n            .filter((group): group is AuthScheme[] => group != null);\n    }\n\n    return [];\n}\n\nfunction constructWebSocketAuthOptionEntries(\n    channel: WebSocketChannel,\n    authsMap: Record<AuthSchemeId, AuthScheme>\n): AuthOptionEntry[] {\n    if (channel.auth != null && channel.auth.length > 0) {\n        return channel.auth\n            .map((schemeId) => {\n                const scheme = authsMap[schemeId];\n                if (!scheme) {\n                    return null;\n                }\n                return {\n                    key: String(schemeId),\n                    schemeIds: [schemeId],\n                    schemes: [scheme],\n                    label: getAuthSchemeLabel(scheme)\n                };\n            })\n            .filter((entry): entry is AuthOptionEntry => entry != null);\n    }\n\n    return [];\n}\n\nexport function createWebSocketContext(\n    node: WebSocketNode | undefined,\n    apiDefinition: ApiDefinition | undefined\n): WebSocketContext | undefined {\n    if (!node) {\n        console.warn(\"[createWebSocketContext] node is undefined\");\n        return undefined;\n    }\n    if (apiDefinition == null) {\n        console.warn(\n            `[createWebSocketContext] apiDefinition is undefined for node id=${node.id}, webSocketId=${node.webSocketId}`\n        );\n        return undefined;\n    }\n    const api = prune(apiDefinition, node);\n    const channel = api.websockets[node.webSocketId];\n    if (!channel) {\n        const availableWebSocketIds = Object.keys(api.websockets);\n        console.warn(\n            `[createWebSocketContext] webSocket channel not found after pruning. webSocketId=${node.webSocketId}, apiDefinitionId=${node.apiDefinitionId}, availableWebSocketIds=[${availableWebSocketIds.join(\", \")}]`\n        );\n        return undefined;\n    }\n    return {\n        node,\n        channel,\n        auths: channel.auth?.map((id) => api.auths[id]).filter((auth): auth is AuthScheme => auth != null) ?? [],\n        authsWithKeys:\n            channel.auth\n                ?.map((id) => {\n                    const scheme = api.auths[id];\n                    return scheme ? { key: id, scheme } : null;\n                })\n                .filter((item): item is AuthSchemeWithKey => item != null) ?? [],\n        authOptions: constructWebSocketAuthOptions(channel, api.auths),\n        authOptionEntries: constructWebSocketAuthOptionEntries(channel, api.auths),\n        globalHeaders: api.globalHeaders ?? [],\n        types: api.types\n    };\n}\n\nexport type WebhookContext = {\n    node: WebhookNode;\n    webhook: WebhookDefinition;\n    types: Record<TypeId, TypeDefinition>;\n};\n\nexport function createWebhookContext(\n    node: WebhookNode | undefined,\n    apiDefinition: ApiDefinition | undefined\n): WebhookContext | undefined {\n    if (!node) {\n        console.warn(\"[createWebhookContext] node is undefined\");\n        return undefined;\n    }\n    if (apiDefinition == null) {\n        console.warn(\n            `[createWebhookContext] apiDefinition is undefined for node id=${node.id}, webhookId=${node.webhookId}`\n        );\n        return undefined;\n    }\n    const api = prune(apiDefinition, node);\n    const webhook = api.webhooks[node.webhookId];\n    if (!webhook) {\n        const availableWebhookIds = Object.keys(api.webhooks);\n        console.warn(\n            `[createWebhookContext] webhook not found after pruning. webhookId=${node.webhookId}, apiDefinitionId=${node.apiDefinitionId}, availableWebhookIds=[${availableWebhookIds.join(\", \")}]`\n        );\n        return undefined;\n    }\n    return {\n        node,\n        webhook,\n        types: api.types\n    };\n}\n\nexport type GrpcContext = {\n    node: GrpcNode;\n    grpc: EndpointDefinition;\n    types: Record<TypeId, TypeDefinition>;\n};\n\nexport function createGrpcContext(\n    node: GrpcNode | undefined,\n    apiDefinition: ApiDefinition | undefined\n): GrpcContext | undefined {\n    if (!node) {\n        console.warn(\"[createGrpcContext] node is undefined\");\n        return undefined;\n    }\n    if (apiDefinition == null) {\n        console.warn(`[createGrpcContext] apiDefinition is undefined for node id=${node.id}, grpcId=${node.grpcId}`);\n        return undefined;\n    }\n    const api = prune(apiDefinition, node);\n    const grpc = api.endpoints[node.grpcId as unknown as EndpointId];\n    if (!grpc) {\n        const availableEndpointIds = Object.keys(api.endpoints);\n        console.warn(\n            `[createGrpcContext] grpc endpoint not found after pruning. grpcId=${node.grpcId}, apiDefinitionId=${node.apiDefinitionId}, availableEndpointIds=[${availableEndpointIds.join(\", \")}]`\n        );\n        return undefined;\n    }\n    return {\n        node,\n        grpc,\n        types: api.types\n    };\n}\n\nexport type GraphqlContext = {\n    node: GraphQlNode;\n    operation: GraphQlOperation;\n    types: Record<TypeId, TypeDefinition>;\n};\n\nexport function createGraphqlContext(\n    node: GraphQlNode | undefined,\n    apiDefinition: ApiDefinition | undefined\n): GraphqlContext | undefined {\n    if (!node) {\n        console.warn(\"[createGraphqlContext] node is undefined\");\n        return undefined;\n    }\n    if (apiDefinition == null) {\n        console.warn(\n            `[createGraphqlContext] apiDefinition is undefined for node id=${node.id}, graphqlOperationId=${node.graphqlOperationId}`\n        );\n        return undefined;\n    }\n    const api = prune(apiDefinition, node);\n    const operation = api.graphqlOperations[node.graphqlOperationId];\n    if (!operation) {\n        const availableOperationIds = Object.keys(api.graphqlOperations);\n        console.warn(\n            `[createGraphqlContext] graphql operation not found after pruning. graphqlOperationId=${node.graphqlOperationId}, apiDefinitionId=${node.apiDefinitionId}, availableOperationIds=[${availableOperationIds.join(\", \")}]`\n        );\n        return undefined;\n    }\n    return {\n        node,\n        operation,\n        types: api.types\n    };\n}\n","import type { EndpointPathPart } from \"../orpc-client/api/shared.js\";\nimport { EndpointPathLiteral } from \"../orpc-client/shared.js\";\n\n/**\n * Commonly used in Express.js and how we render paths in the UI.\n */\nexport function toColonEndpointPathLiteral(pathParts: EndpointPathPart[]): EndpointPathLiteral {\n    return EndpointPathLiteral(\n        pathParts.map((part) => (part.type === \"literal\" ? part.value : `:${part.value}`)).join(\"\")\n    );\n}\n\n/**\n * Used in OpenAPI specification and Fern Definition. This is how we store EndpointPathLiteral in the snippet resolver.\n */\nexport function toCurlyBraceEndpointPathLiteral(pathParts: EndpointPathPart[]): EndpointPathLiteral {\n    return EndpointPathLiteral(\n        pathParts.map((part) => (part.type === \"literal\" ? part.value : `{${part.value}}`)).join(\"\")\n    );\n}\n","import * as Latest from \"./latest\";\n\n/**\n * This utility is designed to join multiple API definitions into a single API definition.\n * After pruning the API definitions server-side to only include the desired endpoints, websockets, and webhooks,\n * this utility can be used to join the pruned API definitions back together on the client-side.\n *\n * @param apis list of API definitions to join (must have the same ID)\n * @returns a new API definition that is the result of joining the input API definitions\n */\nexport function joiner(\n    force = false\n): (first: Latest.ApiDefinition, ...apis: Latest.ApiDefinition[]) => Latest.ApiDefinition {\n    return (first, ...apis) => {\n        const joined: Latest.ApiDefinition = {\n            id: first.id,\n            apiName: first.apiName,\n            endpoints: { ...first.endpoints },\n            websockets: { ...first.websockets },\n            webhooks: { ...first.webhooks },\n            graphqlOperations: { ...first.graphqlOperations },\n            types: { ...first.types },\n            subpackages: { ...first.subpackages },\n            auths: { ...first.auths },\n            globalHeaders: first.globalHeaders ? [...first.globalHeaders] : undefined,\n            snippetsConfiguration: first.snippetsConfiguration ? { ...first.snippetsConfiguration } : undefined\n        };\n\n        let isJoined = false;\n        for (const api of apis) {\n            if (api.id !== joined.id) {\n                throw new Error(\"Cannot join API definitions with different IDs\");\n            }\n\n            for (const [endpointId, endpoint] of Object.entries(api.endpoints)) {\n                if (!isJoined && !first.endpoints[Latest.EndpointId(endpointId)]) {\n                    isJoined = true;\n                }\n                joined.endpoints[Latest.EndpointId(endpointId)] = endpoint;\n            }\n\n            for (const [webSocketId, webSocket] of Object.entries(api.websockets)) {\n                if (!isJoined && !first.websockets[Latest.WebSocketId(webSocketId)]) {\n                    isJoined = true;\n                }\n                joined.websockets[Latest.WebSocketId(webSocketId)] = webSocket;\n            }\n\n            for (const [webhookId, webhook] of Object.entries(api.webhooks)) {\n                if (!isJoined && !first.webhooks[Latest.WebhookId(webhookId)]) {\n                    isJoined = true;\n                }\n                joined.webhooks[Latest.WebhookId(webhookId)] = webhook;\n            }\n\n            for (const [typeId, type] of Object.entries(api.types)) {\n                if (!isJoined && !first.types[Latest.TypeId(typeId)]) {\n                    isJoined = true;\n                }\n                joined.types[Latest.TypeId(typeId)] = type;\n            }\n\n            for (const [subpackageId, subpackage] of Object.entries(api.subpackages)) {\n                if (!isJoined && !first.subpackages[Latest.SubpackageId(subpackageId)]) {\n                    isJoined = true;\n                }\n                joined.subpackages[Latest.SubpackageId(subpackageId)] = subpackage;\n            }\n\n            for (const [authId, auth] of Object.entries(api.auths)) {\n                if (!isJoined && !first.auths[Latest.AuthSchemeId(authId)]) {\n                    isJoined = true;\n                }\n                joined.auths[Latest.AuthSchemeId(authId)] = auth;\n            }\n\n            const globalHeaders = (joined.globalHeaders ??= []);\n            api.globalHeaders?.forEach((header) => {\n                if (!globalHeaders.find((h) => h.key === header.key)) {\n                    isJoined = true;\n                    globalHeaders.push(header);\n                }\n            });\n        }\n\n        if (!isJoined && !force) {\n            return first;\n        }\n\n        return joined;\n    };\n}\n","export function cleanLanguage(language: string): string {\n    language = language.toLowerCase().trim();\n    if ([\"node\", \"nodejs\", \"js\", \"javascript\"].includes(language)) {\n        return \"javascript\";\n    }\n\n    if ([\"py\", \"python\"].includes(language)) {\n        return \"python\";\n    }\n\n    if ([\"ts\", \"typescript\", \"ts-node\"].includes(language)) {\n        return \"typescript\";\n    }\n\n    if ([\"go\", \"golang\"].includes(language)) {\n        return \"go\";\n    }\n\n    return language;\n}\n","import { isNonNullish } from \"@fern-api/ui-core-utils\";\nimport titleCase from \"@fern-api/ui-core-utils/titleCase\";\nimport visitDiscriminatedUnion from \"@fern-api/ui-core-utils/visitDiscriminatedUnion\";\nimport { mapValues } from \"es-toolkit/object\";\n\nimport type { APIV1Read } from \"../../client\";\nimport { ROOT_PACKAGE_ID } from \"../../navigation/consts\";\nimport { SupportedLanguage } from \"../../orpc-client/shared.js\";\nimport { LOOP_TOLERANCE } from \"../const\";\nimport { cleanLanguage } from \"../lang\";\nimport * as V2 from \"../latest\";\nimport { convertToCurl } from \"../snippets/curl\";\nimport { toSnippetHttpRequest } from \"../snippets/SnippetHttpRequest\";\nimport { sortKeysByShape } from \"../sort-keys\";\nimport { getMessageForStatus } from \"../status-message\";\n\nfunction isSubpackage(package_: APIV1Read.ApiDefinitionPackage): package_ is APIV1Read.ApiDefinitionSubpackage {\n    return typeof (package_ as APIV1Read.ApiDefinitionSubpackage).subpackageId === \"string\";\n}\n\nconst AUTH_SCHEME_ID = V2.AuthSchemeId(\"default\");\n\n/**\n * Shared default constants used as fallback return values when migration fails or input is null.\n */\nconst DEFAULT_TYPE_REFERENCE: V2.TypeReference = { type: \"unknown\", displayName: undefined };\nconst DEFAULT_TYPE_SHAPE: V2.TypeShape = { type: \"alias\", value: DEFAULT_TYPE_REFERENCE };\nconst DEFAULT_WEBHOOK_PAYLOAD_SHAPE: V2.WebhookPayloadShape = { type: \"alias\", value: DEFAULT_TYPE_REFERENCE };\nconst DEFAULT_WEBHOOK_PAYLOAD: V2.WebhookPayload = { description: undefined, shape: DEFAULT_WEBHOOK_PAYLOAD_SHAPE };\nconst DEFAULT_GRAPHQL_ARGUMENT: V2.GraphQlArgument = {\n    name: \"\",\n    description: undefined,\n    availability: undefined,\n    type: DEFAULT_TYPE_SHAPE,\n    defaultValue: undefined\n};\n\n/**\n * Wraps a function with a try-catch that returns a default value on error.\n */\nfunction withDefault<Args extends unknown[], T>(\n    fn: (...args: Args) => T,\n    defaultValue: T,\n    label: string\n): (...args: Args) => T {\n    return (...args: Args): T => {\n        try {\n            return fn(...args);\n        } catch (e) {\n            const argsSummary = args.map((arg) => {\n                try {\n                    const str = JSON.stringify(arg);\n                    return str != null && str.length > 200 ? `${str.slice(0, 200)}...` : str;\n                } catch {\n                    return String(arg);\n                }\n            });\n            console.error(`Error in ${label}:`, e, \"args:\", argsSummary);\n            return defaultValue;\n        }\n    };\n}\n\n/**\n * Wraps a void callback in a try-catch that logs errors.\n */\nfunction trySafe(fn: () => void, label: string): void {\n    try {\n        fn();\n    } catch (e) {\n        console.error(`Error in ${label}:`, e);\n    }\n}\n\nexport class ApiDefinitionV1ToLatest {\n    static from(v1: APIV1Read.ApiDefinition): ApiDefinitionV1ToLatest {\n        return new ApiDefinitionV1ToLatest(v1);\n    }\n\n    private auth: APIV1Read.ApiAuth | undefined;\n    private constructor(private readonly v1: APIV1Read.ApiDefinition) {\n        this.auth = v1.auth ?? undefined;\n    }\n\n    static createEndpointId(\n        endpoint: APIV1Read.EndpointDefinition,\n        subpackageId: string = ROOT_PACKAGE_ID\n    ): V2.EndpointId {\n        return V2.EndpointId(endpoint.originalEndpointId ?? `${subpackageId}.${endpoint.id}`);\n    }\n\n    static createWebSocketId(\n        webSocket: APIV1Read.WebSocketChannel,\n        subpackageId: string = ROOT_PACKAGE_ID\n    ): V2.WebSocketId {\n        return V2.WebSocketId(`${subpackageId}.${webSocket.id}`);\n    }\n\n    static createWebhookId(webhook: APIV1Read.WebhookDefinition, subpackageId: string = ROOT_PACKAGE_ID): V2.WebhookId {\n        return V2.WebhookId(`${subpackageId}.${webhook.id}`);\n    }\n\n    static createGrpcEndpointId(\n        grpc: APIV1Read.EndpointDefinition,\n        subpackageId: string = ROOT_PACKAGE_ID\n    ): V2.EndpointId {\n        return V2.EndpointId(`${subpackageId}.${grpc.id}`);\n    }\n\n    private endpoints: Record<V2.EndpointId, V2.EndpointDefinition> = {};\n    private websockets: Record<V2.WebSocketId, V2.WebSocketChannel> = {};\n    private webhooks: Record<V2.WebhookId, V2.WebhookDefinition> = {};\n    private graphqlOperations: Record<V2.GraphQlOperationId, V2.GraphQlOperation> = {};\n    private subpackages: Record<V2.SubpackageId, V2.SubpackageMetadata> = {};\n    private types: Record<string, V2.TypeDefinition> = {};\n    public migrate = (): V2.ApiDefinition => {\n        Object.entries(this.v1.types)?.forEach(([id, type]) =>\n            trySafe(() => {\n                if (type == null) {\n                    return;\n                }\n                this.types[V2.TypeId(id)] = {\n                    name: type?.name,\n                    description: type?.description,\n                    availability: type?.availability,\n                    shape: this.migrateTypeShape(type?.shape),\n                    displayName: type?.displayName\n                };\n            }, `migrate type ${id}`)\n        );\n\n        [this.v1.rootPackage, ...Object.values(this.v1.subpackages)].forEach((pkg) =>\n            trySafe(() => {\n                if (pkg == null) {\n                    return;\n                }\n                const [subpackageId, namespace] = this.collectNamespace(pkg, this.v1.subpackages);\n                pkg?.endpoints?.forEach((endpoint) =>\n                    trySafe(() => {\n                        const id =\n                            endpoint?.protocol?.type === \"grpc\"\n                                ? ApiDefinitionV1ToLatest.createGrpcEndpointId(endpoint, subpackageId)\n                                : ApiDefinitionV1ToLatest.createEndpointId(endpoint, subpackageId);\n                        this.endpoints[id] = this.migrateEndpoint(id, endpoint, namespace);\n                    }, `migrate endpoint ${endpoint?.id}`)\n                );\n                pkg?.websockets?.forEach((webSocket) =>\n                    trySafe(() => {\n                        const id = ApiDefinitionV1ToLatest.createWebSocketId(webSocket, subpackageId);\n                        this.websockets[id] = this.migrateWebSocket(id, webSocket, namespace);\n                    }, `migrate webSocket ${webSocket?.id}`)\n                );\n                pkg?.webhooks?.forEach((webhook) =>\n                    trySafe(() => {\n                        const id = ApiDefinitionV1ToLatest.createWebhookId(webhook, subpackageId);\n                        this.webhooks[id] = this.migrateWebhook(id, webhook, namespace);\n                    }, `migrate webhook ${webhook?.id}`)\n                );\n                pkg?.graphqlOperations?.forEach((graphqlOp) =>\n                    trySafe(() => {\n                        const id = graphqlOp?.id;\n                        this.graphqlOperations[id] = this.migrateGraphQlOperation(graphqlOp, namespace);\n                    }, `migrate graphqlOp ${graphqlOp?.id}`)\n                );\n            }, \"migrate package\")\n        );\n\n        Object.values(this.v1.subpackages)?.forEach((subpackage) =>\n            trySafe(() => {\n                if (subpackage == null) {\n                    return;\n                }\n                this.subpackages[subpackage?.subpackageId] = this.migrateSubpackage(subpackage);\n            }, `migrate subpackage ${subpackage?.subpackageId}`)\n        );\n\n        return {\n            id: this.v1.id,\n            apiName: this.v1.apiName,\n            endpoints: this.endpoints,\n            websockets: this.websockets,\n            webhooks: this.webhooks,\n            graphqlOperations: this.graphqlOperations,\n            types: this.types,\n            subpackages: this.subpackages,\n            auths: this.v1.authSchemes ? this.v1.authSchemes : this.v1.auth ? { [AUTH_SCHEME_ID]: this.v1.auth } : {},\n            globalHeaders: this.migrateParameters(this.v1.globalHeaders ?? undefined),\n            snippetsConfiguration: this.v1.snippetsConfiguration\n        };\n    };\n\n    collectNamespace = (\n        pkg: APIV1Read.ApiDefinitionPackage,\n        subpackages: Record<string, APIV1Read.ApiDefinitionSubpackage>\n    ): [string, V2.SubpackageId[]] => {\n        if (!pkg || !isSubpackage(pkg)) {\n            return [ROOT_PACKAGE_ID, []];\n        }\n        const namespace: V2.SubpackageId[] = [pkg.subpackageId];\n\n        let subpackage = pkg;\n        let loop = 0;\n        while (subpackage.parent != null) {\n            if (loop > LOOP_TOLERANCE) {\n                throw new Error(\"Circular subpackage reference detected\");\n            }\n\n            const next = subpackages[subpackage.parent];\n            if (next == null) {\n                break;\n            }\n            namespace.unshift(subpackage.parent);\n            subpackage = next;\n            loop++;\n        }\n\n        return [pkg.subpackageId, namespace];\n    };\n\n    migrateEndpoint = (\n        id: V2.EndpointId,\n        v1: APIV1Read.EndpointDefinition,\n        namespace: V2.SubpackageId[]\n    ): V2.EndpointDefinition => {\n        const toRet: V2.EndpointDefinition = {\n            id,\n            namespace,\n            displayName: v1?.name,\n            operationId: v1?.urlSlug?.split(\"/\")?.pop(),\n            description: v1?.description,\n            availability: v1?.availability,\n            method: v1?.method,\n            path: v1?.path?.parts?.filter((part) => part?.value !== \"\") ?? [],\n            auth: v1?.authV2 ? v1.authV2 : v1?.authed ? [AUTH_SCHEME_ID] : undefined,\n            multiAuth: v1?.multiAuth,\n            defaultEnvironment: v1?.defaultEnvironment,\n            environments: v1?.environments,\n            pathParameters: this.migratePathOrQueryParameters(v1?.path?.pathParameters),\n            queryParameters: this.migratePathOrQueryParameters(v1?.queryParameters),\n            requestHeaders: this.migrateParameters(v1?.headers),\n            responseHeaders: this.migrateParameters(v1?.responseHeaders ?? undefined),\n            requests: (() => {\n                const requests = (v1?.requestsV2?.requests ?? undefined)\n                    ?.map((request) => this.migrateHttpRequest(request))\n                    ?.filter(isNonNullish);\n\n                if (requests != null && requests.length > 0) {\n                    return requests;\n                }\n\n                return [this.migrateHttpRequest(v1?.request ?? undefined)].filter(isNonNullish);\n            })(),\n            responses: (() => {\n                const responses = (v1?.responsesV2?.responses ?? undefined)\n                    ?.map((response) => this.migrateHttpResponse(response))\n                    ?.filter(isNonNullish);\n\n                if (responses != null && responses.length > 0) {\n                    return responses;\n                }\n\n                return [this.migrateHttpResponse(v1?.response ?? undefined)].filter(isNonNullish);\n            })(),\n            errors: this.migrateHttpErrors(v1?.errorsV2 ?? undefined),\n            examples: undefined,\n            snippetTemplates: (v1 as Record<string, unknown>)?.snippetTemplates as unknown,\n            protocol: v1?.protocol,\n            includeInApiExplorer: v1?.includeInApiExplorer ?? true\n        };\n\n        toRet.examples = this.migrateHttpExamples(v1?.examples, toRet);\n\n        return toRet;\n    };\n\n    migrateWebSocket = (\n        id: V2.WebSocketId,\n        v1: APIV1Read.WebSocketChannel,\n        namespace: V2.SubpackageId[]\n    ): V2.WebSocketChannel => {\n        const messages = this.migrateChannelMessages(v1?.messages);\n        const auth = v1?.auth\n            ? this.v1.authSchemes && Object.keys(this.v1.authSchemes).length > 0\n                ? Object.keys(this.v1.authSchemes).map((k) => V2.AuthSchemeId(k))\n                : [AUTH_SCHEME_ID]\n            : undefined;\n        return {\n            id,\n            namespace,\n            displayName: v1?.name,\n            operationId: v1?.urlSlug?.split(\"/\")?.pop(),\n            description: v1?.description,\n            availability: v1?.availability,\n            path: v1?.path?.parts?.filter((part) => part?.value !== \"\") ?? [],\n            messages,\n            auth,\n            defaultEnvironment: v1?.defaultEnvironment,\n            environments: v1?.environments,\n            pathParameters: this.migratePathOrQueryParameters(v1?.path?.pathParameters),\n            queryParameters: this.migratePathOrQueryParameters(v1?.queryParameters),\n            requestHeaders: this.migrateParameters(v1?.headers),\n            examples: this.migrateChannelExamples(v1?.examples, messages)\n        };\n    };\n\n    migrateWebhook = (\n        id: V2.WebhookId,\n        v1: APIV1Read.WebhookDefinition,\n        namespace: V2.SubpackageId[]\n    ): V2.WebhookDefinition => {\n        const payload = this.migrateWebhookPayload(v1?.payload);\n        return {\n            id,\n            namespace,\n            displayName: v1?.name,\n            operationId: v1?.urlSlug?.split(\"/\")?.pop(),\n            description: v1?.description,\n            availability: v1?.availability,\n            method: v1?.method,\n            path: v1?.path,\n            headers: this.migrateParameters(v1?.headers),\n            payloads: [payload],\n            responses: v1?.responses?.map(this.migrateHttpResponse)?.filter(isNonNullish),\n            examples:\n                v1?.examples?.map((example) => ({\n                    ...example,\n                    payload: sortKeysByShape(example?.payload, payload?.shape, this.types)\n                })) ?? []\n        };\n    };\n\n    migrateSubpackage = (subpackage: APIV1Read.ApiDefinitionSubpackage): V2.SubpackageMetadata => {\n        return {\n            id: subpackage?.subpackageId,\n            name: subpackage?.name,\n            displayName: subpackage?.displayName\n        };\n    };\n\n    migrateParameters = (\n        v1: APIV1Read.PathParameter[] | APIV1Read.QueryParameter[] | APIV1Read.Header[] | undefined\n    ): V2.ObjectProperty[] | undefined => {\n        if (v1 == null || v1.length === 0) {\n            return undefined;\n        }\n        return v1\n            .filter((parameter) => parameter?.type != null)\n            .map((parameter) => ({\n                key: V2.PropertyKey(parameter?.key),\n                valueShape: {\n                    type: \"alias\",\n                    value: this.migrateTypeReference(parameter?.type)\n                },\n                propertyAccess: undefined,\n                description: parameter?.description ?? undefined,\n                availability: parameter?.availability ?? undefined\n            }));\n    };\n\n    migratePathOrQueryParameters = (\n        v1: APIV1Read.PathParameter[] | APIV1Read.QueryParameter[] | undefined\n    ): V2.ParameterProperty[] | undefined => {\n        if (v1 == null || v1.length === 0) {\n            return undefined;\n        }\n        return v1\n            .filter((parameter) => parameter?.type != null)\n            .map((parameter) => ({\n                key: V2.PropertyKey(parameter?.key),\n                valueShape: {\n                    type: \"alias\",\n                    value: this.migrateTypeReference(parameter?.type)\n                },\n                propertyAccess: undefined,\n                description: parameter?.description ?? undefined,\n                availability: parameter?.availability ?? undefined,\n                explode: parameter?.explode ?? undefined\n            }));\n    };\n\n    migrateTypeReference = withDefault(\n        (typeRef: APIV1Read.TypeReference): V2.TypeReference => {\n            if (typeRef == null) {\n                return DEFAULT_TYPE_REFERENCE;\n            }\n            return visitDiscriminatedUnion(typeRef)._visit<V2.TypeReference>({\n                map: (value) => ({\n                    type: \"map\",\n                    keyShape: {\n                        type: \"alias\",\n                        value: this.migrateTypeReference(value?.keyType)\n                    },\n                    valueShape: {\n                        type: \"alias\",\n                        value: this.migrateTypeReference(value?.valueType)\n                    },\n                    minProperties: value?.minProperties ?? undefined,\n                    maxProperties: value?.maxProperties ?? undefined\n                }),\n                id: (value) => ({\n                    type: \"id\",\n                    id: value?.value,\n                    default: value?.default ?? undefined\n                }),\n                primitive: (value) => value,\n                nullable: (value) => ({\n                    type: \"nullable\",\n                    shape: {\n                        type: \"alias\",\n                        value: this.migrateTypeReference(value?.itemType)\n                    }\n                }),\n                optional: (value) => ({\n                    type: \"optional\",\n                    shape: {\n                        type: \"alias\",\n                        value: this.migrateTypeReference(value?.itemType)\n                    },\n                    default: value?.defaultValue\n                }),\n                list: (value) => ({\n                    type: \"list\",\n                    itemShape: {\n                        type: \"alias\",\n                        value: this.migrateTypeReference(value?.itemType)\n                    },\n                    minItems: value?.minItems ?? undefined,\n                    maxItems: value?.maxItems ?? undefined\n                }),\n                set: (value) => ({\n                    type: \"set\",\n                    itemShape: {\n                        type: \"alias\",\n                        value: this.migrateTypeReference(value?.itemType)\n                    },\n                    minItems: value?.minItems ?? undefined,\n                    maxItems: value?.maxItems ?? undefined\n                }),\n                literal: (value) => value,\n                unknown: () => ({\n                    type: \"unknown\",\n                    displayName: undefined\n                })\n            });\n        },\n        DEFAULT_TYPE_REFERENCE,\n        \"migrateTypeReference\"\n    );\n\n    migrateTypeShape = withDefault(\n        (shape: APIV1Read.TypeShape): V2.TypeShape => {\n            if (shape == null) {\n                return DEFAULT_TYPE_SHAPE;\n            }\n            return visitDiscriminatedUnion(shape)._visit<V2.TypeShape>({\n                object: (value) => ({\n                    type: \"object\",\n                    extends: value?.extends,\n                    properties: this.migrateObjectProperties(value?.properties ?? []),\n                    extraProperties:\n                        value?.extraProperties != null ? this.migrateTypeReference(value.extraProperties) : undefined\n                }),\n                alias: (value) => ({\n                    type: \"alias\",\n                    value: this.migrateTypeReference(value?.value)\n                }),\n                enum: (value) => value,\n                undiscriminatedUnion: (value) => ({\n                    type: \"undiscriminatedUnion\",\n                    variants: (value?.variants ?? [])\n                        .filter((variant) => variant?.type != null)\n                        .map((variant) => ({\n                            displayName: variant?.displayName ?? undefined,\n                            shape: {\n                                type: \"alias\",\n                                value: this.migrateTypeReference(variant?.type)\n                            },\n                            description: variant?.description ?? undefined,\n                            availability: variant?.availability ?? undefined\n                        }))\n                }),\n                discriminatedUnion: (value) => ({\n                    type: \"discriminatedUnion\",\n                    discriminant: V2.PropertyKey(value?.discriminant),\n                    variants: (value?.variants ?? []).map((variant) => ({\n                        discriminantValue: variant?.discriminantValue,\n                        displayName: variant?.displayName ?? undefined,\n                        description: variant?.description ?? undefined,\n                        availability: variant?.availability ?? undefined,\n                        extends: variant?.additionalProperties?.extends,\n                        properties: this.migrateObjectProperties(variant?.additionalProperties?.properties ?? []),\n                        extraProperties: undefined\n                    }))\n                })\n            });\n        },\n        DEFAULT_TYPE_SHAPE,\n        \"migrateTypeShape\"\n    );\n\n    migrateObjectProperties = withDefault(\n        (properties: APIV1Read.ObjectProperty[]): V2.ObjectProperty[] => {\n            if (properties == null) {\n                return [];\n            }\n            return properties\n                .filter((value) => value?.valueType != null)\n                .map((value) => ({\n                    key: V2.PropertyKey(value?.key),\n                    valueShape: {\n                        type: \"alias\",\n                        value: this.migrateTypeReference(value?.valueType)\n                    },\n                    propertyAccess: value?.propertyAccess ?? undefined,\n                    description: value?.description ?? undefined,\n                    availability: value?.availability ?? undefined\n                }));\n        },\n        [] as V2.ObjectProperty[],\n        \"migrateObjectProperties\"\n    );\n\n    migrateJsonShape = withDefault(\n        (shape: APIV1Read.JsonBodyShape): V2.TypeShape => {\n            if (shape == null) {\n                return DEFAULT_TYPE_SHAPE;\n            }\n            return visitDiscriminatedUnion(shape)._visit<V2.TypeShape>({\n                object: this.migrateTypeShape,\n                reference: (ref) => ({\n                    type: \"alias\",\n                    value: this.migrateTypeReference(ref?.value)\n                })\n            });\n        },\n        DEFAULT_TYPE_SHAPE,\n        \"migrateJsonShape\"\n    );\n\n    migrateWebhookPayloadShape = withDefault(\n        (shape: APIV1Read.WebhookPayloadShape): V2.WebhookPayloadShape => {\n            if (shape == null) {\n                return DEFAULT_WEBHOOK_PAYLOAD_SHAPE;\n            }\n            return visitDiscriminatedUnion(shape)._visit<V2.WebhookPayloadShape>({\n                object: (obj) => ({\n                    type: \"object\",\n                    extends: obj?.extends,\n                    properties: this.migrateObjectProperties(obj?.properties ?? []),\n                    extraProperties: undefined\n                }),\n                reference: (ref) => ({\n                    type: \"alias\",\n                    value: this.migrateTypeReference(ref?.value)\n                }),\n                formData: (formData) => ({\n                    type: \"formData\",\n                    description: formData?.description,\n                    availability: formData?.availability,\n                    fields: this.migrateFormDataProperties(formData?.properties ?? [])\n                })\n            });\n        },\n        DEFAULT_WEBHOOK_PAYLOAD_SHAPE,\n        \"migrateWebhookPayloadShape\"\n    );\n\n    migrateWebhookPayload = withDefault(\n        (payload: APIV1Read.WebhookPayload): V2.WebhookPayload => {\n            if (payload == null) {\n                return DEFAULT_WEBHOOK_PAYLOAD;\n            }\n            return {\n                description: payload?.description,\n                shape: this.migrateWebhookPayloadShape(payload?.type)\n            };\n        },\n        DEFAULT_WEBHOOK_PAYLOAD,\n        \"migrateWebhookPayload\"\n    );\n\n    migrateChannelExamples = withDefault(\n        (\n            examples: APIV1Read.ExampleWebSocketSession[],\n            messages: V2.WebSocketMessage[]\n        ): V2.ExampleWebSocketSession[] | undefined => {\n            if (examples == null || examples.length === 0) {\n                return undefined;\n            }\n\n            return examples.map((example) => ({\n                description: example?.description,\n                path: example?.path,\n                name: example?.name,\n                pathParameters: example?.pathParameters,\n                queryParameters: example?.queryParameters,\n                requestHeaders: example?.headers,\n                messages: (example?.messages ?? []).map((example) => ({\n                    ...example,\n                    body: sortKeysByShape(\n                        example.body,\n                        messages.find((message) => message.type === example.type)?.body,\n                        this.types\n                    )\n                }))\n            }));\n        },\n        undefined,\n        \"migrateChannelExamples\"\n    );\n\n    migrateChannelMessages = withDefault(\n        (messages: APIV1Read.WebSocketMessage[]): V2.WebSocketMessage[] => {\n            if (messages == null) {\n                return [];\n            }\n            return messages.map((message) => ({\n                type: message?.type,\n                displayName: message?.displayName,\n                origin: message?.origin,\n                body: this.migrateJsonShape(message?.body),\n                description: message?.description,\n                availability: message?.availability\n            }));\n        },\n        [] as V2.WebSocketMessage[],\n        \"migrateChannelMessages\"\n    );\n\n    migrateHttpExamples = withDefault(\n        (\n            examples: APIV1Read.ExampleEndpointCall[],\n            endpoint: V2.EndpointDefinition\n        ): V2.ExampleEndpointCall[] | undefined => {\n            if (examples == null || examples.length === 0) {\n                return undefined;\n            }\n\n            return examples.map((example): V2.ExampleEndpointCall => {\n                const toRet: V2.ExampleEndpointCall = {\n                    path: example?.path,\n                    responseStatusCode: example?.responseStatusCode,\n                    name: example?.name,\n                    description: example?.description,\n                    pathParameters: example?.pathParameters,\n                    queryParameters: example?.queryParameters,\n                    headers: example?.headers,\n                    requestBody: example?.requestBodyV3,\n                    responseBody: example?.responseBodyV3,\n                    snippets: undefined\n                };\n\n                if (example?.requestBodyV3) {\n                    toRet.requestBody = visitDiscriminatedUnion(\n                        example.requestBodyV3\n                    )._visit<APIV1Read.ExampleEndpointRequest>({\n                        bytes: (value) => value,\n                        json: (value) => ({\n                            type: \"json\",\n                            value: sortKeysByShape(value.value, endpoint.requests?.[0]?.body, this.types)\n                        }),\n                        form: (value) => ({\n                            type: \"form\",\n                            value: mapValues(value.value, (formValue, key): APIV1Read.FormValue => {\n                                const typedFormValue = formValue as APIV1Read.FormValue;\n                                if (typedFormValue.type === \"json\") {\n                                    const shape =\n                                        endpoint.requests?.[0]?.body.type === \"formData\"\n                                            ? endpoint.requests?.[0]?.body.fields.find(\n                                                  (field): field is V2.FormDataPropertyVariant =>\n                                                      field.key === key && field.type === \"property\"\n                                              )?.valueShape\n                                            : undefined;\n                                    return {\n                                        type: \"json\",\n                                        value: sortKeysByShape(typedFormValue.value, shape, this.types)\n                                    };\n                                } else {\n                                    return typedFormValue;\n                                }\n                            })\n                        })\n                    });\n                }\n\n                if (toRet.responseBody) {\n                    toRet.responseBody.value = sortKeysByShape(\n                        toRet.responseBody.value,\n                        endpoint.responses?.[0]?.body,\n                        this.types\n                    );\n                }\n\n                toRet.snippets = this.migrateEndpointSnippets(\n                    endpoint,\n                    toRet,\n                    example?.codeSamples,\n                    example?.codeExamples\n                );\n\n                return toRet;\n            });\n        },\n        undefined,\n        \"migrateHttpExamples\"\n    );\n\n    migrateHttpErrors = withDefault(\n        (errors: APIV1Read.ErrorDeclarationV2[] | null | undefined): V2.ErrorResponse[] | undefined => {\n            if (errors == null || errors.length === 0) {\n                return undefined;\n            }\n\n            return errors.map((value) => {\n                const shape = value?.type != null ? this.migrateTypeShape(value.type) : undefined;\n                return {\n                    isWildcard: value?.isWildcard,\n                    description: value?.description,\n                    availability: value?.availability,\n                    name:\n                        (value?.name != null ? titleCase(value.name) : undefined) ??\n                        getMessageForStatus(value?.statusCode),\n                    statusCode: value?.statusCode,\n                    shape,\n                    examples: value?.examples?.map(\n                        (example): APIV1Read.ErrorExample => ({\n                            description: example?.description,\n                            name: example?.name,\n                            responseBody: {\n                                type: \"json\" as const,\n                                value: sortKeysByShape(example?.responseBody?.value, shape, this.types)\n                            }\n                        })\n                    ),\n                    headers: this.migrateParameters(value?.headers ?? undefined)\n                };\n            });\n        },\n        undefined,\n        \"migrateHttpErrors\"\n    );\n\n    migrateHttpResponse = withDefault(\n        (response: APIV1Read.HttpResponse | undefined): V2.HttpResponse | undefined => {\n            if (response == null) {\n                return undefined;\n            }\n\n            if (response.type == null) {\n                return undefined;\n            }\n\n            return {\n                description: response?.description,\n                statusCode: response?.statusCode ?? 200,\n                isWildcard: response?.isWildcard,\n                body: visitDiscriminatedUnion(response?.type)._visit<V2.HttpResponseBodyShape>({\n                    object: (value) => ({\n                        type: \"object\",\n                        extends: value?.extends,\n                        properties: this.migrateObjectProperties(value?.properties ?? []),\n                        extraProperties: undefined\n                    }),\n                    reference: (value) => ({\n                        type: \"alias\",\n                        value: this.migrateTypeReference(value?.value)\n                    }),\n                    fileDownload: (value) => value,\n                    streamingText: (value) => value,\n                    stream: (value) => ({\n                        type: \"stream\",\n                        terminator: value?.terminator,\n                        shape: this.migrateJsonShape(value?.shape)\n                    }),\n\n                    // Careful! we're dropping non-streaming response shape in the following migration:\n                    streamCondition: (value) => ({\n                        type: \"stream\",\n                        terminator: undefined,\n                        shape: this.migrateJsonShape(value?.streamResponse?.shape)\n                    })\n                })\n            };\n        },\n        undefined,\n        \"migrateHttpResponse\"\n    );\n\n    migrateHttpRequest = withDefault(\n        (request: APIV1Read.HttpRequest | undefined): V2.HttpRequest | undefined => {\n            if (request == null) {\n                return undefined;\n            }\n\n            if (request.type == null) {\n                return undefined;\n            }\n\n            return {\n                description: request?.description,\n                contentType: request?.contentType,\n                body: visitDiscriminatedUnion(request?.type)._visit<V2.HttpRequestBodyShape>({\n                    object: (value) => ({\n                        type: \"object\",\n                        extends: value?.extends,\n                        properties: this.migrateObjectProperties(value?.properties ?? []),\n                        extraProperties: undefined\n                    }),\n                    reference: (value) => ({\n                        type: \"alias\",\n                        value: this.migrateTypeReference(value?.value)\n                    }),\n                    bytes: (value) => ({\n                        type: \"bytes\",\n                        isOptional: value?.isOptional,\n                        contentType: value?.contentType\n                    }),\n                    formData: (value) => ({\n                        type: \"formData\",\n                        description: value?.description,\n                        availability: value?.availability,\n                        fields: this.migrateFormDataProperties(value?.properties ?? [])\n                    }),\n                    fileUpload: (value) => ({\n                        type: \"formData\",\n                        description: value?.value?.description,\n                        availability: value?.value?.availability,\n                        fields: this.migrateFormDataProperties(value?.value?.properties ?? [])\n                    })\n                })\n            };\n        },\n        undefined,\n        \"migrateHttpRequest\"\n    );\n\n    migrateFormDataProperties = withDefault(\n        (properties: APIV1Read.FormDataProperty[]): V2.FormDataField[] => {\n            if (properties == null) {\n                return [];\n            }\n            return properties\n                .map((prop) =>\n                    visitDiscriminatedUnion(prop)._visit<V2.FormDataField | undefined>({\n                        file: (file) =>\n                            visitDiscriminatedUnion(file?.value)._visit<V2.FormDataField>({\n                                file: (single) => ({\n                                    type: \"file\",\n                                    key: single?.key,\n                                    isOptional: single?.isOptional,\n                                    contentType: single?.contentType ?? undefined,\n                                    description: single?.description ?? undefined,\n                                    availability: single?.availability ?? undefined\n                                }),\n                                fileArray: (multiple) => ({\n                                    type: \"files\",\n                                    key: multiple?.key,\n                                    isOptional: multiple?.isOptional,\n                                    contentType: multiple?.contentType ?? undefined,\n                                    description: multiple?.description ?? undefined,\n                                    availability: multiple?.availability ?? undefined\n                                })\n                            }),\n                        bodyProperty: (bodyProp) => {\n                            if (bodyProp?.valueType == null) {\n                                return undefined;\n                            }\n                            return {\n                                type: \"property\",\n                                key: bodyProp?.key,\n                                contentType: bodyProp?.contentType ?? undefined,\n                                description: bodyProp?.description ?? undefined,\n                                availability: bodyProp?.availability ?? undefined,\n                                exploded: bodyProp?.exploded ?? undefined,\n                                valueShape: {\n                                    type: \"alias\",\n                                    value: this.migrateTypeReference(bodyProp.valueType)\n                                },\n                                propertyAccess: bodyProp?.propertyAccess ?? undefined\n                            };\n                        }\n                    })\n                )\n                .filter(isNonNullish);\n        },\n        [] as V2.FormDataField[],\n        \"migrateFormDataProperties\"\n    );\n\n    migrateEndpointSnippets(\n        endpoint: V2.EndpointDefinition,\n        example: V2.ExampleEndpointCall,\n        codeSamples: APIV1Read.CustomCodeSample[],\n        codeExamples: APIV1Read.CodeExamples\n    ): Record<string, V2.CodeSnippet[]> {\n        const toRet: Record<string, V2.CodeSnippet[]> = {};\n        function push(language: string, snippet: V2.CodeSnippet) {\n            (toRet[language] ??= []).push(snippet);\n        }\n\n        const userProvidedLanguages = new Set<string>();\n\n        // Add user-provided code snippets\n        codeSamples?.forEach((codeSample) => {\n            const language = cleanLanguage(codeSample?.language);\n            userProvidedLanguages.add(language);\n\n            push(language, {\n                name: codeSample?.name,\n                language,\n                install: codeSample?.install,\n                code: codeSample?.code,\n                generated: false,\n                description: codeSample?.description\n            });\n        });\n\n        if (!userProvidedLanguages.has(SupportedLanguage.Curl)) {\n            const code = convertToCurl(toSnippetHttpRequest(endpoint, example, this.auth));\n            push(SupportedLanguage.Curl, {\n                language: SupportedLanguage.Curl,\n                code,\n                name: undefined,\n                install: undefined,\n                generated: true,\n                description: undefined\n            });\n        }\n\n        if (!userProvidedLanguages.has(SupportedLanguage.Python) && codeExamples?.pythonSdk != null) {\n            push(SupportedLanguage.Python, {\n                name: undefined,\n                language: SupportedLanguage.Python,\n                install: codeExamples?.pythonSdk?.install,\n                code: codeExamples?.pythonSdk?.sync_client,\n                generated: true,\n                description: undefined\n            });\n        }\n\n        if (!userProvidedLanguages.has(SupportedLanguage.Typescript) && codeExamples?.typescriptSdk != null) {\n            push(SupportedLanguage.Typescript, {\n                name: undefined,\n                language: SupportedLanguage.Typescript,\n                install: codeExamples?.typescriptSdk?.install,\n                code: codeExamples?.typescriptSdk?.client,\n                generated: true,\n                description: undefined\n            });\n        }\n\n        if (!userProvidedLanguages.has(SupportedLanguage.Go) && codeExamples?.goSdk != null) {\n            push(SupportedLanguage.Go, {\n                name: undefined,\n                language: SupportedLanguage.Go,\n                install: codeExamples?.goSdk?.install,\n                code: codeExamples?.goSdk?.client,\n                generated: true,\n                description: undefined\n            });\n        }\n\n        if (!userProvidedLanguages.has(SupportedLanguage.Ruby) && codeExamples?.rubySdk != null) {\n            push(SupportedLanguage.Ruby, {\n                name: undefined,\n                language: SupportedLanguage.Ruby,\n                install: codeExamples?.rubySdk?.install,\n                code: codeExamples?.rubySdk?.client,\n                generated: true,\n                description: undefined\n            });\n        }\n\n        if (!userProvidedLanguages.has(SupportedLanguage.Csharp) && codeExamples?.csharpSdk != null) {\n            push(SupportedLanguage.Csharp, {\n                name: undefined,\n                language: SupportedLanguage.Csharp,\n                install: codeExamples?.csharpSdk?.install,\n                code: codeExamples?.csharpSdk?.client,\n                generated: true,\n                description: undefined\n            });\n        }\n\n        return toRet;\n    }\n\n    migrateGraphQlOperation = (v1: APIV1Read.GraphQlOperation, namespace: V2.SubpackageId[]): V2.GraphQlOperation => {\n        if (v1 == null) {\n            return {\n                id: \"\" as V2.GraphQlOperationId,\n                operationType: \"QUERY\",\n                name: \"\",\n                displayName: undefined,\n                description: undefined,\n                availability: undefined,\n                namespace,\n                arguments: undefined,\n                returnType: DEFAULT_TYPE_SHAPE,\n                examples: [],\n                snippets: undefined\n            };\n        }\n        return {\n            id: v1?.id,\n            operationType: v1?.operationType,\n            name: v1?.name,\n            displayName: v1?.displayName,\n            description: v1?.description,\n            availability: v1?.availability,\n            namespace,\n            arguments: v1?.arguments?.map((arg) => this.migrateGraphQlArgument(arg)),\n            returnType: {\n                type: \"alias\",\n                value: this.migrateTypeReference(v1?.returnType)\n            },\n            examples: v1?.examples,\n            snippets: v1?.snippets\n        };\n    };\n\n    migrateGraphQlArgument = withDefault(\n        (v1: APIV1Read.GraphQlArgument): V2.GraphQlArgument => {\n            if (v1 == null) {\n                return DEFAULT_GRAPHQL_ARGUMENT;\n            }\n            return {\n                name: v1?.name,\n                description: v1?.description,\n                availability: v1?.availability,\n                type: {\n                    type: \"alias\",\n                    value: this.migrateTypeReference(v1?.type)\n                },\n                defaultValue: v1?.defaultValue\n            };\n        },\n        DEFAULT_GRAPHQL_ARGUMENT,\n        \"migrateGraphQlArgument\"\n    );\n}\n","export const ROOT_PACKAGE_ID = \"__package__\" as const;\n","import { isPlainObject, unknownToString } from \"@fern-api/ui-core-utils\";\nimport { compact } from \"es-toolkit/array\";\nimport qs from \"qs\";\nimport { UnreachableCaseError } from \"ts-essentials\";\n\nimport { obfuscateSecret } from \"../../utils/obfuscate-secret\";\nimport type * as Latest from \"../latest\";\nimport { wrapOpenRPCRequest } from \"../wrapOpenRPCRequest\";\nimport type {\n    SnippetHttpRequest,\n    SnippetHttpRequestBodyFormValue,\n    SnippetHttpRequestBodyFormValueFilename,\n    SnippetHttpRequestBodyFormValueFilenames\n} from \"./SnippetHttpRequest\";\n\nfunction requiresUrlEncode(str: string): boolean {\n    return encodeURIComponent(str) !== str;\n}\n\nexport function convertToCurl(request: SnippetHttpRequest): string {\n    try {\n        return unsafeStringifyHttpRequestExampleToCurl(request);\n    } catch (e) {\n        console.error(`[convert-to-curl] ${JSON.stringify(e)}`);\n\n        return \"\";\n    }\n}\n\nfunction getHttpRequest(method: string, url: string, searchParams: Record<string, unknown>): string {\n    const queryParams = toUrlEncoded(searchParams)\n        .map(([key, value]) => `${key}=${encodeURIComponent(unknownToString(value))}`)\n        .join(\"&\");\n    if (method !== \"GET\") {\n        return queryParams.length > 0 ? `-X ${method} \"${url}?${queryParams}\"` : `-X ${method} ${url}`;\n    }\n    // if the method is GET, we don't need to include the query params in URL, but instead we'll include it as --data-urlencode\n    return queryParams.length > 0 ? `-G ${url}` : url;\n}\n\nfunction getHeadersString(headers: Record<string, unknown>): string[] {\n    return Object.entries(headers).map(([key, value]) => `-H \"${key}: ${unknownToString(value)}\"`);\n}\n\nfunction getBasicAuthString(\n    basicAuth: {\n        username: string;\n        password: string;\n    },\n    redacted?: boolean\n): string[] {\n    if (redacted) {\n        return [`-u \"${basicAuth.username}:${obfuscateSecret(basicAuth.password)}\"`];\n    }\n    return [`-u \"${basicAuth.username}:${basicAuth.password}\"`];\n}\n\nexport function getUrlQueriesGetString(searchParams: Record<string, unknown>, forceManualEncoding = false): string[] {\n    return toUrlEncoded(searchParams).map(([key, value]) => {\n        // If we're dealing with form-urlencoded content-type, always use -d with pre-encoded values\n        const encodedValue = forceManualEncoding ? encodeURIComponent(value) : value;\n        const flag = forceManualEncoding || !requiresUrlEncode(value) ? \"-d\" : \"--data-urlencode\";\n\n        if (forceManualEncoding || key.includes(\" \") || value.includes(\" \") || key.includes(\"[\")) {\n            return `${flag} \"${key}=${encodedValue}\"`;\n        }\n        return `${flag} ${key}=${encodedValue}`;\n    });\n}\n\nfunction getBodyJsonString(value: unknown | null | undefined, protocol?: Latest.Protocol): string[] {\n    if (protocol?.type === \"openrpc\") {\n        const payload = wrapOpenRPCRequest(value, protocol.methodName);\n        const stringifiedValue = JSON.stringify(payload, null, 2).replace(/'/g, \"\\\\'\");\n        return [`-d '${stringifiedValue}'`];\n    }\n\n    if (value == null) {\n        return [];\n    }\n\n    if (typeof value === \"string\") {\n        return [`-d \"${value.replace(/\"/g, '\\\\\"')}\"`];\n    }\n\n    const stringifiedValue = JSON.stringify(value, null, 2).replace(/'/g, \"\\\\'\");\n    return [`-d '${stringifiedValue}'`];\n}\n\nfunction getBodyBytesString(filename: string): string[] {\n    return [`--data-binary @${filename.includes(\" \") ? `\"${filename}\"` : filename}`];\n}\n\nfunction getBodyFormValueJsonString(value: unknown | null | undefined, key: string): string[] {\n    if (value == null) {\n        return [];\n    }\n\n    // TODO: this is a little sus\n    if (typeof value === \"string\") {\n        return [`-F ${key}=\"${value.replace(/\"/g, '\\\\\"')}\"`];\n    }\n\n    const stringValue = JSON.stringify(value, null, 2);\n\n    return [`-F ${key}='${stringValue.replace(/'/g, \"'\\\\''\")}'`];\n}\n\nfunction getBodyFormValueFilenamesStrings({ files }: SnippetHttpRequestBodyFormValueFilenames, key: string): string[] {\n    return files\n        .filter((file) => file.filename != null)\n        .map(\n            ({ filename, contentType }) =>\n                `-F \"${key}[]\"=@${filename.includes(\" \") || contentType != null ? `\"${filename}${contentType != null ? `;type=${contentType}` : \"\"}\"` : filename}`\n        );\n}\n\nfunction getBodyFormValueFilenameString(\n    { filename, contentType }: SnippetHttpRequestBodyFormValueFilename,\n    key: string\n): string[] {\n    if (filename == null) {\n        return [];\n    }\n    return [\n        `-F ${key}=@${filename.includes(\" \") || contentType != null ? `\"${filename}${contentType != null ? `;type=${contentType}` : \"\"}\"` : filename}`\n    ];\n}\n\nfunction getBodyFormValueString(value: SnippetHttpRequestBodyFormValue, key: string): string[] {\n    switch (value.type) {\n        case \"json\":\n            return getBodyFormValueJsonString(value.value, key);\n        case \"filename\":\n            return getBodyFormValueFilenameString(value, key);\n        case \"filenames\":\n            return getBodyFormValueFilenamesStrings(value, key);\n        case \"exploded\":\n            return (value.value ?? []).flatMap((item) => getBodyFormValueJsonString(item, key));\n        default:\n            throw new UnreachableCaseError(value);\n    }\n}\n\nfunction getBodyFormString(value: Record<string, SnippetHttpRequestBodyFormValue>): string[] {\n    return Object.entries(value).flatMap(([key, value]) => getBodyFormValueString(value, key));\n}\n\nfunction getBodyDataString(\n    method: string,\n    body: SnippetHttpRequest[\"body\"] | null | undefined,\n    protocol: Latest.Protocol | undefined\n): string[] {\n    if (method === \"GET\") {\n        return [];\n    }\n\n    if (body == null) {\n        if (protocol?.type === \"openrpc\") {\n            return getBodyJsonString(undefined, protocol);\n        }\n        return [];\n    }\n\n    switch (body.type) {\n        case \"json\":\n            return getBodyJsonString(body.value, protocol);\n        case \"bytes\":\n            return getBodyBytesString(body.filename);\n        case \"form\":\n            return getBodyFormString(body.value);\n        default:\n            throw new UnreachableCaseError(body);\n    }\n}\n\nfunction unsafeStringifyHttpRequestExampleToCurl({\n    method,\n    url,\n    searchParams,\n    headers,\n    basicAuth,\n    body,\n    protocol,\n    redacted\n}: SnippetHttpRequest): string {\n    const httpRequest = getHttpRequest(method, url, searchParams);\n\n    const headersStrings = getHeadersString(\n        // If basicAuth is provided, we filter out any existing Authorization header\n        // to avoid conflicts, as the basicAuth will be added separately with -u flag\n        basicAuth != null\n            ? Object.fromEntries(Object.entries(headers).filter(([key]) => key.toLowerCase() !== \"authorization\"))\n            : headers\n    );\n    const basicAuthStrings = basicAuth != null ? getBasicAuthString(basicAuth, redacted) : [];\n\n    // special handling for application/x-www-form-urlencoded\n    const isFormUrlEncoded =\n        method !== \"GET\" &&\n        unknownToString(headers[\"Content-Type\"] ?? headers[\"content-type\"])\n            .toLowerCase()\n            .includes(\"form-urlencoded\");\n\n    // GET requests don't have a body, so `--data-urlencode` is used to pass query parameters\n\n    const urlQueriesGetStrings = getUrlQueriesGetString(\n        {\n            ...(method === \"GET\" ? searchParams : {}),\n            // HACK: combine search params and body.value if body.type is json, because we expect the body.json to include url-encoded params\n            ...(isFormUrlEncoded && body?.type === \"json\" && isPlainObject(body.value) ? body.value : {})\n        },\n        isFormUrlEncoded\n    );\n\n    const bodyDataStrings = isFormUrlEncoded ? [] : getBodyDataString(method, body, protocol);\n\n    const allStrings = compact([...headersStrings, ...basicAuthStrings, ...urlQueriesGetStrings, ...bodyDataStrings]);\n\n    function withNewLine(line: string): string {\n        return ` \\\\\\n     ${line}`;\n    }\n\n    return `curl ${httpRequest}${allStrings.map(withNewLine).join(\"\")}`;\n}\n\nfunction toUrlEncoded(urlQueries: Record<string, unknown>): [string, string][] {\n    const queryString = qs.stringify(urlQueries, {\n        encode: false,\n        arrayFormat: \"repeat\",\n        skipNulls: true,\n        filter: (prefix, value) => {\n            if (value != null && typeof value !== \"object\") {\n                return String(value);\n            }\n            return value;\n        }\n    });\n\n    if (!queryString) {\n        return [];\n    }\n\n    return queryString.split(\"&\").map((pair) => {\n        const [key, value] = pair.split(\"=\");\n        return [key, value || \"\"] as [string, string];\n    });\n}\n","export function obfuscateSecret(secret: string): string {\n    if (secret.trimEnd().length === 0) {\n        return secret;\n    }\n    if (secret.length < 28) {\n        return secret.slice(0, 1) + \"*\".repeat(25) + secret.slice(-2);\n    }\n    return secret.slice(0, 12) + \"....\" + secret.slice(-12);\n}\n","/**\n * Wraps a request body in the OpenRPC format.\n *\n * @param body - The request body to wrap\n * @param methodName - The OpenRPC method name\n * @returns The wrapped request body in OpenRPC format\n */\nexport function wrapOpenRPCRequest(\n    body: unknown,\n    methodName: string\n): {\n    jsonrpc: string;\n    method: string;\n    params: unknown[];\n    id: number;\n} {\n    let params: unknown[] = [];\n    if (body && typeof body === \"object\") {\n        params = Object.values(body);\n    }\n    return {\n        jsonrpc: \"2.0\",\n        method: methodName,\n        params,\n        id: 1\n    };\n}\n","import { sanitizeUrl, unknownToString } from \"@fern-api/ui-core-utils\";\nimport visitDiscriminatedUnion from \"@fern-api/ui-core-utils/visitDiscriminatedUnion\";\nimport { compact } from \"es-toolkit/array\";\nimport { noop } from \"ts-essentials\";\nimport urljoin from \"url-join\";\n\nimport type * as Latest from \"../latest\";\nimport { preprocessQueryParameters } from \"../url\";\n\nfunction buildPathForSnippet(\n    path: Latest.PathPart[] | undefined,\n    pathParameters: Record<string, unknown> | undefined\n): string {\n    if (path == null) {\n        return \"\";\n    }\n    return path\n        .map((part) => {\n            if (part.type === \"pathParameter\") {\n                const key = part.value;\n                const value = unknownToString(pathParameters?.[key]);\n                return value.length > 0 ? value : `{${key}}`;\n            }\n            return part.value;\n        })\n        .join(\"\");\n}\n\ninterface SnippetHttpRequestBodyJson {\n    type: \"json\";\n    value?: unknown;\n}\n\ninterface SnippetHttpRequestBodyJsonExploded {\n    type: \"exploded\";\n    value?: unknown[];\n}\n\nexport interface SnippetHttpRequestBodyForm {\n    type: \"form\";\n    value: Record<string, SnippetHttpRequestBodyFormValue>;\n}\n\nexport interface SnippetHttpRequestBodyFormValueFilename {\n    type: \"filename\";\n    filename: string;\n    contentType: string | undefined;\n}\n\nexport interface SnippetHttpRequestBodyFormValueFilenames {\n    type: \"filenames\";\n    files: Omit<SnippetHttpRequestBodyFormValueFilename, \"type\">[];\n}\n\nexport type SnippetHttpRequestBodyFormValue =\n    | SnippetHttpRequestBodyJson\n    | SnippetHttpRequestBodyJsonExploded\n    | SnippetHttpRequestBodyFormValueFilename\n    | SnippetHttpRequestBodyFormValueFilenames;\n\ninterface SnippetHttpRequestBodyBytes {\n    type: \"bytes\";\n    filename: string;\n}\n\nexport type SnippetHttpRequestBody =\n    | SnippetHttpRequestBodyJson\n    | SnippetHttpRequestBodyForm\n    | SnippetHttpRequestBodyBytes;\n\nexport interface SnippetHttpRequest {\n    method: string;\n    url: string;\n    searchParams: Record<string, unknown>;\n    headers: Record<string, unknown>;\n    basicAuth?: {\n        username: string;\n        password: string;\n    };\n    body: SnippetHttpRequestBody | undefined;\n    protocol?: Latest.Protocol;\n    redacted?: boolean;\n}\n\n// TODO: validate that global headers are also included in the example by CLI or FDR\nexport function toSnippetHttpRequest(\n    endpoint: Latest.EndpointDefinition,\n    example: Latest.ExampleEndpointCall,\n    auth: Latest.AuthScheme | undefined\n): SnippetHttpRequest {\n    const environmentUrl = (\n        endpoint.environments?.find((env) => env.id === endpoint.defaultEnvironment) ?? endpoint.environments?.[0]\n    )?.baseUrl;\n    const sanitizedEnvironment = sanitizeUrl(environmentUrl);\n\n    const endpointPathRaw = buildPathForSnippet(endpoint.path, example.pathParameters ?? undefined);\n    const examplePathRaw = example.path ? (example.path.startsWith(\"/\") ? example.path : `/${example.path}`) : \"\";\n\n    // Normalize for comparison only (strip trailing slash, treat empty as \"/\")\n    const normalize = (p: string): string => (p.endsWith(\"/\") ? p.slice(0, -1) : p) || \"/\";\n    const endpointPath = normalize(endpointPathRaw);\n    const examplePath = normalize(examplePathRaw);\n\n    // Use endpoint.path if it equals or extends example.path (has base path prefix)\n    const useEndpointPath =\n        endpointPath === examplePath ||\n        (endpointPath.length > examplePath.length && endpointPath.endsWith(examplePath));\n    const fullPath = useEndpointPath ? endpointPathRaw : examplePathRaw;\n\n    const url = urljoin(compact([sanitizedEnvironment, fullPath]));\n\n    const headers: Record<string, unknown> = { ...example.headers };\n\n    let basicAuth: { username: string; password: string } | undefined;\n\n    if (endpoint.auth && endpoint.auth.length > 0 && auth) {\n        visitDiscriminatedUnion(auth, \"type\")._visit({\n            basicAuth: ({ usernameName = \"username\", passwordName = \"password\", passwordAlwaysEmpty }) => {\n                basicAuth = {\n                    username: `<${usernameName}>`,\n                    password: passwordAlwaysEmpty ? \"\" : `<${passwordName}>`\n                };\n            },\n            bearerAuth: ({ tokenName = \"token\" }) => {\n                headers.Authorization = `Bearer <${tokenName}>`;\n            },\n            header: ({ headerWireValue, nameOverride = headerWireValue, prefix }) => {\n                headers[headerWireValue] = prefix != null ? `${prefix} <${nameOverride}>` : `<${nameOverride}>`;\n            },\n            oAuth: ({ value: clientCredentials }) => {\n                visitDiscriminatedUnion(clientCredentials, \"type\")._visit({\n                    clientCredentials: () => {\n                        headers.Authorization = \"Bearer <token>\";\n                    },\n                    _other: noop\n                });\n            },\n            _other: noop\n        });\n    }\n\n    const body: Latest.ExampleEndpointRequest | undefined = example.requestBody ?? undefined;\n\n    if (endpoint.requests?.[0]?.contentType != null) {\n        headers[\"Content-Type\"] = endpoint.requests?.[0]?.contentType;\n    }\n\n    if (body != null && headers[\"Content-Type\"] == null) {\n        if (body.type === \"json\") {\n            headers[\"Content-Type\"] = \"application/json\";\n        } else if (body.type === \"form\") {\n            headers[\"Content-Type\"] = \"multipart/form-data\";\n        }\n    }\n\n    // If endpoint is OpenRPC, ensure Content-Type is application/json\n    if (endpoint.protocol?.type === \"openrpc\") {\n        headers[\"Content-Type\"] = \"application/json\";\n    }\n\n    // Preprocess query parameters based on explode metadata\n    const processedQueryParams =\n        preprocessQueryParameters(example.queryParameters ?? undefined, endpoint.queryParameters ?? undefined) ?? {};\n\n    return {\n        method: endpoint.method,\n        url,\n        searchParams: processedQueryParams,\n        headers: JSON.parse(JSON.stringify(headers)),\n        basicAuth,\n        protocol: endpoint.protocol ?? undefined,\n        body:\n            body == null\n                ? undefined\n                : visitDiscriminatedUnion(body)._visit<SnippetHttpRequestBody | undefined>({\n                      json: (value) => value,\n                      form: (value) => {\n                          const toRet: Record<string, SnippetHttpRequestBodyFormValue> = {};\n                          for (const [key, val] of Object.entries(value.value)) {\n                              const typedVal = val as {\n                                  type: string;\n                                  value?: unknown;\n                                  filename?: string;\n                                  files?: { filename: string }[];\n                              };\n                              const formValue = visitDiscriminatedUnion(typedVal, \"type\")._visit<\n                                  SnippetHttpRequestBodyFormValue | undefined\n                              >({\n                                  exploded: (value) => ({ type: \"exploded\", value: value.value as unknown[] }),\n                                  json: (value) => ({ type: \"json\", value: value.value }),\n                                  filename: (value) => ({\n                                      type: \"filename\",\n                                      filename: String(value.value ?? \"\"),\n                                      contentType: undefined // TODO: infer content type?\n                                  }),\n                                  filenames: (value) => ({\n                                      type: \"filenames\",\n                                      files: (value.value as string[]).map((filename: string) => ({\n                                          filename,\n                                          contentType: undefined // TODO: infer content type?\n                                      }))\n                                  }),\n                                  filenameWithData: (value) => ({\n                                      type: \"filename\",\n                                      filename: String(value.filename ?? \"\"),\n                                      contentType: undefined // TODO: infer content type?\n                                  }),\n                                  filenamesWithData: (value) => ({\n                                      type: \"filenames\",\n                                      files: ((value.value as { filename: string }[]) ?? []).map(\n                                          ({ filename }: { filename: string }) => ({\n                                              filename,\n                                              contentType: undefined // TODO: infer content type?\n                                          })\n                                      )\n                                  }),\n                                  _other: () => undefined\n                              });\n                              if (formValue != null) {\n                                  toRet[key] = formValue;\n                              }\n                          }\n                          return { type: \"form\", value: toRet };\n                      },\n                      // TODO: filename should be provided in the example from the API definition\n                      bytes: () => ({ type: \"bytes\", filename: \"<filename>\" }),\n                      _other: () => undefined\n                  })\n    };\n}\n","import { sanitizeUrl, unknownToString } from \"@fern-api/ui-core-utils\";\nimport qs from \"qs\";\n\nimport type { EndpointDefinition, ParameterProperty, PathPart } from \"./latest\";\n\n/**\n * Preprocesses query parameters based on explode metadata.\n * When explode=false, arrays are joined with commas instead of being repeated.\n */\nexport function preprocessQueryParameters(\n    queryParameters: Record<string, unknown> | undefined,\n    parameterMetadata: ParameterProperty[] | undefined\n): Record<string, unknown> | undefined {\n    if (queryParameters == null) {\n        return undefined;\n    }\n\n    // If no metadata, return as-is (default behavior is explode=true)\n    if (parameterMetadata == null || parameterMetadata.length === 0) {\n        return queryParameters;\n    }\n\n    // Create a map of parameter key to explode setting\n    const explodeMap = new Map<string, boolean | undefined>();\n    for (const param of parameterMetadata) {\n        explodeMap.set(param.key, param.explode ?? undefined);\n    }\n\n    // Process each query parameter\n    const result: Record<string, unknown> = {};\n    for (const [key, value] of Object.entries(queryParameters)) {\n        const explode = explodeMap.get(key);\n\n        // If explode is explicitly false and value is an array, join with commas\n        if (explode === false && Array.isArray(value)) {\n            result[key] = value.map((v) => unknownToString(v)).join(\",\");\n        } else {\n            result[key] = value;\n        }\n    }\n\n    return result;\n}\n\nfunction buildQueryParams(queryParameters: Record<string, unknown> | undefined): string {\n    if (queryParameters == null) {\n        return \"\";\n    }\n\n    const filteredParams = Object.entries(queryParameters).reduce<Record<string, unknown>>((acc, [key, value]) => {\n        if (value != null) {\n            acc[key] = value;\n        }\n        return acc;\n    }, {});\n\n    if (Object.keys(filteredParams).length === 0) {\n        return \"\";\n    }\n\n    const queryString = qs.stringify(filteredParams, {\n        encode: false,\n        arrayFormat: \"repeat\",\n        skipNulls: true,\n        serializeDate: (date: Date) => date.toISOString()\n    });\n\n    return queryString ? \"?\" + queryString : \"\";\n}\n\nfunction buildPath(path: PathPart[] = [], pathParameters?: Record<string, unknown>): string {\n    return path\n        .map((part) => {\n            if (part.type === \"pathParameter\") {\n                const key = part.value;\n                const stateValue = unknownToString(pathParameters?.[key]);\n                return stateValue.length > 0 ? encodeURIComponent(stateValue) : \":\" + key;\n            }\n            return part.value;\n        })\n        .join(\"\");\n}\n\ninterface BuildRequestUrlOptions {\n    path?: PathPart[];\n    pathParameters?: Record<string, unknown>;\n    queryParameters?: Record<string, unknown>;\n    baseUrl?: string;\n}\nexport function buildRequestUrl({\n    baseUrl = \"\",\n    path,\n    pathParameters,\n    queryParameters\n}: BuildRequestUrlOptions): string {\n    const sanitizedBaseUrl = sanitizeUrl(baseUrl) || \"\";\n\n    if (sanitizedBaseUrl.endsWith(\"/\")) {\n        return sanitizedBaseUrl.slice(0, -1) + buildPath(path, pathParameters) + buildQueryParams(queryParameters);\n    }\n    return sanitizedBaseUrl + buildPath(path, pathParameters) + buildQueryParams(queryParameters);\n}\n\ninterface BuildEndpointUrlOptions {\n    endpoint?: EndpointDefinition;\n    pathParameters?: Record<string, unknown>;\n    queryParameters?: Record<string, unknown>;\n    baseUrl?: string;\n}\nexport function buildEndpointUrl({\n    endpoint,\n    pathParameters,\n    queryParameters,\n    baseUrl\n}: BuildEndpointUrlOptions): string {\n    const environmentBaseUrl =\n        baseUrl ??\n        (endpoint?.environments?.find((env) => env.id === endpoint.defaultEnvironment) ?? endpoint?.environments?.[0])\n            ?.baseUrl;\n\n    // sanitize the base URL - if invalid, it will be null\n    const sanitizedBaseUrl = sanitizeUrl(environmentBaseUrl);\n\n    // Preprocess query parameters based on explode metadata\n    const processedQueryParameters = preprocessQueryParameters(queryParameters, endpoint?.queryParameters ?? undefined);\n\n    return buildRequestUrl({\n        baseUrl: sanitizedBaseUrl || \"\",\n        path: endpoint?.path,\n        pathParameters,\n        queryParameters: processedQueryParameters\n    });\n}\n","import isPlainObject from \"@fern-api/ui-core-utils/isPlainObject\";\nimport visitDiscriminatedUnion from \"@fern-api/ui-core-utils/visitDiscriminatedUnion\";\nimport { difference, keyBy } from \"es-toolkit/array\";\nimport { mapValues } from \"es-toolkit/object\";\n\nimport type * as Latest from \"./latest\";\nimport type { TypeShapeOrReference } from \"./types\";\nimport { unwrapDiscriminatedUnionVariant, unwrapObjectType } from \"./unwrap\";\n\nfunction sortKeysBy(obj: Record<string, unknown>, order: string[]): Record<string, unknown> {\n    return mapValues(\n        // difference() is used to ensure that all keys are included in the result\n        keyBy([...order, ...difference(Object.keys(obj), order)], (key) => key),\n        (key) => obj[key]\n    );\n}\n\nexport function sortKeysByShape(\n    obj: unknown,\n    shape: TypeShapeOrReference | Latest.HttpRequestBodyShape | Latest.HttpResponseBodyShape | null | undefined,\n    types: Record<string, Latest.TypeDefinition>\n): unknown {\n    if ((!isPlainObject(obj) && !Array.isArray(obj)) || shape == null) {\n        return obj;\n    }\n    return visitDiscriminatedUnion(shape, \"type\")._visit<unknown>({\n        id: ({ id }) => sortKeysByShape(obj, types[id]?.shape, types),\n        primitive: () => obj,\n        literal: () => obj,\n        optional: ({ shape }) => sortKeysByShape(obj, shape, types),\n        nullable: ({ shape }) => sortKeysByShape(obj, shape, types),\n        list: ({ itemShape }) => (Array.isArray(obj) ? obj.map((o) => sortKeysByShape(o, itemShape, types)) : obj),\n        set: ({ itemShape }) => (Array.isArray(obj) ? obj.map((o) => sortKeysByShape(o, itemShape, types)) : obj),\n        map: ({ valueShape }) =>\n            isPlainObject(obj) ? mapValues(obj, (value) => sortKeysByShape(value, valueShape, types)) : obj,\n        unknown: () => obj,\n        object: (object) => {\n            const objectProperties = unwrapObjectType(object, types).properties;\n            return isPlainObject(obj)\n                ? mapValues(\n                      sortKeysBy(\n                          obj,\n                          objectProperties.map((p) => p.key)\n                      ),\n                      (value, key) => {\n                          const property = objectProperties.find((p) => p.key === key);\n                          if (property == null) {\n                              return value;\n                          }\n                          return sortKeysByShape(value, property?.valueShape, types);\n                      }\n                  )\n                : obj;\n        },\n        undiscriminatedUnion: () => obj, // TODO: match variant and sort nested objects\n        discriminatedUnion: (union) => {\n            const { discriminant, variants } = union;\n            if (!isPlainObject(obj)) {\n                return obj;\n            }\n            const variant = obj[discriminant];\n            if (variant == null) {\n                return obj;\n            }\n            const variantShape = variants.find((v) => v.discriminantValue === variant);\n            if (variantShape == null) {\n                return obj;\n            }\n            const variantProperties = unwrapDiscriminatedUnionVariant(union, variantShape, types).properties;\n            return mapValues(sortKeysBy(obj, [discriminant, ...variantProperties.map((p) => p.key)]), (value, key) => {\n                if (key === discriminant) {\n                    return value;\n                }\n                const property = variantProperties.find((p) => p.key === key);\n                if (property == null) {\n                    return value;\n                }\n                return sortKeysByShape(value, property.valueShape, types);\n            });\n        },\n        enum: () => obj,\n        alias: ({ value: typeRef }) => sortKeysByShape(obj, typeRef, types),\n        formData: ({ fields }) => {\n            if (!isPlainObject(obj)) {\n                return obj;\n            }\n\n            return mapValues(\n                sortKeysBy(\n                    obj,\n                    fields.map((p) => p.key)\n                ),\n                (v, key) => {\n                    const property = fields.find((p) => p.key === key);\n\n                    if (property == null) {\n                        return v;\n                    }\n\n                    if (property.type === \"property\") {\n                        return sortKeysByShape(v, property.valueShape, types);\n                    }\n\n                    return undefined;\n                }\n            );\n        },\n        bytes: () => obj,\n        fileDownload: () => obj,\n        streamingText: () => obj,\n        stream: () => obj,\n        empty: () => obj,\n        _other: () => obj\n    });\n}\n\nexport function safeSortKeysByShape(\n    value: unknown,\n    shape: TypeShapeOrReference | Latest.HttpRequestBodyShape | Latest.HttpResponseBodyShape | null | undefined,\n    types: Record<string, Latest.TypeDefinition>\n): unknown {\n    if (value == null) {\n        return value;\n    }\n    try {\n        return stripUndefines(sortKeysByShape(value, shape, types));\n    } catch (e) {\n        console.error(\"Failed to sort JSON keys by type shape\", e);\n\n        return value;\n    }\n}\n\nfunction stripUndefines(obj: unknown): unknown {\n    return JSON.parse(JSON.stringify(obj));\n}\n","import type { HttpMethod } from \"./latest\";\n\ntype StatusCodeMessagesByMethod = Partial<Record<HttpMethod, string>>;\n\ntype StatusCodeMessages = Record<number, StatusCodeMessagesByMethod>;\n\ntype DefaultStatusCodeMessages = Record<number, string>;\n\nexport const STATUS_CODE_MESSAGES: DefaultStatusCodeMessages = {\n    100: \"Continue\",\n    101: \"Switching Protocols\",\n    102: \"Processing\",\n    103: \"Early Hints\",\n    200: \"OK\",\n    201: \"Created\",\n    202: \"Accepted\",\n    203: \"Non-Authoritative Information\",\n    204: \"No Content\",\n    205: \"Reset Content\",\n    206: \"Partial Content\",\n    207: \"Multi-Status\",\n    208: \"Already Reported\",\n    226: \"IM Used\",\n    300: \"Multiple Choices\",\n    301: \"Moved Permanently\",\n    302: \"Found\",\n    303: \"See Other\",\n    304: \"Not Modified\",\n    305: \"Use Proxy\",\n    306: \"Switch Proxy\",\n    307: \"Temporary Redirect\",\n    308: \"Permanent Redirect\",\n    400: \"Bad Request\",\n    401: \"Unauthorized\",\n    402: \"Payment Required\",\n    403: \"Forbidden\",\n    404: \"Not Found\",\n    405: \"Method Not Allowed\",\n    406: \"Not Acceptable\",\n    407: \"Proxy Authentication Required\",\n    408: \"Request Timeout\",\n    409: \"Conflict\",\n    410: \"Gone\",\n    411: \"Length Required\",\n    412: \"Precondition Failed\",\n    413: \"Payload Too Large\",\n    414: \"URI Too Long\",\n    415: \"Unsupported Media Type\",\n    416: \"Range Not Satisfiable\",\n    417: \"Expectation Failed\",\n    418: \"I'm a teapot\",\n    421: \"Misdirected Request\",\n    422: \"Unprocessable Entity\",\n    423: \"Locked\",\n    424: \"Failed Dependency\",\n    425: \"Too Early\",\n    426: \"Upgrade Required\",\n    428: \"Precondition Required\",\n    429: \"Too Many Requests\",\n    431: \"Request Header Fields Too Large\",\n    451: \"Unavailable For Legal Reasons\",\n    500: \"Internal Server Error\",\n    501: \"Not Implemented\",\n    502: \"Bad Gateway\",\n    503: \"Service Unavailable\",\n    504: \"Gateway Timeout\",\n    505: \"HTTP Version Not Supported\",\n    506: \"Variant Also Negotiates\",\n    507: \"Insufficient Storage\",\n    508: \"Loop Detected\",\n    510: \"Not Extended\",\n    511: \"Network Authentication Required\"\n};\n\nexport const STATUS_CODE_MESSAGES_METHOD_OVERRIDES: StatusCodeMessages = {\n    200: {\n        GET: \"Retrieved\",\n        POST: \"Successful\", // more accurate than \"Created\" for POST\n        PUT: \"Updated\",\n        PATCH: \"Updated\",\n        DELETE: \"Deleted\"\n    }\n};\n\nexport function getMessageForStatus(statusCode: number, method?: HttpMethod): string {\n    // return the method-specific message if it exists\n    if (method != null) {\n        const methodOverrides = STATUS_CODE_MESSAGES_METHOD_OVERRIDES[statusCode];\n        if (methodOverrides != null) {\n            const message = methodOverrides[method];\n            if (message != null) {\n                return message;\n            }\n        }\n    }\n\n    // return the official status message if it exists\n    const message = STATUS_CODE_MESSAGES[statusCode];\n    if (message != null) {\n        return message;\n    }\n\n    // return the default message if it exists\n    if (statusCode >= 100 && statusCode < 200) {\n        return \"Informational\";\n    } else if (statusCode >= 200 && statusCode < 300) {\n        return \"Success\";\n    } else if (statusCode >= 300 && statusCode < 400) {\n        return \"Redirection\";\n    } else if (statusCode >= 400 && statusCode < 500) {\n        return \"Client Error\";\n    } else if (statusCode >= 500 && statusCode < 600) {\n        return \"Server Error\";\n    } else {\n        return \"Unknown Status\";\n    }\n}\n","export const __dirname = \"/\";\n","function unimplemented(name) {\r\n  throw new Error('Node.js process ' + name + ' is not supported by JSPM core outside of Node.js');\r\n}\r\n\r\nvar queue = [];\r\nvar draining = false;\r\nvar currentQueue;\r\nvar queueIndex = -1;\r\n\r\nfunction cleanUpNextTick() {\r\n  if (!draining || !currentQueue)\r\n    return;\r\n  draining = false;\r\n  if (currentQueue.length) {\r\n    queue = currentQueue.concat(queue);\r\n  }\r\n  else {\r\n    queueIndex = -1;\r\n  }\r\n  if (queue.length)\r\n    drainQueue();\r\n}\r\n\r\nfunction drainQueue() {\r\n  if (draining)\r\n    return;\r\n  var timeout = setTimeout(cleanUpNextTick, 0);\r\n  draining = true;\r\n\r\n  var len = queue.length;\r\n  while(len) {\r\n    currentQueue = queue;\r\n    queue = [];\r\n    while (++queueIndex < len) {\r\n      if (currentQueue)\r\n        currentQueue[queueIndex].run();\r\n    }\r\n    queueIndex = -1;\r\n    len = queue.length;\r\n  }\r\n  currentQueue = null;\r\n  draining = false;\r\n  clearTimeout(timeout);\r\n}\r\n\r\nfunction nextTick (fun) {\r\n  var args = new Array(arguments.length - 1);\r\n  if (arguments.length > 1) {\r\n    for (var i = 1; i < arguments.length; i++)\r\n      args[i - 1] = arguments[i];\r\n  }\r\n  queue.push(new Item(fun, args));\r\n  if (queue.length === 1 && !draining)\r\n    setTimeout(drainQueue, 0);\r\n}\r\n// v8 likes predictible objects\r\nfunction Item(fun, array) {\r\n  this.fun = fun;\r\n  this.array = array;\r\n}\r\nItem.prototype.run = function () {\r\n  this.fun.apply(null, this.array);\r\n};\r\n\r\nvar title = 'browser';\r\nvar arch = 'x64';\r\nvar platform = 'browser';\r\nvar env = {\r\n  PATH: '/usr/bin',\r\n  LANG: typeof navigator !== 'undefined' ? navigator.language + '.UTF-8' : undefined,\r\n  PWD: '/',\r\n  HOME: '/home',\r\n  TMP: '/tmp',\r\n};\r\nvar argv = ['/usr/bin/node'];\r\nvar execArgv = [];\r\nvar version = 'v16.8.0';\r\nvar versions = {};\r\n\r\nvar emitWarning = function(message, type) {\r\n  console.warn((type ? (type + ': ') : '') + message);\r\n};\r\n\r\nvar binding = function(name) { unimplemented('binding'); };\r\n\r\nvar umask = function(mask) { return 0; };\r\n\r\nvar cwd = function() { return '/'; };\r\nvar chdir = function(dir) {};\r\n\r\nvar release = {\r\n  name: 'node',\r\n  sourceUrl: '',\r\n  headersUrl: '',\r\n  libUrl: '',\r\n};\r\n\r\nfunction noop() {}\r\n\r\nvar browser = true;\r\nvar _rawDebug = noop;\r\nvar moduleLoadList = [];\r\nfunction _linkedBinding(name) { unimplemented('_linkedBinding'); }\r\nvar domain = {};\r\nvar _exiting = false;\r\nvar config = {};\r\nfunction dlopen(name) { unimplemented('dlopen'); }\r\nfunction _getActiveRequests() { return []; }\r\nfunction _getActiveHandles() { return []; }\r\nvar reallyExit = noop;\r\nvar _kill = noop;\r\nvar cpuUsage = function() { return {}; };\r\nvar resourceUsage = cpuUsage;\r\nvar memoryUsage = cpuUsage;\r\nvar kill = noop;\r\nvar exit = noop;\r\nvar openStdin = noop;\r\nvar allowedNodeEnvironmentFlags = {};\r\nfunction assert(condition, message) {\r\n  if (!condition) throw new Error(message || 'assertion error');\r\n}\r\nvar features = {\r\n  inspector: false,\r\n  debug: false,\r\n  uv: false,\r\n  ipv6: false,\r\n  tls_alpn: false,\r\n  tls_sni: false,\r\n  tls_ocsp: false,\r\n  tls: false,\r\n  cached_builtins: true,\r\n};\r\nvar _fatalExceptions = noop;\r\nvar setUncaughtExceptionCaptureCallback = noop;\r\nfunction hasUncaughtExceptionCaptureCallback() { return false; }var _tickCallback = noop;\r\nvar _debugProcess = noop;\r\nvar _debugEnd = noop;\r\nvar _startProfilerIdleNotifier = noop;\r\nvar _stopProfilerIdleNotifier = noop;\r\nvar stdout = undefined;\r\nvar stderr = undefined;\r\nvar stdin = undefined;\r\nvar abort = noop;\r\nvar pid = 2;\r\nvar ppid = 1;\r\nvar execPath = '/bin/usr/node';\r\nvar debugPort = 9229;\r\nvar argv0 = 'node';\r\nvar _preload_modules = [];\r\nvar setSourceMapsEnabled = noop;\r\n\r\nvar _performance = {\r\n  now: typeof performance !== 'undefined' ? performance.now.bind(performance) : undefined,\r\n  timing: typeof performance !== 'undefined' ? performance.timing : undefined,\r\n};\r\nif (_performance.now === undefined) {\r\n  var nowOffset = Date.now();\r\n\r\n  if (_performance.timing && _performance.timing.navigationStart) {\r\n    nowOffset = _performance.timing.navigationStart;\r\n  }\r\n  _performance.now = () => Date.now() - nowOffset;\r\n}\r\n\r\nfunction uptime() {\r\n  return _performance.now() / 1000;\r\n}\r\n\r\nvar nanoPerSec = 1000000000;\r\nfunction hrtime(previousTimestamp) {\r\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\r\n  var clocktime = _performance.now() * 1e-3;\r\n  var seconds = Math.floor(clocktime) + baseNow;\r\n  var nanoseconds = Math.floor((clocktime % 1) * 1e9);\r\n  if (previousTimestamp) {\r\n    seconds = seconds - previousTimestamp[0];\r\n    nanoseconds = nanoseconds - previousTimestamp[1];\r\n    if (nanoseconds < 0) {\r\n      seconds--;\r\n      nanoseconds += nanoPerSec;\r\n    }\r\n  }\r\n  return [seconds, nanoseconds];\r\n}hrtime.bigint = function(time) {\r\n  var diff = hrtime(time);\r\n  if (typeof BigInt === 'undefined') {\r\n    return diff[0] * nanoPerSec + diff[1];\r\n  }\r\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\r\n};\r\n\r\nvar _maxListeners = 10;\r\nvar _events = {};\r\nvar _eventsCount = 0;\r\nfunction on () { return process }var addListener = on;\r\nvar once = on;\r\nvar off = on;\r\nvar removeListener = on;\r\nvar removeAllListeners = on;\r\nvar emit = noop;\r\nvar prependListener = on;\r\nvar prependOnceListener = on;\r\nfunction listeners (name) { return []; }\r\nvar process = {\r\n  version,\r\n  versions,\r\n  arch,\r\n  platform,\r\n  browser,\r\n  release,\r\n  _rawDebug,\r\n  moduleLoadList,\r\n  binding,\r\n  _linkedBinding,\r\n  _events,\r\n  _eventsCount,\r\n  _maxListeners,\r\n  on,\r\n  addListener,\r\n  once,\r\n  off,\r\n  removeListener,\r\n  removeAllListeners,\r\n  emit,\r\n  prependListener,\r\n  prependOnceListener,\r\n  listeners,\r\n  domain,\r\n  _exiting,\r\n  config,\r\n  dlopen,\r\n  uptime,\r\n  _getActiveRequests,\r\n  _getActiveHandles,\r\n  reallyExit,\r\n  _kill,\r\n  cpuUsage,\r\n  resourceUsage,\r\n  memoryUsage,\r\n  kill,\r\n  exit,\r\n  openStdin,\r\n  allowedNodeEnvironmentFlags,\r\n  assert,\r\n  features,\r\n  _fatalExceptions,\r\n  setUncaughtExceptionCaptureCallback,\r\n  hasUncaughtExceptionCaptureCallback,\r\n  emitWarning,\r\n  nextTick,\r\n  _tickCallback,\r\n  _debugProcess,\r\n  _debugEnd,\r\n  _startProfilerIdleNotifier,\r\n  _stopProfilerIdleNotifier,\r\n  stdout,\r\n  stdin,\r\n  stderr,\r\n  abort,\r\n  umask,\r\n  chdir,\r\n  cwd,\r\n  env,\r\n  title,\r\n  argv,\r\n  execArgv,\r\n  pid,\r\n  ppid,\r\n  execPath,\r\n  debugPort,\r\n  hrtime,\r\n  argv0,\r\n  _preload_modules,\r\n  setSourceMapsEnabled,\r\n};\n\nexport { _debugEnd, _debugProcess, _events, _eventsCount, _exiting, _fatalExceptions, _getActiveHandles, _getActiveRequests, _kill, _linkedBinding, _maxListeners, _preload_modules, _rawDebug, _startProfilerIdleNotifier, _stopProfilerIdleNotifier, _tickCallback, abort, addListener, allowedNodeEnvironmentFlags, arch, argv, argv0, assert, binding, browser, chdir, config, cpuUsage, cwd, debugPort, process as default, dlopen, domain, emit, emitWarning, env, execArgv, execPath, exit, features, hasUncaughtExceptionCaptureCallback, hrtime, kill, listeners, memoryUsage, moduleLoadList, nextTick, off, on, once, openStdin, pid, platform, ppid, prependListener, prependOnceListener, reallyExit, release, removeAllListeners, removeListener, resourceUsage, setSourceMapsEnabled, setUncaughtExceptionCaptureCallback, stderr, stdin, stdout, title, umask, uptime, version, versions };\n","export * as process from \"process\";\n","var exports$2 = {},\n  _dewExec$2 = false;\nfunction dew$2() {\n  if (_dewExec$2) return exports$2;\n  _dewExec$2 = true;\n  exports$2.byteLength = byteLength;\n  exports$2.toByteArray = toByteArray;\n  exports$2.fromByteArray = fromByteArray;\n  var lookup = [];\n  var revLookup = [];\n  var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i = 0, len = code.length; i < len; ++i) {\n    lookup[i] = code[i];\n    revLookup[code.charCodeAt(i)] = i;\n  }\n\n  // Support decoding URL-safe base64 strings, as Node.js does.\n  // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n  function getLens(b64) {\n    var len = b64.length;\n    if (len % 4 > 0) {\n      throw new Error(\"Invalid string. Length must be a multiple of 4\");\n    }\n\n    // Trim off extra bytes after placeholder bytes are found\n    // See: https://github.com/beatgammit/base64-js/issues/42\n    var validLen = b64.indexOf(\"=\");\n    if (validLen === -1) validLen = len;\n    var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n    return [validLen, placeHoldersLen];\n  }\n\n  // base64 is 4/3 + up to two characters of the original data\n  function byteLength(b64) {\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function _byteLength(b64, validLen, placeHoldersLen) {\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function toByteArray(b64) {\n    var tmp;\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n    var curByte = 0;\n\n    // if there are placeholders, only get up to the last complete 4 chars\n    var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n    var i;\n    for (i = 0; i < len; i += 4) {\n      tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n      arr[curByte++] = tmp >> 16 & 255;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 2) {\n      tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 1) {\n      tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    return arr;\n  }\n  function tripletToBase64(num) {\n    return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n  }\n  function encodeChunk(uint8, start, end) {\n    var tmp;\n    var output = [];\n    for (var i = start; i < end; i += 3) {\n      tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n      output.push(tripletToBase64(tmp));\n    }\n    return output.join(\"\");\n  }\n  function fromByteArray(uint8) {\n    var tmp;\n    var len = uint8.length;\n    var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n    var parts = [];\n    var maxChunkLength = 16383; // must be multiple of 3\n\n    // go through the array every three bytes, we'll deal with trailing stuff later\n    for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n      parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n    }\n\n    // pad the end with zeros, but make sure to not forget the extra bytes\n    if (extraBytes === 1) {\n      tmp = uint8[len - 1];\n      parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n    } else if (extraBytes === 2) {\n      tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n      parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n    }\n    return parts.join(\"\");\n  }\n  return exports$2;\n}\n\nvar exports$1 = {},\n  _dewExec$1 = false;\nfunction dew$1() {\n  if (_dewExec$1) return exports$1;\n  _dewExec$1 = true;\n  /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n  exports$1.read = function (buffer, offset, isLE, mLen, nBytes) {\n    var e, m;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i = isLE ? nBytes - 1 : 0;\n    var d = isLE ? -1 : 1;\n    var s = buffer[offset + i];\n    i += d;\n    e = s & (1 << -nBits) - 1;\n    s >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    m = e & (1 << -nBits) - 1;\n    e >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    if (e === 0) {\n      e = 1 - eBias;\n    } else if (e === eMax) {\n      return m ? NaN : (s ? -1 : 1) * Infinity;\n    } else {\n      m = m + Math.pow(2, mLen);\n      e = e - eBias;\n    }\n    return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n  };\n  exports$1.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n    var e, m, c;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n    var i = isLE ? 0 : nBytes - 1;\n    var d = isLE ? 1 : -1;\n    var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n      m = isNaN(value) ? 1 : 0;\n      e = eMax;\n    } else {\n      e = Math.floor(Math.log(value) / Math.LN2);\n      if (value * (c = Math.pow(2, -e)) < 1) {\n        e--;\n        c *= 2;\n      }\n      if (e + eBias >= 1) {\n        value += rt / c;\n      } else {\n        value += rt * Math.pow(2, 1 - eBias);\n      }\n      if (value * c >= 2) {\n        e++;\n        c /= 2;\n      }\n      if (e + eBias >= eMax) {\n        m = 0;\n        e = eMax;\n      } else if (e + eBias >= 1) {\n        m = (value * c - 1) * Math.pow(2, mLen);\n        e = e + eBias;\n      } else {\n        m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n        e = 0;\n      }\n    }\n    for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n    e = e << mLen | m;\n    eLen += mLen;\n    for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n    buffer[offset + i - d] |= s * 128;\n  };\n  return exports$1;\n}\n\nvar exports = {},\n  _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports;\n  _dewExec = true;\n  const base64 = dew$2();\n  const ieee754 = dew$1();\n  const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" // eslint-disable-line dot-notation\n  ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n  : null;\n  exports.Buffer = Buffer;\n  exports.SlowBuffer = SlowBuffer;\n  exports.INSPECT_MAX_BYTES = 50;\n  const K_MAX_LENGTH = 2147483647;\n  exports.kMaxLength = K_MAX_LENGTH;\n\n  /**\n   * If `Buffer.TYPED_ARRAY_SUPPORT`:\n   *   === true    Use Uint8Array implementation (fastest)\n   *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n   *               implementation (most compatible, even IE6)\n   *\n   * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n   * Opera 11.6+, iOS 4.2+.\n   *\n   * We report that the browser does not support typed arrays if the are not subclassable\n   * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n   * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n   * for __proto__ and has a buggy typed array implementation.\n   */\n  Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n  if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n  }\n  function typedArraySupport() {\n    // Can typed array instances can be augmented?\n    try {\n      const arr = new Uint8Array(1);\n      const proto = {\n        foo: function () {\n          return 42;\n        }\n      };\n      Object.setPrototypeOf(proto, Uint8Array.prototype);\n      Object.setPrototypeOf(arr, proto);\n      return arr.foo() === 42;\n    } catch (e) {\n      return false;\n    }\n  }\n  Object.defineProperty(Buffer.prototype, \"parent\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.buffer;\n    }\n  });\n  Object.defineProperty(Buffer.prototype, \"offset\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.byteOffset;\n    }\n  });\n  function createBuffer(length) {\n    if (length > K_MAX_LENGTH) {\n      throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n    // Return an augmented `Uint8Array` instance\n    const buf = new Uint8Array(length);\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n\n  /**\n   * The Buffer constructor returns instances of `Uint8Array` that have their\n   * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n   * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n   * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n   * returns a single octet.\n   *\n   * The `Uint8Array` prototype remains unmodified.\n   */\n\n  function Buffer(arg, encodingOrOffset, length) {\n    // Common case.\n    if (typeof arg === \"number\") {\n      if (typeof encodingOrOffset === \"string\") {\n        throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n      }\n      return allocUnsafe(arg);\n    }\n    return from(arg, encodingOrOffset, length);\n  }\n  Buffer.poolSize = 8192; // not used by this implementation\n\n  function from(value, encodingOrOffset, length) {\n    if (typeof value === \"string\") {\n      return fromString(value, encodingOrOffset);\n    }\n    if (ArrayBuffer.isView(value)) {\n      return fromArrayView(value);\n    }\n    if (value == null) {\n      throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n    }\n    if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof value === \"number\") {\n      throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n    }\n    const valueOf = value.valueOf && value.valueOf();\n    if (valueOf != null && valueOf !== value) {\n      return Buffer.from(valueOf, encodingOrOffset, length);\n    }\n    const b = fromObject(value);\n    if (b) return b;\n    if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n      return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n    }\n    throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n  }\n\n  /**\n   * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n   * if value is a number.\n   * Buffer.from(str[, encoding])\n   * Buffer.from(array)\n   * Buffer.from(buffer)\n   * Buffer.from(arrayBuffer[, byteOffset[, length]])\n   **/\n  Buffer.from = function (value, encodingOrOffset, length) {\n    return from(value, encodingOrOffset, length);\n  };\n\n  // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n  // https://github.com/feross/buffer/pull/148\n  Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n  Object.setPrototypeOf(Buffer, Uint8Array);\n  function assertSize(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n    } else if (size < 0) {\n      throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n  }\n  function alloc(size, fill, encoding) {\n    assertSize(size);\n    if (size <= 0) {\n      return createBuffer(size);\n    }\n    if (fill !== undefined) {\n      // Only pay attention to encoding if it's a string. This\n      // prevents accidentally sending in a number that would\n      // be interpreted as a start offset.\n      return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n    }\n    return createBuffer(size);\n  }\n\n  /**\n   * Creates a new filled Buffer instance.\n   * alloc(size[, fill[, encoding]])\n   **/\n  Buffer.alloc = function (size, fill, encoding) {\n    return alloc(size, fill, encoding);\n  };\n  function allocUnsafe(size) {\n    assertSize(size);\n    return createBuffer(size < 0 ? 0 : checked(size) | 0);\n  }\n\n  /**\n   * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n   * */\n  Buffer.allocUnsafe = function (size) {\n    return allocUnsafe(size);\n  };\n  /**\n   * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n   */\n  Buffer.allocUnsafeSlow = function (size) {\n    return allocUnsafe(size);\n  };\n  function fromString(string, encoding) {\n    if (typeof encoding !== \"string\" || encoding === \"\") {\n      encoding = \"utf8\";\n    }\n    if (!Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n    const length = byteLength(string, encoding) | 0;\n    let buf = createBuffer(length);\n    const actual = buf.write(string, encoding);\n    if (actual !== length) {\n      // Writing a hex string, for example, that contains invalid characters will\n      // cause everything after the first invalid character to be ignored. (e.g.\n      // 'abxxcd' will be treated as 'ab')\n      buf = buf.slice(0, actual);\n    }\n    return buf;\n  }\n  function fromArrayLike(array) {\n    const length = array.length < 0 ? 0 : checked(array.length) | 0;\n    const buf = createBuffer(length);\n    for (let i = 0; i < length; i += 1) {\n      buf[i] = array[i] & 255;\n    }\n    return buf;\n  }\n  function fromArrayView(arrayView) {\n    if (isInstance(arrayView, Uint8Array)) {\n      const copy = new Uint8Array(arrayView);\n      return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n    }\n    return fromArrayLike(arrayView);\n  }\n  function fromArrayBuffer(array, byteOffset, length) {\n    if (byteOffset < 0 || array.byteLength < byteOffset) {\n      throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n    }\n    if (array.byteLength < byteOffset + (length || 0)) {\n      throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n    }\n    let buf;\n    if (byteOffset === undefined && length === undefined) {\n      buf = new Uint8Array(array);\n    } else if (length === undefined) {\n      buf = new Uint8Array(array, byteOffset);\n    } else {\n      buf = new Uint8Array(array, byteOffset, length);\n    }\n\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function fromObject(obj) {\n    if (Buffer.isBuffer(obj)) {\n      const len = checked(obj.length) | 0;\n      const buf = createBuffer(len);\n      if (buf.length === 0) {\n        return buf;\n      }\n      obj.copy(buf, 0, 0, len);\n      return buf;\n    }\n    if (obj.length !== undefined) {\n      if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n        return createBuffer(0);\n      }\n      return fromArrayLike(obj);\n    }\n    if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n      return fromArrayLike(obj.data);\n    }\n  }\n  function checked(length) {\n    // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n    // length is NaN (which is otherwise coerced to zero.)\n    if (length >= K_MAX_LENGTH) {\n      throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n    }\n    return length | 0;\n  }\n  function SlowBuffer(length) {\n    if (+length != length) {\n      // eslint-disable-line eqeqeq\n      length = 0;\n    }\n    return Buffer.alloc(+length);\n  }\n  Buffer.isBuffer = function isBuffer(b) {\n    return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n  };\n  Buffer.compare = function compare(a, b) {\n    if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n    if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n    if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n      throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n    }\n    if (a === b) return 0;\n    let x = a.length;\n    let y = b.length;\n    for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n      if (a[i] !== b[i]) {\n        x = a[i];\n        y = b[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n  Buffer.isEncoding = function isEncoding(encoding) {\n    switch (String(encoding).toLowerCase()) {\n      case \"hex\":\n      case \"utf8\":\n      case \"utf-8\":\n      case \"ascii\":\n      case \"latin1\":\n      case \"binary\":\n      case \"base64\":\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return true;\n      default:\n        return false;\n    }\n  };\n  Buffer.concat = function concat(list, length) {\n    if (!Array.isArray(list)) {\n      throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n    }\n    if (list.length === 0) {\n      return Buffer.alloc(0);\n    }\n    let i;\n    if (length === undefined) {\n      length = 0;\n      for (i = 0; i < list.length; ++i) {\n        length += list[i].length;\n      }\n    }\n    const buffer = Buffer.allocUnsafe(length);\n    let pos = 0;\n    for (i = 0; i < list.length; ++i) {\n      let buf = list[i];\n      if (isInstance(buf, Uint8Array)) {\n        if (pos + buf.length > buffer.length) {\n          if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n          buf.copy(buffer, pos);\n        } else {\n          Uint8Array.prototype.set.call(buffer, buf, pos);\n        }\n      } else if (!Buffer.isBuffer(buf)) {\n        throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n      } else {\n        buf.copy(buffer, pos);\n      }\n      pos += buf.length;\n    }\n    return buffer;\n  };\n  function byteLength(string, encoding) {\n    if (Buffer.isBuffer(string)) {\n      return string.length;\n    }\n    if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n      return string.byteLength;\n    }\n    if (typeof string !== \"string\") {\n      throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n    }\n    const len = string.length;\n    const mustMatch = arguments.length > 2 && arguments[2] === true;\n    if (!mustMatch && len === 0) return 0;\n\n    // Use a for loop to avoid recursion\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return len;\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8ToBytes(string).length;\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return len * 2;\n        case \"hex\":\n          return len >>> 1;\n        case \"base64\":\n          return base64ToBytes(string).length;\n        default:\n          if (loweredCase) {\n            return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n          }\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.byteLength = byteLength;\n  function slowToString(encoding, start, end) {\n    let loweredCase = false;\n\n    // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n    // property of a typed array.\n\n    // This behaves neither like String nor Uint8Array in that we set start/end\n    // to their upper/lower bounds if the value passed is out of range.\n    // undefined is handled specially as per ECMA-262 6th Edition,\n    // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n    if (start === undefined || start < 0) {\n      start = 0;\n    }\n    // Return early if start > this.length. Done here to prevent potential uint32\n    // coercion fail below.\n    if (start > this.length) {\n      return \"\";\n    }\n    if (end === undefined || end > this.length) {\n      end = this.length;\n    }\n    if (end <= 0) {\n      return \"\";\n    }\n\n    // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n    end >>>= 0;\n    start >>>= 0;\n    if (end <= start) {\n      return \"\";\n    }\n    if (!encoding) encoding = \"utf8\";\n    while (true) {\n      switch (encoding) {\n        case \"hex\":\n          return hexSlice(this, start, end);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Slice(this, start, end);\n        case \"ascii\":\n          return asciiSlice(this, start, end);\n        case \"latin1\":\n        case \"binary\":\n          return latin1Slice(this, start, end);\n        case \"base64\":\n          return base64Slice(this, start, end);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return utf16leSlice(this, start, end);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (encoding + \"\").toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n\n  // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n  // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n  // reliably in a browserify context because there could be multiple different\n  // copies of the 'buffer' package in use. This method works even for Buffer\n  // instances that were created from another copy of the `buffer` package.\n  // See: https://github.com/feross/buffer/issues/154\n  Buffer.prototype._isBuffer = true;\n  function swap(b, n, m) {\n    const i = b[n];\n    b[n] = b[m];\n    b[m] = i;\n  }\n  Buffer.prototype.swap16 = function swap16() {\n    const len = this.length;\n    if (len % 2 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n    }\n    for (let i = 0; i < len; i += 2) {\n      swap(this, i, i + 1);\n    }\n    return this;\n  };\n  Buffer.prototype.swap32 = function swap32() {\n    const len = this.length;\n    if (len % 4 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n    }\n    for (let i = 0; i < len; i += 4) {\n      swap(this, i, i + 3);\n      swap(this, i + 1, i + 2);\n    }\n    return this;\n  };\n  Buffer.prototype.swap64 = function swap64() {\n    const len = this.length;\n    if (len % 8 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n    }\n    for (let i = 0; i < len; i += 8) {\n      swap(this, i, i + 7);\n      swap(this, i + 1, i + 6);\n      swap(this, i + 2, i + 5);\n      swap(this, i + 3, i + 4);\n    }\n    return this;\n  };\n  Buffer.prototype.toString = function toString() {\n    const length = this.length;\n    if (length === 0) return \"\";\n    if (arguments.length === 0) return utf8Slice(this, 0, length);\n    return slowToString.apply(this, arguments);\n  };\n  Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n  Buffer.prototype.equals = function equals(b) {\n    if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n    if (this === b) return true;\n    return Buffer.compare(this, b) === 0;\n  };\n  Buffer.prototype.inspect = function inspect() {\n    let str = \"\";\n    const max = exports.INSPECT_MAX_BYTES;\n    str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n    if (this.length > max) str += \" ... \";\n    return \"<Buffer \" + str + \">\";\n  };\n  if (customInspectSymbol) {\n    Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n  }\n  Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n    if (isInstance(target, Uint8Array)) {\n      target = Buffer.from(target, target.offset, target.byteLength);\n    }\n    if (!Buffer.isBuffer(target)) {\n      throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n    }\n    if (start === undefined) {\n      start = 0;\n    }\n    if (end === undefined) {\n      end = target ? target.length : 0;\n    }\n    if (thisStart === undefined) {\n      thisStart = 0;\n    }\n    if (thisEnd === undefined) {\n      thisEnd = this.length;\n    }\n    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n      throw new RangeError(\"out of range index\");\n    }\n    if (thisStart >= thisEnd && start >= end) {\n      return 0;\n    }\n    if (thisStart >= thisEnd) {\n      return -1;\n    }\n    if (start >= end) {\n      return 1;\n    }\n    start >>>= 0;\n    end >>>= 0;\n    thisStart >>>= 0;\n    thisEnd >>>= 0;\n    if (this === target) return 0;\n    let x = thisEnd - thisStart;\n    let y = end - start;\n    const len = Math.min(x, y);\n    const thisCopy = this.slice(thisStart, thisEnd);\n    const targetCopy = target.slice(start, end);\n    for (let i = 0; i < len; ++i) {\n      if (thisCopy[i] !== targetCopy[i]) {\n        x = thisCopy[i];\n        y = targetCopy[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n\n  // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n  // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n  //\n  // Arguments:\n  // - buffer - a Buffer to search\n  // - val - a string, Buffer, or number\n  // - byteOffset - an index into `buffer`; will be clamped to an int32\n  // - encoding - an optional encoding, relevant is val is a string\n  // - dir - true for indexOf, false for lastIndexOf\n  function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n    // Empty buffer means no match\n    if (buffer.length === 0) return -1;\n\n    // Normalize byteOffset\n    if (typeof byteOffset === \"string\") {\n      encoding = byteOffset;\n      byteOffset = 0;\n    } else if (byteOffset > 2147483647) {\n      byteOffset = 2147483647;\n    } else if (byteOffset < -2147483648) {\n      byteOffset = -2147483648;\n    }\n    byteOffset = +byteOffset; // Coerce to Number.\n    if (numberIsNaN(byteOffset)) {\n      // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n      byteOffset = dir ? 0 : buffer.length - 1;\n    }\n\n    // Normalize byteOffset: negative offsets start from the end of the buffer\n    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n    if (byteOffset >= buffer.length) {\n      if (dir) return -1;else byteOffset = buffer.length - 1;\n    } else if (byteOffset < 0) {\n      if (dir) byteOffset = 0;else return -1;\n    }\n\n    // Normalize val\n    if (typeof val === \"string\") {\n      val = Buffer.from(val, encoding);\n    }\n\n    // Finally, search either indexOf (if dir is true) or lastIndexOf\n    if (Buffer.isBuffer(val)) {\n      // Special case: looking for empty string/buffer always fails\n      if (val.length === 0) {\n        return -1;\n      }\n      return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n    } else if (typeof val === \"number\") {\n      val = val & 255; // Search for a byte value [0-255]\n      if (typeof Uint8Array.prototype.indexOf === \"function\") {\n        if (dir) {\n          return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n        } else {\n          return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n        }\n      }\n      return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n    }\n    throw new TypeError(\"val must be string, number or Buffer\");\n  }\n  function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n    let indexSize = 1;\n    let arrLength = arr.length;\n    let valLength = val.length;\n    if (encoding !== undefined) {\n      encoding = String(encoding).toLowerCase();\n      if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n        if (arr.length < 2 || val.length < 2) {\n          return -1;\n        }\n        indexSize = 2;\n        arrLength /= 2;\n        valLength /= 2;\n        byteOffset /= 2;\n      }\n    }\n    function read(buf, i) {\n      if (indexSize === 1) {\n        return buf[i];\n      } else {\n        return buf.readUInt16BE(i * indexSize);\n      }\n    }\n    let i;\n    if (dir) {\n      let foundIndex = -1;\n      for (i = byteOffset; i < arrLength; i++) {\n        if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n          if (foundIndex === -1) foundIndex = i;\n          if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n        } else {\n          if (foundIndex !== -1) i -= i - foundIndex;\n          foundIndex = -1;\n        }\n      }\n    } else {\n      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n      for (i = byteOffset; i >= 0; i--) {\n        let found = true;\n        for (let j = 0; j < valLength; j++) {\n          if (read(arr, i + j) !== read(val, j)) {\n            found = false;\n            break;\n          }\n        }\n        if (found) return i;\n      }\n    }\n    return -1;\n  }\n  Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n    return this.indexOf(val, byteOffset, encoding) !== -1;\n  };\n  Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n  };\n  Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n  };\n  function hexWrite(buf, string, offset, length) {\n    offset = Number(offset) || 0;\n    const remaining = buf.length - offset;\n    if (!length) {\n      length = remaining;\n    } else {\n      length = Number(length);\n      if (length > remaining) {\n        length = remaining;\n      }\n    }\n    const strLen = string.length;\n    if (length > strLen / 2) {\n      length = strLen / 2;\n    }\n    let i;\n    for (i = 0; i < length; ++i) {\n      const parsed = parseInt(string.substr(i * 2, 2), 16);\n      if (numberIsNaN(parsed)) return i;\n      buf[offset + i] = parsed;\n    }\n    return i;\n  }\n  function utf8Write(buf, string, offset, length) {\n    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  function asciiWrite(buf, string, offset, length) {\n    return blitBuffer(asciiToBytes(string), buf, offset, length);\n  }\n  function base64Write(buf, string, offset, length) {\n    return blitBuffer(base64ToBytes(string), buf, offset, length);\n  }\n  function ucs2Write(buf, string, offset, length) {\n    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  Buffer.prototype.write = function write(string, offset, length, encoding) {\n    // Buffer#write(string)\n    if (offset === undefined) {\n      encoding = \"utf8\";\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, encoding)\n    } else if (length === undefined && typeof offset === \"string\") {\n      encoding = offset;\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, offset[, length][, encoding])\n    } else if (isFinite(offset)) {\n      offset = offset >>> 0;\n      if (isFinite(length)) {\n        length = length >>> 0;\n        if (encoding === undefined) encoding = \"utf8\";\n      } else {\n        encoding = length;\n        length = undefined;\n      }\n    } else {\n      throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    }\n    const remaining = this.length - offset;\n    if (length === undefined || length > remaining) length = remaining;\n    if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n      throw new RangeError(\"Attempt to write outside buffer bounds\");\n    }\n    if (!encoding) encoding = \"utf8\";\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"hex\":\n          return hexWrite(this, string, offset, length);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Write(this, string, offset, length);\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return asciiWrite(this, string, offset, length);\n        case \"base64\":\n          // Warning: maxLength not taken into account in base64Write\n          return base64Write(this, string, offset, length);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return ucs2Write(this, string, offset, length);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  };\n  Buffer.prototype.toJSON = function toJSON() {\n    return {\n      type: \"Buffer\",\n      data: Array.prototype.slice.call(this._arr || this, 0)\n    };\n  };\n  function base64Slice(buf, start, end) {\n    if (start === 0 && end === buf.length) {\n      return base64.fromByteArray(buf);\n    } else {\n      return base64.fromByteArray(buf.slice(start, end));\n    }\n  }\n  function utf8Slice(buf, start, end) {\n    end = Math.min(buf.length, end);\n    const res = [];\n    let i = start;\n    while (i < end) {\n      const firstByte = buf[i];\n      let codePoint = null;\n      let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n      if (i + bytesPerSequence <= end) {\n        let secondByte, thirdByte, fourthByte, tempCodePoint;\n        switch (bytesPerSequence) {\n          case 1:\n            if (firstByte < 128) {\n              codePoint = firstByte;\n            }\n            break;\n          case 2:\n            secondByte = buf[i + 1];\n            if ((secondByte & 192) === 128) {\n              tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n              if (tempCodePoint > 127) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 3:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n              if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 4:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            fourthByte = buf[i + 3];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n              if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n                codePoint = tempCodePoint;\n              }\n            }\n        }\n      }\n      if (codePoint === null) {\n        // we did not generate a valid codePoint so insert a\n        // replacement char (U+FFFD) and advance only 1 byte\n        codePoint = 65533;\n        bytesPerSequence = 1;\n      } else if (codePoint > 65535) {\n        // encode to utf16 (surrogate pair dance)\n        codePoint -= 65536;\n        res.push(codePoint >>> 10 & 1023 | 55296);\n        codePoint = 56320 | codePoint & 1023;\n      }\n      res.push(codePoint);\n      i += bytesPerSequence;\n    }\n    return decodeCodePointsArray(res);\n  }\n\n  // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n  // the lowest limit is Chrome, with 0x10000 args.\n  // We go 1 magnitude less, for safety\n  const MAX_ARGUMENTS_LENGTH = 4096;\n  function decodeCodePointsArray(codePoints) {\n    const len = codePoints.length;\n    if (len <= MAX_ARGUMENTS_LENGTH) {\n      return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n    }\n\n    // Decode in chunks to avoid \"call stack size exceeded\".\n    let res = \"\";\n    let i = 0;\n    while (i < len) {\n      res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n    }\n    return res;\n  }\n  function asciiSlice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i] & 127);\n    }\n    return ret;\n  }\n  function latin1Slice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i]);\n    }\n    return ret;\n  }\n  function hexSlice(buf, start, end) {\n    const len = buf.length;\n    if (!start || start < 0) start = 0;\n    if (!end || end < 0 || end > len) end = len;\n    let out = \"\";\n    for (let i = start; i < end; ++i) {\n      out += hexSliceLookupTable[buf[i]];\n    }\n    return out;\n  }\n  function utf16leSlice(buf, start, end) {\n    const bytes = buf.slice(start, end);\n    let res = \"\";\n    // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n    for (let i = 0; i < bytes.length - 1; i += 2) {\n      res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n    }\n    return res;\n  }\n  Buffer.prototype.slice = function slice(start, end) {\n    const len = this.length;\n    start = ~~start;\n    end = end === undefined ? len : ~~end;\n    if (start < 0) {\n      start += len;\n      if (start < 0) start = 0;\n    } else if (start > len) {\n      start = len;\n    }\n    if (end < 0) {\n      end += len;\n      if (end < 0) end = 0;\n    } else if (end > len) {\n      end = len;\n    }\n    if (end < start) end = start;\n    const newBuf = this.subarray(start, end);\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(newBuf, Buffer.prototype);\n    return newBuf;\n  };\n\n  /*\n   * Need to make sure that buffer isn't trying to write out of bounds.\n   */\n  function checkOffset(offset, ext, length) {\n    if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n    if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n  }\n  Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      checkOffset(offset, byteLength, this.length);\n    }\n    let val = this[offset + --byteLength];\n    let mul = 1;\n    while (byteLength > 0 && (mul *= 256)) {\n      val += this[offset + --byteLength] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    return this[offset];\n  };\n  Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] | this[offset + 1] << 8;\n  };\n  Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] << 8 | this[offset + 1];\n  };\n  Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n  };\n  Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n  };\n  Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n    const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n    return BigInt(lo) + (BigInt(hi) << BigInt(32));\n  });\n  Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n    return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  });\n  Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let i = byteLength;\n    let mul = 1;\n    let val = this[offset + --i];\n    while (i > 0 && (mul *= 256)) {\n      val += this[offset + --i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    if (!(this[offset] & 128)) return this[offset];\n    return (255 - this[offset] + 1) * -1;\n  };\n  Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset] | this[offset + 1] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset + 1] | this[offset] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n  };\n  Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n  };\n  Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n    return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n  });\n  Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = (first << 24) +\n    // Overflow\n    this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n  });\n  Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, true, 23, 4);\n  };\n  Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, false, 23, 4);\n  };\n  Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, true, 52, 8);\n  };\n  Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, false, 52, 8);\n  };\n  function checkInt(buf, value, offset, ext, max, min) {\n    if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n    if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n  }\n  Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let mul = 1;\n    let i = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  function wrtBigUInt64LE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    return offset;\n  }\n  function wrtBigUInt64BE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset + 7] = lo;\n    lo = lo >> 8;\n    buf[offset + 6] = lo;\n    lo = lo >> 8;\n    buf[offset + 5] = lo;\n    lo = lo >> 8;\n    buf[offset + 4] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset + 3] = hi;\n    hi = hi >> 8;\n    buf[offset + 2] = hi;\n    hi = hi >> 8;\n    buf[offset + 1] = hi;\n    hi = hi >> 8;\n    buf[offset] = hi;\n    return offset + 8;\n  }\n  Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = 0;\n    let mul = 1;\n    let sub = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    let sub = 0;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n    if (value < 0) value = 255 + value + 1;\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n    return offset + 4;\n  };\n  Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    if (value < 0) value = 4294967295 + value + 1;\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  function checkIEEE754(buf, value, offset, ext, max, min) {\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n    if (offset < 0) throw new RangeError(\"Index out of range\");\n  }\n  function writeFloat(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 4);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 23, 4);\n    return offset + 4;\n  }\n  Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, false, noAssert);\n  };\n  function writeDouble(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 8);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 52, 8);\n    return offset + 8;\n  }\n  Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, false, noAssert);\n  };\n\n  // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n  Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n    if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n    if (!start) start = 0;\n    if (!end && end !== 0) end = this.length;\n    if (targetStart >= target.length) targetStart = target.length;\n    if (!targetStart) targetStart = 0;\n    if (end > 0 && end < start) end = start;\n\n    // Copy 0 bytes; we're done\n    if (end === start) return 0;\n    if (target.length === 0 || this.length === 0) return 0;\n\n    // Fatal error conditions\n    if (targetStart < 0) {\n      throw new RangeError(\"targetStart out of bounds\");\n    }\n    if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n    if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n\n    // Are we oob?\n    if (end > this.length) end = this.length;\n    if (target.length - targetStart < end - start) {\n      end = target.length - targetStart + start;\n    }\n    const len = end - start;\n    if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n      // Use built-in when available, missing from IE11\n      this.copyWithin(targetStart, start, end);\n    } else {\n      Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n    }\n    return len;\n  };\n\n  // Usage:\n  //    buffer.fill(number[, offset[, end]])\n  //    buffer.fill(buffer[, offset[, end]])\n  //    buffer.fill(string[, offset[, end]][, encoding])\n  Buffer.prototype.fill = function fill(val, start, end, encoding) {\n    // Handle string cases:\n    if (typeof val === \"string\") {\n      if (typeof start === \"string\") {\n        encoding = start;\n        start = 0;\n        end = this.length;\n      } else if (typeof end === \"string\") {\n        encoding = end;\n        end = this.length;\n      }\n      if (encoding !== undefined && typeof encoding !== \"string\") {\n        throw new TypeError(\"encoding must be a string\");\n      }\n      if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n        throw new TypeError(\"Unknown encoding: \" + encoding);\n      }\n      if (val.length === 1) {\n        const code = val.charCodeAt(0);\n        if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n          // Fast path: If `val` fits into a single byte, use that numeric value.\n          val = code;\n        }\n      }\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n    } else if (typeof val === \"boolean\") {\n      val = Number(val);\n    }\n\n    // Invalid ranges are not set to a default, so can range check early.\n    if (start < 0 || this.length < start || this.length < end) {\n      throw new RangeError(\"Out of range index\");\n    }\n    if (end <= start) {\n      return this;\n    }\n    start = start >>> 0;\n    end = end === undefined ? this.length : end >>> 0;\n    if (!val) val = 0;\n    let i;\n    if (typeof val === \"number\") {\n      for (i = start; i < end; ++i) {\n        this[i] = val;\n      }\n    } else {\n      const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n      const len = bytes.length;\n      if (len === 0) {\n        throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n      }\n      for (i = 0; i < end - start; ++i) {\n        this[i + start] = bytes[i % len];\n      }\n    }\n    return this;\n  };\n\n  // CUSTOM ERRORS\n  // =============\n\n  // Simplified versions from Node, changed for Buffer-only usage\n  const errors = {};\n  function E(sym, getMessage, Base) {\n    errors[sym] = class NodeError extends Base {\n      constructor() {\n        super();\n        Object.defineProperty(this, \"message\", {\n          value: getMessage.apply(this, arguments),\n          writable: true,\n          configurable: true\n        });\n\n        // Add the error code to the name to include it in the stack trace.\n        this.name = `${this.name} [${sym}]`;\n        // Access the stack to generate the error message including the error code\n        // from the name.\n        this.stack; // eslint-disable-line no-unused-expressions\n        // Reset the name to the actual name.\n        delete this.name;\n      }\n      get code() {\n        return sym;\n      }\n      set code(value) {\n        Object.defineProperty(this, \"code\", {\n          configurable: true,\n          enumerable: true,\n          value,\n          writable: true\n        });\n      }\n      toString() {\n        return `${this.name} [${sym}]: ${this.message}`;\n      }\n    };\n  }\n  E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`;\n    }\n    return \"Attempt to access memory outside buffer bounds\";\n  }, RangeError);\n  E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n  }, TypeError);\n  E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`;\n    let received = input;\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input));\n    } else if (typeof input === \"bigint\") {\n      received = String(input);\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received);\n      }\n      received += \"n\";\n    }\n    msg += ` It must be ${range}. Received ${received}`;\n    return msg;\n  }, RangeError);\n  function addNumericalSeparator(val) {\n    let res = \"\";\n    let i = val.length;\n    const start = val[0] === \"-\" ? 1 : 0;\n    for (; i >= start + 4; i -= 3) {\n      res = `_${val.slice(i - 3, i)}${res}`;\n    }\n    return `${val.slice(0, i)}${res}`;\n  }\n\n  // CHECK FUNCTIONS\n  // ===============\n\n  function checkBounds(buf, offset, byteLength) {\n    validateNumber(offset, \"offset\");\n    if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n      boundsError(offset, buf.length - (byteLength + 1));\n    }\n  }\n  function checkIntBI(value, min, max, buf, offset, byteLength) {\n    if (value > max || value < min) {\n      const n = typeof min === \"bigint\" ? \"n\" : \"\";\n      let range;\n      {\n        if (min === 0 || min === BigInt(0)) {\n          range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n        } else {\n          range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n        }\n      }\n      throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n    }\n    checkBounds(buf, offset, byteLength);\n  }\n  function validateNumber(value, name) {\n    if (typeof value !== \"number\") {\n      throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n    }\n  }\n  function boundsError(value, length, type) {\n    if (Math.floor(value) !== value) {\n      validateNumber(value, type);\n      throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n    }\n    if (length < 0) {\n      throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n    }\n    throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n  }\n\n  // HELPER FUNCTIONS\n  // ================\n\n  const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n  function base64clean(str) {\n    // Node takes equal signs as end of the Base64 encoding\n    str = str.split(\"=\")[0];\n    // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n    str = str.trim().replace(INVALID_BASE64_RE, \"\");\n    // Node converts strings with length < 2 to ''\n    if (str.length < 2) return \"\";\n    // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n    while (str.length % 4 !== 0) {\n      str = str + \"=\";\n    }\n    return str;\n  }\n  function utf8ToBytes(string, units) {\n    units = units || Infinity;\n    let codePoint;\n    const length = string.length;\n    let leadSurrogate = null;\n    const bytes = [];\n    for (let i = 0; i < length; ++i) {\n      codePoint = string.charCodeAt(i);\n\n      // is surrogate component\n      if (codePoint > 55295 && codePoint < 57344) {\n        // last char was a lead\n        if (!leadSurrogate) {\n          // no lead yet\n          if (codePoint > 56319) {\n            // unexpected trail\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          } else if (i + 1 === length) {\n            // unpaired lead\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          }\n\n          // valid lead\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // 2 leads in a row\n        if (codePoint < 56320) {\n          if ((units -= 3) > -1) bytes.push(239, 191, 189);\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // valid surrogate pair\n        codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n      } else if (leadSurrogate) {\n        // valid bmp char, but last char was a lead\n        if ((units -= 3) > -1) bytes.push(239, 191, 189);\n      }\n      leadSurrogate = null;\n\n      // encode utf8\n      if (codePoint < 128) {\n        if ((units -= 1) < 0) break;\n        bytes.push(codePoint);\n      } else if (codePoint < 2048) {\n        if ((units -= 2) < 0) break;\n        bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n      } else if (codePoint < 65536) {\n        if ((units -= 3) < 0) break;\n        bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else if (codePoint < 1114112) {\n        if ((units -= 4) < 0) break;\n        bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else {\n        throw new Error(\"Invalid code point\");\n      }\n    }\n    return bytes;\n  }\n  function asciiToBytes(str) {\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      // Node's code seems to be doing this and not & 0x7F..\n      byteArray.push(str.charCodeAt(i) & 255);\n    }\n    return byteArray;\n  }\n  function utf16leToBytes(str, units) {\n    let c, hi, lo;\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      if ((units -= 2) < 0) break;\n      c = str.charCodeAt(i);\n      hi = c >> 8;\n      lo = c % 256;\n      byteArray.push(lo);\n      byteArray.push(hi);\n    }\n    return byteArray;\n  }\n  function base64ToBytes(str) {\n    return base64.toByteArray(base64clean(str));\n  }\n  function blitBuffer(src, dst, offset, length) {\n    let i;\n    for (i = 0; i < length; ++i) {\n      if (i + offset >= dst.length || i >= src.length) break;\n      dst[i + offset] = src[i];\n    }\n    return i;\n  }\n\n  // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n  // the `instanceof` check but they should be treated as of that type.\n  // See: https://github.com/feross/buffer/issues/166\n  function isInstance(obj, type) {\n    return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n  }\n  function numberIsNaN(obj) {\n    // For IE11 support\n    return obj !== obj; // eslint-disable-line no-self-compare\n  }\n\n  // Create lookup table for `toString('hex')`\n  // See: https://github.com/feross/buffer/issues/219\n  const hexSliceLookupTable = function () {\n    const alphabet = \"0123456789abcdef\";\n    const table = new Array(256);\n    for (let i = 0; i < 16; ++i) {\n      const i16 = i * 16;\n      for (let j = 0; j < 16; ++j) {\n        table[i16 + j] = alphabet[i] + alphabet[j];\n      }\n    }\n    return table;\n  }();\n\n  // Return not function with Error if BigInt not supported\n  function defineBigIntMethod(fn) {\n    return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n  }\n  function BufferBigIntNotDefined() {\n    throw new Error(\"BigInt not supported\");\n  }\n  return exports;\n}\n\nexport { dew as d };\n","import { d as dew } from './chunk-DtuTasat.js';\n\nconst exports = dew();\nexports['Buffer']; exports['SlowBuffer']; exports['INSPECT_MAX_BYTES']; exports['kMaxLength'];\n\nvar Buffer = exports.Buffer;\r\nvar INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;\r\nvar kMaxLength = exports.kMaxLength;\n\nexport { Buffer, INSPECT_MAX_BYTES, exports as default, kMaxLength };\n","export { Buffer } from \"buffer\";\n","export { type Config } from \"./Config.js\";\nexport { DynamicSnippetsGenerator } from \"./DynamicSnippetsGenerator.js\";\n","import {\n    AbstractAstNode,\n    AbstractDynamicSnippetsGenerator,\n    FernGeneratorExec,\n    Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator.js\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n    DynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator\n> {\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        super(new DynamicSnippetsGeneratorContext({ ir, config, options }));\n    }\n\n    public precalculate(requests: FernIr.dynamic.EndpointSnippetRequest[]): void {\n        this.context.precalculate(requests);\n    }\n\n    public override async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        return super.generate(request, options);\n    }\n\n    public override generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        return super.generateSync(request, options);\n    }\n\n    public override async generateSnippetAst(request: FernIr.dynamic.EndpointSnippetRequest): Promise<AbstractAstNode> {\n        return super.generateSnippetAst(request);\n    }\n\n    protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n        return new EndpointSnippetGenerator({ context });\n    }\n}\n","// Force cache invalidation for CI - server URL templating feature\nexport { addPrefixToString } from \"./addPrefixToString.js\";\nexport { applyOpenAPIOverlay, type Overlay, type OverlayAction } from \"./applyOpenAPIOverlay.js\";\nexport {\n    assert,\n    assertDefined,\n    assertNever,\n    assertNeverNoThrow,\n    assertNonNull,\n    assertString,\n    assertVoidNoThrow\n} from \"./assert.js\";\nexport { delay } from \"./delay/delay.js\";\nexport { withMinimumTime } from \"./delay/withMinimumTime.js\";\nexport { EMPTY_ARRAY, EMPTY_OBJECT } from \"./empty.js\";\nexport * as Examples from \"./examples.js\";\nexport { extractErrorMessage } from \"./extractErrorMessage.js\";\nexport { getDuplicates } from \"./getDuplicates.js\";\nexport { identity } from \"./identity.js\";\nexport { isNonNullish } from \"./isNonNullish.js\";\nexport { MediaType } from \"./mediaType.js\";\nexport { mergeWithOverrides } from \"./mergeWithOverrides.js\";\nexport { noop } from \"./noop.js\";\nexport {\n    haveSameNullishness,\n    nullIfNullish,\n    nullIfSomeNullish,\n    undefinedIfNullish,\n    undefinedIfSomeNullish\n} from \"./nullishUtils.js\";\nexport { type ObjectPropertiesVisitor, visitObject, visitObjectAsync } from \"./ObjectPropertiesVisitor.js\";\nexport { type Entries, entries } from \"./objects/entries.js\";\nexport { isPlainObject } from \"./objects/isPlainObject.js\";\nexport { keys } from \"./objects/keys.js\";\nexport { mapValues } from \"./objects/mapValues.js\";\nexport { type Values, values } from \"./objects/values.js\";\nexport { parseEndpointLocator } from \"./parseEndpointLocator.js\";\nexport { PLATFORM, type Platform } from \"./platform.js\";\nexport { removeSuffix } from \"./removeSuffix.js\";\nexport { replaceEnvVariables } from \"./replaceEnvVars.js\";\nexport { SymbolRegistry, type SymbolRegistryOptions } from \"./SymbolRegistry.js\";\nexport { sanitizeChangelogEntry } from \"./sanitizeChangelogEntry.js\";\nexport { SKIP_MARKER, sanitizeNullValues } from \"./sanitizeNullValues.js\";\nexport { diffSemverOrThrow, parseSemverOrThrow } from \"./semverUtils.js\";\nexport { type SetRequired } from \"./setRequired.js\";\nexport { stripLeadingSlash } from \"./stripLeadingSlash.js\";\nexport { titleCase } from \"./titleCase.js\";\nexport type { ContainerRunner, Digit, Letter, LowercaseLetter, UppercaseLetter } from \"./types.js\";\nexport { validateAgainstJsonSchema } from \"./validateAgainstJsonSchema.js\";\nexport { visitDiscriminatedUnion } from \"./visitDiscriminatedUnion.js\";\nexport type { WithoutQuestionMarks } from \"./withoutQuestionMarks.js\";\n","/**\n * @license\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"es\" --repo lodash/lodash#4.18.1 -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nexport { default as add } from './add.js';\nexport { default as after } from './after.js';\nexport { default as ary } from './ary.js';\nexport { default as assign } from './assign.js';\nexport { default as assignIn } from './assignIn.js';\nexport { default as assignInWith } from './assignInWith.js';\nexport { default as assignWith } from './assignWith.js';\nexport { default as at } from './at.js';\nexport { default as attempt } from './attempt.js';\nexport { default as before } from './before.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as bindKey } from './bindKey.js';\nexport { default as camelCase } from './camelCase.js';\nexport { default as capitalize } from './capitalize.js';\nexport { default as castArray } from './castArray.js';\nexport { default as ceil } from './ceil.js';\nexport { default as chain } from './chain.js';\nexport { default as chunk } from './chunk.js';\nexport { default as clamp } from './clamp.js';\nexport { default as clone } from './clone.js';\nexport { default as cloneDeep } from './cloneDeep.js';\nexport { default as cloneDeepWith } from './cloneDeepWith.js';\nexport { default as cloneWith } from './cloneWith.js';\nexport { default as commit } from './commit.js';\nexport { default as compact } from './compact.js';\nexport { default as concat } from './concat.js';\nexport { default as cond } from './cond.js';\nexport { default as conforms } from './conforms.js';\nexport { default as conformsTo } from './conformsTo.js';\nexport { default as constant } from './constant.js';\nexport { default as countBy } from './countBy.js';\nexport { default as create } from './create.js';\nexport { default as curry } from './curry.js';\nexport { default as curryRight } from './curryRight.js';\nexport { default as debounce } from './debounce.js';\nexport { default as deburr } from './deburr.js';\nexport { default as defaultTo } from './defaultTo.js';\nexport { default as defaults } from './defaults.js';\nexport { default as defaultsDeep } from './defaultsDeep.js';\nexport { default as defer } from './defer.js';\nexport { default as delay } from './delay.js';\nexport { default as difference } from './difference.js';\nexport { default as differenceBy } from './differenceBy.js';\nexport { default as differenceWith } from './differenceWith.js';\nexport { default as divide } from './divide.js';\nexport { default as drop } from './drop.js';\nexport { default as dropRight } from './dropRight.js';\nexport { default as dropRightWhile } from './dropRightWhile.js';\nexport { default as dropWhile } from './dropWhile.js';\nexport { default as each } from './each.js';\nexport { default as eachRight } from './eachRight.js';\nexport { default as endsWith } from './endsWith.js';\nexport { default as entries } from './entries.js';\nexport { default as entriesIn } from './entriesIn.js';\nexport { default as eq } from './eq.js';\nexport { default as escape } from './escape.js';\nexport { default as escapeRegExp } from './escapeRegExp.js';\nexport { default as every } from './every.js';\nexport { default as extend } from './extend.js';\nexport { default as extendWith } from './extendWith.js';\nexport { default as fill } from './fill.js';\nexport { default as filter } from './filter.js';\nexport { default as find } from './find.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findKey } from './findKey.js';\nexport { default as findLast } from './findLast.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as findLastKey } from './findLastKey.js';\nexport { default as first } from './first.js';\nexport { default as flatMap } from './flatMap.js';\nexport { default as flatMapDeep } from './flatMapDeep.js';\nexport { default as flatMapDepth } from './flatMapDepth.js';\nexport { default as flatten } from './flatten.js';\nexport { default as flattenDeep } from './flattenDeep.js';\nexport { default as flattenDepth } from './flattenDepth.js';\nexport { default as flip } from './flip.js';\nexport { default as floor } from './floor.js';\nexport { default as flow } from './flow.js';\nexport { default as flowRight } from './flowRight.js';\nexport { default as forEach } from './forEach.js';\nexport { default as forEachRight } from './forEachRight.js';\nexport { default as forIn } from './forIn.js';\nexport { default as forInRight } from './forInRight.js';\nexport { default as forOwn } from './forOwn.js';\nexport { default as forOwnRight } from './forOwnRight.js';\nexport { default as fromPairs } from './fromPairs.js';\nexport { default as functions } from './functions.js';\nexport { default as functionsIn } from './functionsIn.js';\nexport { default as get } from './get.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as gt } from './gt.js';\nexport { default as gte } from './gte.js';\nexport { default as has } from './has.js';\nexport { default as hasIn } from './hasIn.js';\nexport { default as head } from './head.js';\nexport { default as identity } from './identity.js';\nexport { default as inRange } from './inRange.js';\nexport { default as includes } from './includes.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as initial } from './initial.js';\nexport { default as intersection } from './intersection.js';\nexport { default as intersectionBy } from './intersectionBy.js';\nexport { default as intersectionWith } from './intersectionWith.js';\nexport { default as invert } from './invert.js';\nexport { default as invertBy } from './invertBy.js';\nexport { default as invoke } from './invoke.js';\nexport { default as invokeMap } from './invokeMap.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isArrayLike } from './isArrayLike.js';\nexport { default as isArrayLikeObject } from './isArrayLikeObject.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isBuffer } from './isBuffer.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isEqualWith } from './isEqualWith.js';\nexport { default as isError } from './isError.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isInteger } from './isInteger.js';\nexport { default as isLength } from './isLength.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isMatchWith } from './isMatchWith.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isNative } from './isNative.js';\nexport { default as isNil } from './isNil.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isObject } from './isObject.js';\nexport { default as isObjectLike } from './isObjectLike.js';\nexport { default as isPlainObject } from './isPlainObject.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isSafeInteger } from './isSafeInteger.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isString } from './isString.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isWeakSet } from './isWeakSet.js';\nexport { default as iteratee } from './iteratee.js';\nexport { default as join } from './join.js';\nexport { default as kebabCase } from './kebabCase.js';\nexport { default as keyBy } from './keyBy.js';\nexport { default as keys } from './keys.js';\nexport { default as keysIn } from './keysIn.js';\nexport { default as last } from './last.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as lodash } from './wrapperLodash.js';\nexport { default as lowerCase } from './lowerCase.js';\nexport { default as lowerFirst } from './lowerFirst.js';\nexport { default as lt } from './lt.js';\nexport { default as lte } from './lte.js';\nexport { default as map } from './map.js';\nexport { default as mapKeys } from './mapKeys.js';\nexport { default as mapValues } from './mapValues.js';\nexport { default as matches } from './matches.js';\nexport { default as matchesProperty } from './matchesProperty.js';\nexport { default as max } from './max.js';\nexport { default as maxBy } from './maxBy.js';\nexport { default as mean } from './mean.js';\nexport { default as meanBy } from './meanBy.js';\nexport { default as memoize } from './memoize.js';\nexport { default as merge } from './merge.js';\nexport { default as mergeWith } from './mergeWith.js';\nexport { default as method } from './method.js';\nexport { default as methodOf } from './methodOf.js';\nexport { default as min } from './min.js';\nexport { default as minBy } from './minBy.js';\nexport { default as mixin } from './mixin.js';\nexport { default as multiply } from './multiply.js';\nexport { default as negate } from './negate.js';\nexport { default as next } from './next.js';\nexport { default as noop } from './noop.js';\nexport { default as now } from './now.js';\nexport { default as nth } from './nth.js';\nexport { default as nthArg } from './nthArg.js';\nexport { default as omit } from './omit.js';\nexport { default as omitBy } from './omitBy.js';\nexport { default as once } from './once.js';\nexport { default as orderBy } from './orderBy.js';\nexport { default as over } from './over.js';\nexport { default as overArgs } from './overArgs.js';\nexport { default as overEvery } from './overEvery.js';\nexport { default as overSome } from './overSome.js';\nexport { default as pad } from './pad.js';\nexport { default as padEnd } from './padEnd.js';\nexport { default as padStart } from './padStart.js';\nexport { default as parseInt } from './parseInt.js';\nexport { default as partial } from './partial.js';\nexport { default as partialRight } from './partialRight.js';\nexport { default as partition } from './partition.js';\nexport { default as pick } from './pick.js';\nexport { default as pickBy } from './pickBy.js';\nexport { default as plant } from './plant.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as pull } from './pull.js';\nexport { default as pullAll } from './pullAll.js';\nexport { default as pullAllBy } from './pullAllBy.js';\nexport { default as pullAllWith } from './pullAllWith.js';\nexport { default as pullAt } from './pullAt.js';\nexport { default as random } from './random.js';\nexport { default as range } from './range.js';\nexport { default as rangeRight } from './rangeRight.js';\nexport { default as rearg } from './rearg.js';\nexport { default as reduce } from './reduce.js';\nexport { default as reduceRight } from './reduceRight.js';\nexport { default as reject } from './reject.js';\nexport { default as remove } from './remove.js';\nexport { default as repeat } from './repeat.js';\nexport { default as replace } from './replace.js';\nexport { default as rest } from './rest.js';\nexport { default as result } from './result.js';\nexport { default as reverse } from './reverse.js';\nexport { default as round } from './round.js';\nexport { default as sample } from './sample.js';\nexport { default as sampleSize } from './sampleSize.js';\nexport { default as set } from './set.js';\nexport { default as setWith } from './setWith.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as size } from './size.js';\nexport { default as slice } from './slice.js';\nexport { default as snakeCase } from './snakeCase.js';\nexport { default as some } from './some.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as sortedIndexBy } from './sortedIndexBy.js';\nexport { default as sortedIndexOf } from './sortedIndexOf.js';\nexport { default as sortedLastIndex } from './sortedLastIndex.js';\nexport { default as sortedLastIndexBy } from './sortedLastIndexBy.js';\nexport { default as sortedLastIndexOf } from './sortedLastIndexOf.js';\nexport { default as sortedUniq } from './sortedUniq.js';\nexport { default as sortedUniqBy } from './sortedUniqBy.js';\nexport { default as split } from './split.js';\nexport { default as spread } from './spread.js';\nexport { default as startCase } from './startCase.js';\nexport { default as startsWith } from './startsWith.js';\nexport { default as stubArray } from './stubArray.js';\nexport { default as stubFalse } from './stubFalse.js';\nexport { default as stubObject } from './stubObject.js';\nexport { default as stubString } from './stubString.js';\nexport { default as stubTrue } from './stubTrue.js';\nexport { default as subtract } from './subtract.js';\nexport { default as sum } from './sum.js';\nexport { default as sumBy } from './sumBy.js';\nexport { default as tail } from './tail.js';\nexport { default as take } from './take.js';\nexport { default as takeRight } from './takeRight.js';\nexport { default as takeRightWhile } from './takeRightWhile.js';\nexport { default as takeWhile } from './takeWhile.js';\nexport { default as tap } from './tap.js';\nexport { default as template } from './template.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as throttle } from './throttle.js';\nexport { default as thru } from './thru.js';\nexport { default as times } from './times.js';\nexport { default as toArray } from './toArray.js';\nexport { default as toFinite } from './toFinite.js';\nexport { default as toInteger } from './toInteger.js';\nexport { default as toIterator } from './toIterator.js';\nexport { default as toJSON } from './toJSON.js';\nexport { default as toLength } from './toLength.js';\nexport { default as toLower } from './toLower.js';\nexport { default as toNumber } from './toNumber.js';\nexport { default as toPairs } from './toPairs.js';\nexport { default as toPairsIn } from './toPairsIn.js';\nexport { default as toPath } from './toPath.js';\nexport { default as toPlainObject } from './toPlainObject.js';\nexport { default as toSafeInteger } from './toSafeInteger.js';\nexport { default as toString } from './toString.js';\nexport { default as toUpper } from './toUpper.js';\nexport { default as transform } from './transform.js';\nexport { default as trim } from './trim.js';\nexport { default as trimEnd } from './trimEnd.js';\nexport { default as trimStart } from './trimStart.js';\nexport { default as truncate } from './truncate.js';\nexport { default as unary } from './unary.js';\nexport { default as unescape } from './unescape.js';\nexport { default as union } from './union.js';\nexport { default as unionBy } from './unionBy.js';\nexport { default as unionWith } from './unionWith.js';\nexport { default as uniq } from './uniq.js';\nexport { default as uniqBy } from './uniqBy.js';\nexport { default as uniqWith } from './uniqWith.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as unset } from './unset.js';\nexport { default as unzip } from './unzip.js';\nexport { default as unzipWith } from './unzipWith.js';\nexport { default as update } from './update.js';\nexport { default as updateWith } from './updateWith.js';\nexport { default as upperCase } from './upperCase.js';\nexport { default as upperFirst } from './upperFirst.js';\nexport { default as value } from './value.js';\nexport { default as valueOf } from './valueOf.js';\nexport { default as values } from './values.js';\nexport { default as valuesIn } from './valuesIn.js';\nexport { default as without } from './without.js';\nexport { default as words } from './words.js';\nexport { default as wrap } from './wrap.js';\nexport { default as wrapperAt } from './wrapperAt.js';\nexport { default as wrapperChain } from './wrapperChain.js';\nexport { default as wrapperCommit } from './commit.js';\nexport { default as wrapperLodash } from './wrapperLodash.js';\nexport { default as wrapperNext } from './next.js';\nexport { default as wrapperPlant } from './plant.js';\nexport { default as wrapperReverse } from './wrapperReverse.js';\nexport { default as wrapperToIterator } from './toIterator.js';\nexport { default as wrapperValue } from './wrapperValue.js';\nexport { default as xor } from './xor.js';\nexport { default as xorBy } from './xorBy.js';\nexport { default as xorWith } from './xorWith.js';\nexport { default as zip } from './zip.js';\nexport { default as zipObject } from './zipObject.js';\nexport { default as zipObjectDeep } from './zipObjectDeep.js';\nexport { default as zipWith } from './zipWith.js';\nexport { default } from './lodash.default.js';\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nexport default createCompounder;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduce;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default basePropertyOf;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nexport default words;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","/**\n * Asserts that a condition is truthy, throwing an exception with the specified message if it is falsy.\n */\nexport function assert(condition: unknown, message?: string): asserts condition {\n    if (!condition) {\n        throw new Error(message ?? \"Expected condition to be truthy but got falsy.\");\n    }\n}\n\nexport function assertDefined<T>(val: T, message?: string): asserts val is Exclude<T, undefined> {\n    if (val === undefined) {\n        throw new Error(message ?? \"Expected value to be defined but got undefined.\");\n    }\n}\n\nexport function assertNonNull<T>(val: T, message?: string): asserts val is Exclude<T, null> {\n    if (val === null) {\n        throw new Error(message ?? \"Expected value to be non-null but got null.\");\n    }\n}\n\nexport function assertString(val: unknown, message?: string): asserts val is string {\n    if (typeof val !== \"string\") {\n        throw new Error(message ?? `Expected value to be a string but got ${typeof val}.`);\n    }\n}\n\nexport function assertNever(x: never): never {\n    throw new Error(\"Unexpected value: \" + JSON.stringify(x));\n}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertNeverNoThrow(_: never): void {}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertVoidNoThrow(_x: void): void {}\n","export function keys<T extends object>(object: T): (keyof T)[] {\n    return Object.keys(object) as (keyof T)[];\n}\n","export { AbstractAstNode } from \"./AbstractAstNode.js\";\nexport { AbstractFormatter, NopFormatter } from \"./AbstractFormatter.js\";\nexport { AbstractWriter } from \"./AbstractWriter.js\";\nexport {\n    type Argument,\n    type Arguments,\n    hasNamedArgument,\n    isNamedArgument,\n    type NamedArgument,\n    type UnnamedArgument\n} from \"./Argument.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Ternary } from \"./Ternary.js\";\n","import { tag } from \"../utils/stacktrace.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport abstract class AbstractAstNode {\n    /**\n     * Every AST node knows how to write itself to a string.\n     */\n    public abstract write(writer: AbstractWriter): void;\n\n    public constructor() {\n        // when FERN_STACK_TRACK is defined this will track the stack trace of the current AstNode.\n        // otherwise this has absolutely no effect whatsoever.\n        tag(this);\n    }\n}\n","/**\n * Global flag that enables or disables stack tracing functionality throughout the application.\n * This is controlled via the FERN_STACK_TRACK environment variable.\n *\n * When enabled (truthy environment variable value), stack traces will be captured and processed\n * by the stacktrace functions in this module. When disabled, the stacktrace() function returns\n * an empty array for performance optimization.\n *\n * @example\n * // Enable tracing by setting the environment variable\n * // FERN_STACK_TRACK=1 <cmdline>\n */\nconst key = process.env[\"FERN_STACK_TRACK\"]?.toLowerCase() ?? \"\";\n\nexport const enableStackTracking = key !== \"\" && key !== \"0\" && key !== \"false\";\n\n/** The style of comments desired for the stack tracking comments\n *\n * can be \"single\", \"multiline\", or \"box\".\n * if not set to one of those, defaults to \"single\".\n */\nexport const trackingType = [\"single\", \"multiline\", \"box\"].includes(key) ? key : \"single\";\n\nif (enableStackTracking) {\n    // we're going to put a hard max limit on the stack trace to prevent infinite recursion and excessive stack generation\n    Error.stackTraceLimit = 50;\n}\n\n/**\n * Configuration options for controlling stack trace capture and filtering behavior.\n */\ninterface StackTraceOptions {\n    /**\n     * Maximum number of stack frames to return after filtering.\n     *\n     * Maximum may never exceed 50.\n     * @default 50\n     */\n    maxFrames?: number;\n\n    /**\n     * Number of frames to skip from the beginning of the filtered stack trace.\n     * Useful for omitting wrapper functions from the output.\n     * @default 0\n     */\n    skip?: number;\n\n    /**\n     * Array of function name substrings that trigger an early stop when encountered.\n     * When a frame's function name includes any of these strings, that frame and all\n     * subsequent frames will be excluded from the output.\n     *\n     * implicitly includes \"runInteractiveTask\"\n     * @default []\n     */\n    stopOn?: string[];\n\n    /**\n     * Array of file path substrings to filter out. Any frame whose path contains\n     * any of these strings will be excluded from the output.\n     * @default []\n     */\n    filterPaths?: string[];\n\n    /**\n     * Array of function name substrings to filter out. Any frame whose function name\n     * contains any of these strings will be excluded from the output.\n     *\n     * implicitly includes \"SdkGeneratorCLI\", \"runCli\",\"Frames.trace\",\"Frames.tag\", \"at\", \"stacktrace\"\n     * @default []\n     */\n    filterFunctions?: string[];\n\n    /**\n     * Whether to filter out Node.js internal frames (paths starting with \"node:\").\n     * @default true\n     */\n    filterNode?: boolean;\n\n    /**\n     * Whether to filter out .js files, which typically indicate non-source files\n     * without source map information.\n     * @default true\n     */\n    filterJs?: boolean;\n\n    /**\n     * A function to format the file path of the stack trace frame.\n     * @default (filename) => filename\n     */\n    formatFilename?: (filename: string) => string;\n}\n\n/**\n * Represents a single parsed stack trace frame containing function, file path, and position information.\n */\nexport interface StackTraceFrame {\n    /**\n     * The function name or context. May include special formatting like \"alias()=> { ... }\"\n     * for certain Object methods, or be an empty string for anonymous contexts.\n     */\n    fn: string;\n\n    /**\n     * The file path where this frame originated. This will typically be the full path\n     * to the source file.\n     */\n    path: string;\n\n    /**\n     * The line and column position in the format \"line:column\" (e.g., \"42:13\").\n     */\n    position: string;\n}\n\nconst globalFunctionFilters = new Set<string>([\"SdkGeneratorCLI\", \"runCli\", \"LoggerImpl\", \"Array.forEach\"]);\nconst globalFileFilters = new Set<string>([\"stacktrace\"]);\n\n/**\n * Adds a function name to the global function filters for stack traces\n * @param filter - The function name to add to the global function filters.\n */\nexport function addGlobalFunctionFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFunctionFilters.add(filter);\n    }\n}\n\n/**\n * Adds a file path to the global file filters for stack traces.\n * @param filter - The file path to add to the global file filters.\n */\nexport function addGlobalFileFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFileFilters.add(filter);\n    }\n}\n\n/**\n * Captures and parses the current call stack, returning an array of stack frames with filtering options.\n *\n * This function creates a new Error object to capture the stack trace, then parses each frame\n * to extract function names, file paths, and positions. It applies multiple filtering strategies\n * to exclude unwanted frames (e.g., Node.js internals, .js files, specific functions).\n *\n * The function only operates when `enableStackTracking` is true. If tracing is disabled, it returns\n * an empty array for performance optimization.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns Array of parsed stack trace frames, filtered and limited according to the options\n *\n * @example\n * // Capture the first 10 frames, skipping the first 2\n * const frames = stacktrace({ maxFrames: 10, skip: 2 });\n *\n * @example\n * // Capture frames until hitting \"main\" function, filter out test files\n * const frames = stacktrace({\n *   stopOn: [\"main\"],\n *   filterPaths: [\"/test/\"],\n *   filterFunctions: [\"runTests\"]\n * });\n *\n * @remarks\n * The function applies filters in the following order:\n * 1. Parses each stack frame using regex to extract function, path, line, and column\n * 2. Applies early-stop logic when encountering functions in the `stopOn` array\n * 3. Formats special function names (e.g., \"Object.alias\" → \"alias()=> { ... }\")\n * 4. Filters out:\n *    - The stacktrace function itself (\"at\", \"stacktrace\")\n *    - Functions matching `filterFunctions` (substring match)\n *    - Node.js internal frames (if `filterNode` is true)\n *    - .js files (if `filterJs` is true)\n *    - Paths matching `filterPaths` (substring match)\n * 5. Applies `skip` and `maxFrames` to limit the output\n */\nexport function stacktrace({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    formatFilename = (filename) => filename\n}: StackTraceOptions = {}): StackTraceFrame[] {\n    if (!enableStackTracking) {\n        return [];\n    }\n    filterFunctions = [...filterFunctions, ...globalFunctionFilters];\n    filterPaths = [...filterPaths, ...globalFileFilters];\n    stopOn = [...stopOn, \"runInteractiveTask\"];\n    let stop = false;\n    return (\n        (new Error().stack ?? \"\")\n            .split(\"\\n\")\n            .map((line) => {\n                const match = line.match(/at\\s+(.*)\\s+\\((.*):(\\d+):(\\d+)\\)/);\n                if (match && match.length === 5) {\n                    let [, fn, path, line, column] = match;\n                    if (!fn || !path || !line || !column) {\n                        return undefined;\n                    }\n\n                    if (stop || stopOn.some((s) => fn?.includes(s))) {\n                        stop = true;\n                        return undefined;\n                    }\n\n                    switch (fn) {\n                        case \"Object.<anonymous>\":\n                            fn = \"\";\n                            break;\n                        case \"Object.object\":\n                        case \"Object.alias\":\n                        case \"Object.union\":\n                        case \"Object.enum\":\n                        case \"Object.undiscriminatedUnion\":\n                            fn = `${fn.substring(fn.indexOf(\".\") + 1)}()=> { ... }`;\n                            break;\n                    }\n                    return {\n                        fn,\n                        path: formatFilename(path),\n                        position: `${line}:${column}`\n                    } as StackTraceFrame;\n                }\n                return undefined;\n            })\n            .filter(\n                (each) =>\n                    each &&\n                    !filterFunctions.some((f) => each.fn.includes(f)) && // substring match for filter functions\n                    !(filterNode && each.path?.startsWith(\"node:\")) && // starts with node:\n                    !(filterJs && each.path?.endsWith(\".js\")) && // ends with .js (meaning likely not a source file - no source map info)\n                    !filterPaths.some((p) => each.path.includes(p)) // substring match for filter paths\n            ) as StackTraceFrame[]\n    ).slice(skip, skip + maxFrames);\n}\n\n/**\n * Returns a formatted stack trace string at the current location for debugging purposes.\n *\n * This is a convenience function that wraps `stacktrace()` and formats the output as a\n * human-readable string. It's particularly useful for logging or debugging to understand\n * the execution flow and call hierarchy.\n *\n * The function supports both single-line and multi-line output formats. Single-line format\n * concatenates all frames into one line (useful for compact logging), while multi-line format\n * adds newlines and indentation for better readability.\n *\n * @param options - Configuration options for stack trace capture, filtering, and formatting\n * @param options.multiline - Whether to format the output with newlines and indentation.\n *                            When true, each frame is on its own line with 4-space indent.\n *                            When false (default), all frames are concatenated on one line.\n * @returns A formatted string containing the stack trace information, prefixed with \"stacktrace - \"\n *\n * @example\n * // Single-line format (compact)\n * console.log(at());\n * // Output: \"stacktrace - myFunction - /path/to/file.ts:42:13anotherFunc - /path/to/other.ts:17:5\"\n *\n * @example\n * // Multi-line format (readable)\n * console.log(at({ multiline: true, maxFrames: 5 }));\n * // Output:\n * // stacktrace -\n * //     myFunction - /path/to/file.ts:42:13\n * //     anotherFunc - /path/to/other.ts:17:5\n * //     main - /path/to/index.ts:10:1\n *\n * @example\n * // Custom filtering for specific use case\n * console.log(at({\n *   maxFrames: 10,\n *   skip: 1,\n *   filterPaths: [\"foo.ts\"],\n *   multiline: true\n * }));\n *\n * @remarks\n * This function automatically skips itself from the stack trace output by default.\n * The \"at\" function name is filtered by the underlying `stacktrace()` function.\n */\nexport function at({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [\"runInteractiveTask\"],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}): string {\n    return enableStackTracking\n        ? `${stacktrace({ maxFrames, skip, filterPaths, filterFunctions, stopOn, filterNode, filterJs, formatFilename })\n              .map((each) => `${multiline ? \"\\n    \" : \" > \"}${each.fn} - ${each.path}:${each.position}`)\n              .join(\"\")}`\n        : \"\";\n}\n\n/** This class allows the developer to attach stack trace information to objects  */\nexport class StackTraces {\n    private readonly maxFrames: number;\n    private readonly skip: number;\n    private readonly filterPaths: string[];\n    private readonly filterFunctions: string[];\n    private readonly stopOn: string[];\n    private readonly filterNode: boolean;\n    private readonly filterJs: boolean;\n    private readonly multiline: boolean;\n    private readonly formatFilename: (filename: string) => string;\n    private tracking = new WeakMap<object, Set<StackTraceFrame>>();\n\n    constructor({\n        maxFrames = 50,\n        skip = 0,\n        filterPaths = [],\n        filterFunctions = [],\n        stopOn = [],\n        filterNode = true,\n        filterJs = true,\n        multiline = false,\n        formatFilename = (filename) => filename\n    }: StackTraceOptions & { multiline?: boolean } = {}) {\n        this.maxFrames = maxFrames;\n        this.skip = skip;\n        this.filterPaths = filterPaths;\n        this.filterFunctions = filterFunctions;\n        this.stopOn = stopOn;\n        this.filterNode = filterNode;\n        this.filterJs = filterJs;\n        this.multiline = multiline;\n        this.formatFilename = formatFilename;\n    }\n\n    /**\n     * Tags the current stack trace with the given object.\n     *\n     * This can be called multiple times to add more stack trace information to the object.\n     *\n     * @param obj - The object to tag the stack trace with.\n     */\n    tag(obj: object): void {\n        const current = this.tracking.get(obj) || new Set<StackTraceFrame>();\n        stacktrace({\n            maxFrames: this.maxFrames,\n            skip: this.skip,\n            filterPaths: this.filterPaths,\n            filterFunctions: this.filterFunctions,\n            stopOn: this.stopOn,\n            filterNode: this.filterNode,\n            filterJs: this.filterJs,\n            formatFilename: this.formatFilename\n        }).forEach((frame) => current.add(frame));\n        this.tracking.set(obj, current);\n    }\n\n    /**\n     * Returns a formatted stack trace string for the given object.\n     * @param obj - The object to get the stack trace for.\n     * @returns A formatted string containing the stack trace information.\n     */\n    trace(obj: object): string {\n        if (!enableStackTracking) {\n            return \"\";\n        }\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return \"\";\n        }\n\n        return [...frames]\n            .map((each) => `${this.multiline ? \"\\n    \" : \"\"}${each.fn} - ${each.path}:${each.position}`)\n            .join(\"\");\n    }\n\n    /**\n     * Gets the stack trace frames for the given object.\n     *\n     * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n     *       Otherwise this will return an empty array.\n     *\n     * @param obj - The object to get the stack trace frames for.\n     * @returns The stack trace frames for the given object.\n     */\n    frames(obj: object): StackTraceFrame[] {\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return [];\n        }\n        return [...frames];\n    }\n\n    /**\n     * Frees the stack trace information for the given object.\n     * @param obj - The object to free the stack trace information for.\n     */\n    free(obj: object): void {\n        this.tracking.delete(obj);\n    }\n\n    /**\n     * Clears all stack trace information.\n     */\n    clear(): void {\n        this.tracking = new WeakMap<object, Set<StackTraceFrame>>();\n    }\n}\n\nlet stackTraces: StackTraces | undefined;\n/**\n * Starts tracking the stack trace of the current object.\n *\n * Note: This will only start tracking when FERN_STACK_TRACK is defined.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns The stack traces object.\n */\nexport function startTracking({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}) {\n    if (!enableStackTracking) {\n        return;\n    }\n    stackTraces ??= new StackTraces({\n        maxFrames,\n        skip,\n        filterPaths,\n        filterFunctions,\n        stopOn,\n        filterNode,\n        filterJs,\n        multiline,\n        formatFilename\n    });\n}\n\n/**\n * Tags the current stack trace with the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to tag the stack trace with.\n */\nexport function tag(obj: object) {\n    stackTraces?.tag(obj);\n}\n\n/**\n * Returns a formatted stack trace string for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to get the stack trace for.\n * @returns A formatted string containing the stack trace information.\n */\nexport function trace(obj: object) {\n    return stackTraces?.trace(obj) ?? \"\";\n}\n\n/**\n * Frees the stack trace information for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to free the stack trace information for.\n */\nexport function free(obj: object) {\n    stackTraces?.free(obj);\n}\n\n/**\n * Gets the stack trace frames for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will return an empty array.\n *\n * @param obj - The object to get the stack trace frames for.\n * @returns The stack trace frames for the given object.\n */\nexport function getFramesForTaggedObject(obj: object): StackTraceFrame[] {\n    return stackTraces?.frames(obj) ?? [];\n}\n","import { enableStackTracking } from \"../utils/index.js\";\nimport {\n    getFramesForTaggedObject,\n    StackTraceFrame,\n    stacktrace,\n    startTracking,\n    trackingType\n} from \"../utils/stacktrace.js\";\nimport { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\n\nconst TAB_SIZE = 4;\n// this will start tracking only when FERN_STACK_TRACK is defined\n// otherwise this has absolutely no effect whatsoever.\nstartTracking({ skip: 0, maxFrames: 15, filterFunctions: [\"Abstract\"] });\n\nexport class AbstractWriter {\n    /* The buffer of lines being written */\n    protected readonly lineBuffer: string[] = [];\n\n    /* The contents being written */\n    public get buffer() {\n        if (enableStackTracking && this.nodeStackFrames.length > 0) {\n            // if we're emitting tracking comments, let's ensure we get the last little bit of info.\n            // by appending a newline to the buffer before returning it.\n            // (this can be useful when using toString() to get a node's content.)\n            this.writeInternal(\"\\n\");\n        }\n        return this.lineBuffer.join(\"\\n\") + (this.lastCharacterIsNewline ? \"\\n\" : \"\");\n    }\n\n    /* Indentation level (multiple of 4) */\n    private indentLevel = 0;\n    /* Whether anything has been written to the buffer */\n    private hasWrittenAnything = false;\n    /* Whether the last character written was a semi colon */\n    private lastCharacterIsSemicolon = false;\n    /* Whether the last character written was a newline */\n    private lastCharacterIsNewline = false;\n    /* The stack traces associated with the current node */\n    private nodeStackFrames: StackTraceFrame[] = [];\n\n    /**\n     * Writes arbitrary text and nodes\n     * @param text\n     */\n    public write(...parts: (string | AbstractAstNode | undefined)[]): void {\n        for (const text of parts) {\n            if (text != null) {\n                if (typeof text === \"string\") {\n                    const textEndsInNewline = text.length > 0 && text.endsWith(\"\\n\");\n                    // temporarily remove the trailing newline, since we don't want to add the indent prefix after it\n                    const textWithoutNewline = textEndsInNewline ? text.substring(0, text.length - 1) : text;\n\n                    const indent = this.getIndentString();\n                    let indentedText = textWithoutNewline.replaceAll(\"\\n\", `\\n${indent}`);\n                    if (this.isAtStartOfLine()) {\n                        indentedText = indent + indentedText;\n                    }\n                    if (textEndsInNewline) {\n                        indentedText += \"\\n\";\n                    }\n                    this.writeInternal(indentedText);\n                } else {\n                    this.writeNode(text);\n                }\n            }\n        }\n    }\n\n    public writeStatement(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...parts);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes arbitrary text without indentation\n     * @param text\n     */\n    public writeNoIndent(text: string): void {\n        const currIndentLevel = this.indentLevel;\n        this.indentLevel = 0;\n        this.write(text);\n        this.indentLevel = currIndentLevel;\n    }\n\n    /**\n     * Writes a node\n     * @param node\n     */\n    public writeNode(node: AbstractAstNode): void {\n        if (enableStackTracking) {\n            this.nodeStackFrames.push(...getFramesForTaggedObject(node));\n        }\n        node.write(this);\n\n        // if we're using box or multiline comments, write a newline after every node so it emits a comment for the node\n        // since we're dumping a lot of data anyway, might as well be explicit about it.\n        if (enableStackTracking && trackingType !== \"single\") {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    /**\n     * Writes a node or string\n     * @param input\n     */\n    public writeNodeOrString(input: AbstractAstNode | string): void {\n        if (typeof input === \"string\") {\n            this.write(input);\n            return;\n        }\n\n        this.writeNode(input);\n    }\n\n    /**\n     * Writes a node but then suffixes with a `;` and new line\n     * @param node\n     */\n    public writeNodeStatement(node: AbstractAstNode): void {\n        this.writeNode(node);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes text but then suffixes with a `;`\n     * @param node\n     */\n    public writeTextStatement(text: string): void {\n        const codeBlock = new CodeBlock(text);\n        codeBlock.write(this);\n        if (!text.endsWith(\";\")) {\n            this.write(\";\");\n        }\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlow(prefix: string, statement: AbstractAstNode): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlowWithoutStatement(prefix: string): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    /**\n     * Ends a control flow block\n     */\n    public endControlFlow(): void {\n        this.popScope();\n    }\n\n    /**\n     * Starts a control flow without a newline from the previous control flow block\n     * @param prefix\n     * @param statement\n     */\n    public contiguousControlFlow(prefix: string, statement: AbstractAstNode): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow alternative block\n     * @param prefix\n     */\n    public alternativeControlFlow(prefix: string): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    public pushScope() {\n        this.writeLine(\"{\");\n        this.indent();\n    }\n\n    public popScope(withNewline = true) {\n        this.dedent();\n        this.writeNewLineIfLastLineNot();\n        if (withNewline) {\n            this.writeLine(\"}\");\n        } else {\n            this.write(\"}\");\n        }\n    }\n\n    /* Only writes a newline if last line in the buffer is not a newline */\n    public writeLine(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...(parts.length === 0 ? [\"\"] : parts));\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /* Always writes newline */\n    public newLine(): void {\n        this.writeInternal(\"\\n\");\n    }\n\n    public writeSemicolonIfLastCharacterIsNot(): void {\n        if (!this.lastCharacterIsSemicolon) {\n            this.writeInternal(\";\");\n        }\n    }\n\n    public writeNewLineIfLastLineNot(): void {\n        if (!this.lastCharacterIsNewline) {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    public indent(): void {\n        this.indentLevel++;\n    }\n\n    public dedent(): void {\n        this.indentLevel--;\n    }\n\n    public delimit<T extends AbstractAstNode>({\n        nodes,\n        delimiter,\n        writeFunction\n    }: {\n        nodes: T[];\n        delimiter: string;\n        writeFunction: (node: T) => void;\n    }): void {\n        if (nodes.length > 0) {\n            const firstNode = nodes[0];\n            if (firstNode != null) {\n                writeFunction(firstNode);\n            }\n            for (let i = 1; i < nodes.length; i++) {\n                this.write(delimiter);\n                const node = nodes[i];\n                if (node != null) {\n                    writeFunction(node);\n                }\n            }\n        }\n    }\n\n    public toString(): string {\n        return this.buffer;\n    }\n\n    /*******************************\n     * Helper Methods\n     *******************************/\n    private writeInternal(text: string) {\n        if (text.length === 0) {\n            return;\n        }\n\n        const appendToLastLine = !this.lastCharacterIsNewline;\n\n        this.hasWrittenAnything = true;\n        this.lastCharacterIsNewline = text.endsWith(\"\\n\");\n        this.lastCharacterIsSemicolon = text.endsWith(\";\");\n\n        const lines = text.split(\"\\n\");\n\n        const appendTrackingComment =\n            enableStackTracking && !this.shouldSkipTracking(lines) && this.lastCharacterIsNewline;\n\n        if (appendToLastLine) {\n            this.lastLine = `${this.lastLine}${lines.shift() || \"\"}`;\n        }\n\n        if (this.lastCharacterIsNewline) {\n            lines.pop();\n        }\n\n        this.lineBuffer.push(...lines);\n\n        if (appendTrackingComment) {\n            this.appendTrackingComment();\n        }\n    }\n\n    /**\n     * Sets the last line of the buffer\n     * @param line - The line to set\n     */\n    protected set lastLine(line: string) {\n        if (this.lineBuffer.length > 0) {\n            this.lineBuffer[this.lineBuffer.length - 1] = line;\n        } else {\n            this.lineBuffer.push(line);\n        }\n    }\n\n    /**\n     * Gets the last line of the buffer\n     * @returns The last line of the buffer\n     */\n    protected get lastLine() {\n        return this.lineBuffer[this.lineBuffer.length - 1] || \"\";\n    }\n\n    /**\n     * Determines if the tracking comment should be skipped\n     * @param lines - The that are being written out\n     *\n     * @returns True if the tracking comment should be skipped\n     */\n    protected shouldSkipTracking(lines: string[]) {\n        return false;\n    }\n\n    /**\n     * Formats the stack trace frames into a string\n     * @param stack - The stack trace to format\n     * @param prefix - The prefix to add to the stack trace\n     * @returns The formatted stack trace\n     */\n    protected formatStack(stack: StackTraceFrame[], prefix = \"\") {\n        return stack.map((each) => `${prefix ? `(${prefix}) ` : \"\"} ${each.fn} - ${each.path} : ${each.position}`);\n    }\n\n    /**\n     * Filters out frames that start with the name of the current class\n     *\n     * This will filter out frames that start with the name of the current class that inherits from AbstractWriter.\n     *\n     * You can override this function to filter out more things.\n     * @param stack - The stack trace to filter\n     * @returns The filtered stack trace\n     */\n    protected filterStack(stack: StackTraceFrame[]) {\n        return stack.filter((each) => !each.fn.startsWith(`${this.constructor.name}.`));\n    }\n\n    /**\n     * Prepares the stack trace and calls the appropriate tracking comment formatter\n     */\n    protected appendTrackingComment() {\n        const stack = [\n            // adds the stack frames of the current function call\n            ...this.formatStack(this.filterStack(stacktrace({ maxFrames: 15, skip: 3 }))),\n\n            // adds the stack frames of any AstNodes that have been written since the last tracking comment\n            ...this.formatStack(this.filterStack(this.nodeStackFrames), \"node\")\n        ];\n        // reset the ast node stack frames\n        this.nodeStackFrames.length = 0;\n\n        switch (trackingType) {\n            case \"single\":\n                return this.singleLineTrackingComment(stack);\n\n            case \"multiline\":\n                return this.multiLineTrackingComment(stack);\n\n            case \"box\":\n                return this.boxTrackingComment(stack);\n        }\n    }\n\n    /**\n     * Creates a single line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected singleLineTrackingComment(stack: string[]) {\n        this.lastLine = `${this.lastLine} // ${stack.join(\" \")}`;\n    }\n    /**\n     * Creates a multi line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected multiLineTrackingComment(stack: string[]) {\n        this.lineBuffer.push(...stack.map((each) => `    // ${each}`));\n    }\n    /**\n     * Creates a box tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected boxTrackingComment(stack: string[]) {\n        this.lineBuffer.push(\"/*\", ...stack.map((each) => `    ${each}`), \"*/\");\n    }\n\n    private isAtStartOfLine(): boolean {\n        return this.lastCharacterIsNewline || !this.hasWrittenAnything;\n    }\n\n    private getIndentString(): string {\n        return \" \".repeat(this.indentLevel * this.getTabSize());\n    }\n\n    protected getTabSize(): number {\n        return TAB_SIZE;\n    }\n}\n","export { getPackageName } from \"./getPackageName.js\";\nexport { getSdkVersion } from \"./getSdkVersion.js\";\nexport {\n    addGlobalFileFilter,\n    addGlobalFunctionFilter,\n    at,\n    enableStackTracking,\n    getFramesForTaggedObject,\n    StackTraces,\n    stacktrace\n} from \"./stacktrace.js\";\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg<T extends AbstractWriter> = string | AbstractAstNode | ((writer: T) => void);\n}\n\nexport class CodeBlock<T extends AbstractWriter> extends AbstractAstNode {\n    private value: CodeBlock.Arg<T>;\n\n    constructor(value: CodeBlock.Arg<T>) {\n        super();\n        this.value = value;\n    }\n\n    public write(writer: T): void {\n        if (typeof this.value === \"string\") {\n            writer.write(this.value);\n            // if function\n        } else if (typeof this.value === \"function\") {\n            this.value(writer);\n        } else {\n            this.value.write(writer);\n        }\n    }\n}\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\n\nexport type Argument = NamedArgument | UnnamedArgument;\n\nexport type Arguments = NamedArgument[] | UnnamedArgument[];\n\nexport interface NamedArgument {\n    name: string;\n    assignment: AbstractAstNode | string;\n    docs?: string;\n}\n\nexport type UnnamedArgument = AbstractAstNode;\n\nexport function isNamedArgument(argument: NamedArgument | UnnamedArgument): argument is NamedArgument {\n    return (argument as NamedArgument)?.name != null && (argument as NamedArgument)?.assignment != null;\n}\n\nexport function hasNamedArgument(arguments_: Arguments): boolean {\n    return arguments_.length > 0 && arguments_[0] != null && isNamedArgument(arguments_[0]);\n}\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport declare namespace Ternary {\n    interface Args {\n        /* The condition to check */\n        condition: AbstractAstNode;\n        /* The true expression */\n        true_: AbstractAstNode;\n        /* The false expression */\n        false_: AbstractAstNode;\n    }\n}\n\nexport class Ternary extends AbstractAstNode {\n    private condition: AbstractAstNode;\n    private true_: AbstractAstNode;\n    private false_: AbstractAstNode;\n\n    constructor({ condition, true_, false_ }: Ternary.Args) {\n        super();\n\n        this.condition = condition;\n        this.true_ = true_;\n        this.false_ = false_;\n    }\n\n    public write(writer: AbstractWriter): void {\n        writer.writeNode(this.condition);\n        writer.write(\" ? \");\n        writer.writeNode(this.true_);\n        writer.write(\" : \");\n        writer.writeNode(this.false_);\n    }\n}\n","export { AbstractDynamicSnippetsGenerator } from \"./AbstractDynamicSnippetsGenerator.js\";\nexport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nexport { type DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nexport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nexport { type Options, Style } from \"./Options.js\";\nexport { Result } from \"./Result.js\";\nexport { Scope } from \"./Scope.js\";\nexport { type TypeInstance } from \"./TypeInstance.js\";\nexport { DynamicSnippetsTestRunner } from \"./test-utils/DynamicSnippetsTestRunner.js\";\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { AbstractAstNode } from \"../ast/index.js\";\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { AbstractEndpointSnippetGenerator } from \"./AbstractEndpointSnippetGenerator.js\";\nimport { Options } from \"./Options.js\";\nimport { Result } from \"./Result.js\";\n\nexport abstract class AbstractDynamicSnippetsGenerator<\n    Context extends AbstractDynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator extends AbstractEndpointSnippetGenerator<Context>\n> {\n    public constructor(public readonly context: Context) {}\n\n    protected abstract createSnippetGenerator(context: Context): EndpointSnippetGenerator;\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = await snippetGenerator.generateSnippet({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<AbstractAstNode> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        let lastError: Error | undefined = undefined;\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const ast = await snippetGenerator.generateSnippetAst({ endpoint, request, options });\n                return ast;\n            } catch (error) {\n                lastError = error as Error;\n            }\n        }\n        if (lastError != null) {\n            throw lastError;\n        }\n        throw new Error(\n            `Failed to generate snippet AST for endpoint: ${request.endpoint.method} ${request.endpoint.path}`\n        );\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = snippetGenerator.generateSnippetSync({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    /**\n     * Resolves endpoints based on the request and options.\n     * If an endpointId is specified in options, returns only that specific endpoint.\n     * Otherwise, resolves all endpoints matching the endpoint location (method + path).\n     */\n    private resolveEndpoints({\n        request,\n        options\n    }: {\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): FernIr.dynamic.Endpoint[] {\n        if (options.endpointId != null) {\n            const endpoint = this.context.resolveEndpointById(options.endpointId);\n            if (endpoint == null) {\n                throw new Error(`No endpoint found with ID \"${options.endpointId}\"`);\n            }\n            return [endpoint];\n        }\n        return this.context.resolveEndpointLocationOrThrow(request.endpoint);\n    }\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { ErrorReporter } from \"./ErrorReporter.js\";\n\nexport class Result {\n    public reporter: ErrorReporter | undefined;\n    public snippet: string | undefined;\n    public err: Error | undefined;\n\n    constructor() {\n        this.snippet = undefined;\n        this.reporter = undefined;\n        this.err = undefined;\n    }\n\n    public update({ context, snippet }: { context: AbstractDynamicSnippetsGeneratorContext; snippet: string }): void {\n        if (this.shouldUpdate({ snippet, reporter: context.errors })) {\n            this.reporter = context.errors.clone();\n            this.snippet = snippet;\n        }\n    }\n\n    public getResponseOrThrow({\n        endpoint\n    }: {\n        endpoint: FernIr.dynamic.EndpointLocation;\n    }): FernIr.dynamic.EndpointSnippetResponse {\n        if (this.snippet != null && this.reporter != null) {\n            return {\n                snippet: this.snippet,\n                errors: this.reporter.toDynamicSnippetErrors()\n            };\n        }\n        throw this.err ?? new Error(`Failed to generate snippet for endpoint \"${endpoint.method} ${endpoint.path}\"`);\n    }\n\n    private shouldUpdate({ snippet, reporter }: { snippet: string; reporter: ErrorReporter }): boolean {\n        if (this.reporter == null || (this.reporter.size() > 0 && reporter.size() === 0)) {\n            return true;\n        }\n        return snippet.length > (this.snippet?.length ?? 0);\n    }\n}\n","import { assertNever, keys } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { HttpEndpointReferenceParser } from \"@fern-api/fern-definition-schema\";\n\nimport { FernGeneratorExec } from \"../GeneratorNotificationService.js\";\nimport { DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nimport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nimport { Options } from \"./Options.js\";\nimport { TypeInstance } from \"./TypeInstance.js\";\n\nexport abstract class AbstractDynamicSnippetsGeneratorContext {\n    public config: FernGeneratorExec.GeneratorConfig;\n    public options: Options;\n    public errors: ErrorReporter;\n\n    private _ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    private httpEndpointReferenceParser: HttpEndpointReferenceParser;\n\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        this._ir = ir;\n        this.config = config;\n        this.options = options;\n        this.errors = new ErrorReporter();\n        this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n    }\n\n    public abstract clone(): AbstractDynamicSnippetsGeneratorContext;\n\n    public associateQueryParametersByWireValue({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    throw this.newParameterNotRecognizedError(key);\n                }\n                // If this query parameter supports allow-multiple, the user-provided values\n                // must be wrapped in an array.\n                const typeInstanceValue =\n                    this.isListTypeReference(parameter.typeReference) && !Array.isArray(value) ? [value] : value;\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value: typeInstanceValue\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    public associateByWireValueOrDefault({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            this.errors.scope(parameter.name.wireValue);\n            try {\n                let value = values[parameter.name.wireValue];\n\n                if (value == null) {\n                    if (parameter.typeReference.type === \"primitive\" && parameter.typeReference.value === \"STRING\") {\n                        // synthesize a parameter value for string parameters that are missing data\n                        value = `<${parameter.name.wireValue}>`;\n                    } else {\n                        this.errors.add({\n                            severity: Severity.Critical,\n                            message: this.newParameterNotRecognizedError(parameter.name.wireValue).message\n                        });\n                        continue;\n                    }\n                }\n\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n\n        return instances;\n    }\n\n    public associateByWireValue({\n        parameters,\n        values,\n        ignoreMissingParameters\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n        ignoreMissingParameters?: boolean;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    if (ignoreMissingParameters) {\n                        // Required for request payloads that include more information than\n                        // just the target parameters (e.g. union base properties).\n                        continue;\n                    }\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: this.newParameterNotRecognizedError(key).message\n                    });\n                    continue;\n                }\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    /**\n     * Similar to `associateByWireValue` but it builds TypeInstance objects by iterating over schema parameters rather\n     * than snippet values. Skips non-nullable parameters that are missing from the snippet object.\n     */\n    public getExampleObjectProperties({\n        parameters,\n        snippetObject\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        snippetObject: unknown;\n    }): TypeInstance[] {\n        const objectRecord = (\n            typeof snippetObject === \"object\" && snippetObject !== null && !Array.isArray(snippetObject)\n                ? snippetObject\n                : {}\n        ) as Record<string, unknown>;\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            const value = objectRecord[parameter.name.wireValue];\n            if (value == null) {\n                if (parameter.typeReference.type === \"nullable\") {\n                    instances.push({\n                        name: parameter.name,\n                        typeReference: parameter.typeReference,\n                        value: null\n                    });\n                }\n            } else {\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            }\n        }\n        return instances;\n    }\n\n    public getSingleFileValue({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): string | undefined {\n        const fileValue = record[property.wireValue];\n        if (fileValue == null) {\n            return undefined;\n        }\n        if (typeof fileValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file value to be a string, got ${typeof fileValue}`\n            });\n            return undefined;\n        }\n        return fileValue;\n    }\n\n    public getFileArrayValues({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): string[] | undefined {\n        const fileArrayValue = record[property.wireValue];\n        if (fileArrayValue == null) {\n            return undefined;\n        }\n        if (!Array.isArray(fileArrayValue)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file array value to be an array of strings, got ${typeof fileArrayValue}`\n            });\n            return undefined;\n        }\n        const stringValues: string[] = [];\n        for (const value of fileArrayValue) {\n            if (typeof value !== \"string\") {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message: `Expected file array value to be an array of strings, got ${typeof value}`\n                });\n                return undefined;\n            }\n            stringValues.push(value);\n        }\n        return stringValues;\n    }\n\n    public getRecord(value: unknown): Record<string, unknown> | undefined {\n        if (typeof value !== \"object\" || Array.isArray(value)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object with key, value pairs but got: ${\n                    Array.isArray(value) ? \"array\" : typeof value\n                }`\n            });\n            return undefined;\n        }\n        if (value == null) {\n            return {};\n        }\n        return value as Record<string, unknown>;\n    }\n\n    public resolveNamedType({ typeId }: { typeId: FernIr.dynamic.TypeId }): FernIr.dynamic.NamedType | undefined {\n        const namedType = this._ir.types[typeId];\n        if (namedType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Type identified by \"${typeId}\" could not be found`\n            });\n            return undefined;\n        }\n        return namedType;\n    }\n\n    public resolveDiscriminatedUnionTypeInstance({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): DiscriminatedUnionTypeInstance | undefined {\n        const record = this.getRecord(value);\n        if (record == null) {\n            return undefined;\n        }\n\n        const discriminantFieldName = discriminatedUnion.discriminant.wireValue;\n        const discriminantValue = record[discriminantFieldName];\n        if (discriminantValue == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newParameterNotRecognizedError(discriminantFieldName).message\n            });\n            return undefined;\n        }\n        if (typeof discriminantValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected discriminant value to be a string but got: ${typeof discriminantValue}`\n            });\n            return undefined;\n        }\n\n        const singleDiscriminatedUnionType = discriminatedUnion.types[discriminantValue];\n        if (singleDiscriminatedUnionType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `No type found for discriminant value \"${discriminantValue}\"`\n            });\n            return undefined;\n        }\n\n        // Remove the discriminant from the record so that the value is valid for the type.\n        const { [discriminantFieldName]: _, ...filtered } = record;\n\n        return {\n            singleDiscriminatedUnionType,\n            discriminantValue: singleDiscriminatedUnionType.discriminantValue,\n            value: filtered\n        };\n    }\n\n    public resolveEndpointOrThrow(rawEndpoint: string): FernIr.dynamic.Endpoint[] {\n        const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(rawEndpoint);\n        if (parsedEndpoint == null) {\n            throw new Error(`Failed to parse endpoint reference \"${rawEndpoint}\"`);\n        }\n        return this.resolveEndpointLocationOrThrow(parsedEndpoint);\n    }\n\n    public resolveEndpointLocation(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints: FernIr.dynamic.Endpoint[] = [];\n        for (const endpoint of Object.values(this._ir.endpoints)) {\n            if (this.parsedEndpointMatches({ endpoint, parsedEndpoint: location })) {\n                endpoints.push(endpoint);\n            }\n        }\n\n        return endpoints;\n    }\n\n    public resolveEndpointLocationOrThrow(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints = this.resolveEndpointLocation(location);\n        if (endpoints.length === 0) {\n            throw new Error(`Failed to find endpoint identified by \"${location.method} ${location.path}\"`);\n        }\n        return endpoints;\n    }\n\n    public resolveEndpointById(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint | undefined {\n        return this._ir.endpoints[endpointId];\n    }\n\n    public resolveEndpointByIdOrThrow(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint {\n        const endpoint = this.resolveEndpointById(endpointId);\n        if (endpoint == null) {\n            throw new Error(`Failed to find endpoint with ID \"${endpointId}\"`);\n        }\n        return endpoint;\n    }\n\n    public needsRequestParameter({\n        request,\n        inlinePathParameters,\n        inlineFileProperties\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n        inlineFileProperties: boolean;\n    }): boolean {\n        if (this.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n            return true;\n        }\n        if (request.queryParameters != null && request.queryParameters.length > 0) {\n            return true;\n        }\n        if (request.headers != null && request.headers.length > 0) {\n            return true;\n        }\n        if (request.body != null) {\n            return this.includeRequestBodyInWrappedRequest({ body: request.body, inlineFileProperties });\n        }\n        if (request.metadata?.onlyPathParameters) {\n            return false;\n        }\n        return true;\n    }\n\n    public includePathParametersInWrappedRequest({\n        request,\n        inlinePathParameters\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n    }): boolean {\n        return inlinePathParameters && (request.metadata?.includePathParameters ?? false);\n    }\n\n    public isFileUploadRequestBody(\n        body: FernIr.dynamic.InlinedRequestBody\n    ): body is FernIr.dynamic.InlinedRequestBody.FileUpload {\n        switch (body.type) {\n            case \"fileUpload\":\n                return true;\n            case \"properties\":\n            case \"referenced\":\n                return false;\n            default:\n                assertNever(body);\n        }\n    }\n\n    public resolveEnvironmentName(environmentID: string): FernIr.Name | undefined {\n        if (this._ir.environments == null) {\n            return undefined;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            case \"multipleBaseUrls\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            default:\n                assertNever(environments);\n        }\n    }\n\n    public isSingleEnvironmentID(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.EnvironmentId {\n        return typeof environment === \"string\";\n    }\n\n    public isMultiEnvironmentValues(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n        return typeof environment === \"object\";\n    }\n\n    public validateMultiEnvironmentUrlValues(\n        multiEnvironmentUrlValues: FernIr.dynamic.MultipleEnvironmentUrlValues\n    ): boolean {\n        if (this._ir.environments == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message:\n                    \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n            });\n            return false;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message:\n                        \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n                });\n                return false;\n            }\n            case \"multipleBaseUrls\": {\n                const firstEnvironment = environments.environments[0];\n                if (firstEnvironment == null) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Multiple environments are not supported; use the baseUrl option instead\"\n                    });\n                    return false;\n                }\n                const expectedKeys = new Set(keys(firstEnvironment.urls));\n                for (const key of keys(multiEnvironmentUrlValues)) {\n                    if (expectedKeys.has(key)) {\n                        expectedKeys.delete(key);\n                    }\n                }\n                if (expectedKeys.size > 0) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: `The provided environments are invalid; got: [${Object.keys(multiEnvironmentUrlValues).join(\", \")}], expected: [${keys(firstEnvironment.urls).join(\", \")}]`\n                    });\n                    return false;\n                }\n                return true;\n            }\n        }\n    }\n\n    public getValueAsNumber({ value }: { value: unknown }): number | undefined {\n        if (typeof value !== \"number\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"number\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsBoolean({ value }: { value: unknown }): boolean | undefined {\n        if (typeof value !== \"boolean\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"boolean\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsString({ value }: { value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"string\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return this.isOptional(typeReference.value);\n            case \"optional\":\n                return true;\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public isNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return true;\n            case \"optional\":\n                return this.isNullable(typeReference.value);\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public newAuthMismatchError({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): Error {\n        return new Error(`Expected auth type ${auth.type}, got ${values.type}`);\n    }\n\n    public newParameterNotRecognizedError(parameterName: string): Error {\n        return new Error(`\"${parameterName}\" is not a recognized parameter for this endpoint`);\n    }\n\n    public newTypeMismatchError({ expected, value }: { expected: string; value: unknown }): Error {\n        return new Error(`Expected ${expected}, got ${typeof value}`);\n    }\n\n    private includeRequestBodyInWrappedRequest({\n        body,\n        inlineFileProperties\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        switch (body.type) {\n            case \"properties\":\n            case \"referenced\":\n                return true;\n            case \"fileUpload\":\n                return this.includeFileUploadBodyInWrappedRequest({ fileUpload: body, inlineFileProperties });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private includeFileUploadBodyInWrappedRequest({\n        fileUpload,\n        inlineFileProperties\n    }: {\n        fileUpload: FernIr.dynamic.FileUploadRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        return (\n            this.fileUploadHasBodyProperties({ fileUpload }) ||\n            (inlineFileProperties && this.fileUploadHasFileProperties({ fileUpload }))\n        );\n    }\n\n    private fileUploadHasBodyProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return false;\n                case \"bodyProperty\":\n                    return true;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private fileUploadHasFileProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return true;\n                case \"bodyProperty\":\n                    return false;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private isListTypeReference(typeReference: FernIr.dynamic.TypeReference): boolean {\n        if (typeReference.type === \"optional\") {\n            return this.isListTypeReference(typeReference.value);\n        }\n        return typeReference.type === \"list\" || typeReference.type === \"set\";\n    }\n\n    private parsedEndpointMatches({\n        endpoint,\n        parsedEndpoint\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        parsedEndpoint: { method: string; path: string; namespace?: string };\n    }): boolean {\n        return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n    }\n}\n","export { EXAMPLE_REFERENCE_PREFIX, YAML_SCHEMA_VERSION } from \"./constants.js\";\nexport { type NodePath, type NodePathItem } from \"./NodePath.js\";\nexport * as RawSchemas from \"./schemas/index.js\";\nexport { type DefinitionFileSchema, type PackageMarkerFileSchema, type RootApiFileSchema } from \"./schemas/index.js\";\nexport * from \"./utils/auth/index.js\";\nexport * from \"./utils/generics/index.js\";\nexport { getRequestBody } from \"./utils/getRequestBody.js\";\nexport { getResponseBodyType } from \"./utils/getResponseBodyType.js\";\nexport { HttpEndpointReferenceParser } from \"./utils/HttpEndpointReferenceParser.js\";\nexport { isInlineRequestBody } from \"./utils/isInlineRequestBody.js\";\nexport { isOpenApiSourceSchema } from \"./utils/isOpenApiSourceSchema.js\";\nexport { isRawProtobufSourceSchema } from \"./utils/isRawProtobufSourceSchema.js\";\nexport { isRawTextType } from \"./utils/isRawTextType.js\";\nexport { type BytesRequest, parseBytesRequest } from \"./utils/parseBytesRequest.js\";\nexport { parseFileUploadRequest, type RawFileUploadRequest } from \"./utils/parseFileUploadRequest.js\";\nexport { parseRawBytesType, type RawBytesType } from \"./utils/parseRawBytesType.js\";\nexport { parseRawFileType, type RawFileType } from \"./utils/parseRawFileType.js\";\nexport { parseRawTextType, type RawTextType } from \"./utils/parseRawTextType.js\";\nexport { RawPrimitiveType } from \"./utils/RawPrimitiveType.js\";\nexport { recursivelyVisitRawTypeReference } from \"./utils/recursivelyVisitRawTypeReference.js\";\nexport { visitExampleCodeSampleSchema } from \"./utils/visitExampleCodeSampleSchema.js\";\nexport { type ExampleResponseSchemaVisitor, visitExampleResponseSchema } from \"./utils/visitExampleResponseSchema.js\";\nexport {\n    isAnyAuthSchemes,\n    isSingleAuthScheme,\n    type RawApiAuthVisitor,\n    visitRawApiAuth\n} from \"./utils/visitRawApiAuth.js\";\nexport {\n    type AuthSchemeDeclarationVisitor,\n    isHeaderAuthScheme,\n    visitRawAuthSchemeDeclaration\n} from \"./utils/visitRawAuthSchemeDeclaration.js\";\nexport {\n    isRawMultipleBaseUrlsEnvironment,\n    isRawSingleBaseUrlEnvironment,\n    visitRawEnvironmentDeclaration\n} from \"./utils/visitRawEnvironmentDeclaration.js\";\nexport {\n    isVariablePathParameter,\n    type PathParameterDeclarationVisitor,\n    visitRawPathParameter\n} from \"./utils/visitRawPathParameter.js\";\nexport {\n    isRawAliasDefinition,\n    isRawDiscriminatedUnionDefinition,\n    isRawEnumDefinition,\n    isRawObjectDefinition,\n    isRawUndiscriminatedUnionDefinition,\n    type RawTypeDeclarationVisitor,\n    visitRawTypeDeclaration\n} from \"./utils/visitRawTypeDeclaration.js\";\nexport { FernContainerRegex, visitRawTypeReference } from \"./utils/visitRawTypeReference.js\";\n","export declare namespace HttpEndpointReferenceParser {\n    interface Parsed {\n        path: string;\n        method: Method;\n        namespace: string | undefined;\n    }\n\n    type Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\";\n\n    export type ValidationResult = Valid | Invalid;\n\n    interface Valid {\n        type: \"valid\";\n    }\n\n    interface Invalid {\n        type: \"invalid\";\n    }\n}\n\n/**\n * Parses an HTTP endpoint reference like `POST /users/get` or `namespace::POST /users/get`\n */\nexport class HttpEndpointReferenceParser {\n    //eslint-disable-next-line\n    private REFERENCE_REGEX = /^(?:(\\w+)::)?(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n\n    public validate(reference: string): HttpEndpointReferenceParser.ValidationResult {\n        const validFormat = this.REFERENCE_REGEX.test(reference);\n        if (!validFormat) {\n            return { type: \"invalid\" };\n        }\n        return { type: \"valid\" };\n    }\n\n    public tryParse(reference: string): HttpEndpointReferenceParser.Parsed | undefined {\n        const validationResponse = this.validate(reference);\n        if (validationResponse.type === \"invalid\") {\n            return undefined;\n        }\n        const match = reference.match(this.REFERENCE_REGEX);\n        if (match == null || match[2] == null || match[3] == null) {\n            return undefined;\n        }\n        return {\n            namespace: match[1], // undefined if no namespace prefix\n            method: match[2] as HttpEndpointReferenceParser.Method,\n            path: match[3]\n        };\n    }\n}\n","export const Severity = {\n    Critical: \"CRITICAL\",\n    Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n    type Path = readonly PathItem[];\n\n    type PathItem = string | ArrayPathItem;\n\n    type Severity = (typeof Severity)[keyof typeof Severity];\n\n    interface ArrayPathItem {\n        index: number;\n    }\n\n    interface Error {\n        path?: Path;\n        severity: Severity;\n        message: string;\n    }\n}\n\ninterface Error_ {\n    severity: \"CRITICAL\" | \"WARNING\";\n    path: string[] | undefined;\n    message: string;\n}\n\nexport class ErrorReporter {\n    private errors: ErrorReporter.Error[];\n    private path: ErrorReporter.PathItem[];\n\n    constructor() {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n        this.errors.push({\n            ...err,\n            path: [...this.path]\n        });\n    }\n\n    public scope(path: ErrorReporter.PathItem): void {\n        this.path.push(path);\n    }\n\n    public unscope(): void {\n        this.path.pop();\n    }\n\n    public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n        return this.errors.filter((err) => err.severity === severity);\n    }\n\n    public empty(): boolean {\n        return this.errors.length === 0;\n    }\n\n    public size(): number {\n        return this.errors.length;\n    }\n\n    public truncate(size: number): void {\n        this.errors.length = size;\n    }\n\n    public clone(): ErrorReporter {\n        const clone = new ErrorReporter();\n        clone.errors = [...this.errors];\n        clone.path = [...this.path];\n        return clone;\n    }\n\n    public reset(): void {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public toDynamicSnippetErrors(): Error_[] {\n        return this.errors.map((err) => ({\n            severity: err.severity,\n            path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n            message: err.message\n        }));\n    }\n\n    private pathToStringArray(path: ErrorReporter.Path): string[] {\n        const result: string[] = [];\n        for (const item of path) {\n            if (typeof item === \"string\") {\n                result.push(item);\n                continue;\n            }\n            result[result.length - 1] += `[${item.index}]`;\n        }\n        return result;\n    }\n}\n","import { AbstractFormatter } from \"../ast/AbstractFormatter.js\";\n\n// Style of the generated snippets.\nexport enum Style {\n    // Use a concise style for the snippet (top-level statements).\n    Concise = \"concise\",\n\n    // Use the full style for the snippet (a `main` function that can be run).\n    Full = \"full\"\n}\n\n// Options used to customize the behavior of any dynamic snippets generator\nexport interface Options {\n    // Config to use for a specific generator. This is independent of the customConfig\n    // used by the generator, and is primarily used in testing environments.\n    config?: unknown;\n\n    // The formatter to use for the generated snippets.\n    formatter?: AbstractFormatter;\n\n    // Style of the generated snippets. By default, the executable style is used.\n    style?: Style;\n\n    // Skip client instantiation in the generated snippet. Useful for wire tests\n    // where the client is already instantiated in the test setup.\n    skipClientInstantiation?: boolean;\n\n    // Optional endpoint ID to generate a snippet for a specific endpoint.\n    // This is useful when multiple endpoints have the same HTTP method and path\n    // across different namespaces, and we need to generate a snippet for a specific one.\n    endpointId?: string;\n}\n","export const Scope = {\n    PathParameters: \"pathParameters\",\n    QueryParameters: \"queryParameters\",\n    Headers: \"headers\",\n    RequestBody: \"requestBody\"\n} as const;\n\nexport type Scope = (typeof Scope)[keyof typeof Scope];\n","import {\n    AbstractDynamicSnippetsGeneratorContext,\n    FernGeneratorExec,\n    Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { ast, CsharpConfigSchema, Generation } from \"@fern-api/csharp-codegen\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicLiteralMapper } from \"./DynamicLiteralMapper.js\";\nimport { DynamicTypeMapper } from \"./DynamicTypeMapper.js\";\nimport { FilePropertyMapper } from \"./FilePropertyMapper.js\";\n\nexport class DynamicSnippetsGeneratorContext extends AbstractDynamicSnippetsGeneratorContext {\n    public ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    public dynamicTypeMapper: DynamicTypeMapper;\n    public dynamicLiteralMapper: DynamicLiteralMapper;\n    public filePropertyMapper: FilePropertyMapper;\n\n    public readonly generation: Generation;\n\n    public get namespaces(): Generation[\"namespaces\"] {\n        return this.generation.namespaces;\n    }\n    public get registry(): Generation[\"registry\"] {\n        return this.generation.registry;\n    }\n    public get settings(): Generation[\"settings\"] {\n        return this.generation.settings;\n    }\n    public get constants(): Generation[\"constants\"] {\n        return this.generation.constants;\n    }\n    public get names(): Generation[\"names\"] {\n        return this.generation.names;\n    }\n    public get model(): Generation[\"model\"] {\n        return this.generation.model;\n    }\n    public get format(): Generation[\"format\"] {\n        return this.generation.format;\n    }\n    public get csharp(): Generation[\"csharp\"] {\n        return this.generation.csharp;\n    }\n    public get Types(): Generation[\"Types\"] {\n        return this.generation.Types;\n    }\n    public get System(): Generation[\"extern\"][\"System\"] {\n        return this.generation.extern.System;\n    }\n    public get NUnit(): Generation[\"extern\"][\"NUnit\"] {\n        return this.generation.extern.NUnit;\n    }\n    public get OneOf(): Generation[\"extern\"][\"OneOf\"] {\n        return this.generation.extern.OneOf;\n    }\n    public get Google(): Generation[\"extern\"][\"Google\"] {\n        return this.generation.extern.Google;\n    }\n    public get WireMock(): Generation[\"extern\"][\"WireMock\"] {\n        return this.generation.extern.WireMock;\n    }\n    public get Primitive(): Generation[\"Primitive\"] {\n        return this.generation.Primitive;\n    }\n    public get Value(): Generation[\"Value\"] {\n        return this.generation.Value;\n    }\n    public get Collection(): Generation[\"Collection\"] {\n        return this.generation.Collection;\n    }\n\n    constructor({\n        ir,\n        config,\n        options,\n        generation\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n        generation?: Generation;\n    }) {\n        super({ ir, config, options });\n        this.ir = ir;\n\n        this.generation =\n            generation ??\n            new Generation(\n                ir,\n                config.workspaceName,\n                config.customConfig != null ? (config.customConfig as CsharpConfigSchema) : ({} as CsharpConfigSchema),\n                config\n            );\n\n        this.dynamicTypeMapper = new DynamicTypeMapper({ context: this });\n        this.dynamicLiteralMapper = new DynamicLiteralMapper({ context: this });\n        this.filePropertyMapper = new FilePropertyMapper({ context: this });\n    }\n\n    public clone(): DynamicSnippetsGeneratorContext {\n        return new DynamicSnippetsGeneratorContext({\n            ir: this.ir,\n            config: this.config,\n            options: this.options,\n            generation: this.generation\n        });\n    }\n\n    public getFileParameterForString(str: string): ast.Literal {\n        return this.csharp.Literal.reference(\n            this.csharp.instantiateClass({\n                classReference: this.Types.FileParameter,\n                arguments_: [],\n                properties: [\n                    {\n                        name: \"Stream\",\n                        value: this.getMemoryStreamForString(str)\n                    }\n                ],\n                multiline: true\n            })\n        );\n    }\n\n    public getMemoryStreamForString(str: string): ast.ClassInstantiation {\n        return this.System.IO.MemoryStream.new({\n            arguments_: [\n                this.csharp.invokeMethod({\n                    on: this.System.Text.Encoding_UTF8,\n                    method: \"GetBytes\",\n                    arguments_: [this.csharp.Literal.string(str)]\n                })\n            ]\n        });\n    }\n\n    public getClassName(name: FernIr.Name): string {\n        return name.pascalCase.safeName;\n    }\n\n    public getParameterName(name: FernIr.Name): string {\n        return name.camelCase.safeName;\n    }\n\n    public getPropertyName(name: FernIr.Name): string {\n        return name.pascalCase.safeName;\n    }\n\n    public getMethodName(name: FernIr.Name): string {\n        return `${name.pascalCase.safeName}Async`;\n    }\n\n    public getNamespace(fernFilepath: FernIr.dynamic.FernFilepath, suffix?: string): string {\n        let parts = this.getNamespaceSegments(fernFilepath);\n        parts = suffix != null ? [...parts, suffix] : parts;\n        return [this.namespaces.root, ...parts].join(\".\");\n    }\n\n    public getEnvironmentTypeReferenceFromID(environmentID: string): ast.ClassReference | undefined {\n        const environmentName = this.resolveEnvironmentName(environmentID);\n        if (environmentName == null) {\n            return undefined;\n        }\n        return this.getEnvironmentClassReferenceForEnumName(environmentName);\n    }\n\n    private getEnvironmentClassReferenceForEnumName(name: FernIr.Name): ast.ClassReference {\n        return this.csharp.classReference({\n            name: `${this.generation.Types.Environments.name}.${this.getClassName(name)}`,\n            namespace: this.namespaces.root\n        });\n    }\n\n    private getNamespaceSegments(fernFilepath: FernIr.dynamic.FernFilepath): string[] {\n        const segments = this.settings.explicitNamespaces ? fernFilepath.allParts : fernFilepath.packagePath;\n        return segments.map((segment) => segment.pascalCase.safeName);\n    }\n\n    public precalculate(requests: Partial<FernIr.dynamic.EndpointSnippetRequest>[]): void {\n        this.generation.initialize();\n        this.System.Collections.Generic.KeyValuePair();\n        this.System.Collections.Generic.IEnumerable();\n        this.System.Collections.Generic.IAsyncEnumerable();\n        this.System.Collections.Generic.HashSet();\n        this.System.Collections.Generic.List();\n        this.System.Collections.Generic.Dictionary();\n        this.System.Threading.Tasks.Task();\n\n        // generate the names for the model types\n        Object.entries(this.ir.types)\n            .sort((a, b) => {\n                // sort by shortest key length\n                return a[0].length - b[0].length;\n            })\n            .forEach(([typeId, type]) => {\n                this.dynamicTypeMapper.convertToClassReference(type);\n            });\n\n        for (const [idx, request] of requests.entries()) {\n            // generate the class names for the examples\n\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(`Example${idx}`),\n                namespace: \"Usage\"\n            });\n\n            if (request.endpoint) {\n                const endpoints = this.resolveEndpointLocation(request.endpoint);\n                for (const endpoint of endpoints) {\n                    switch (endpoint.request.type) {\n                        case \"inlined\":\n                            this.csharp.classReference({\n                                origin: endpoint.request.declaration.name,\n                                namespace: this.getNamespace(endpoint.request.declaration.fernFilepath)\n                            });\n\n                            break;\n\n                        case \"body\":\n                            break;\n                    }\n                }\n            }\n        }\n\n        this.generation.Types.ClientOptions;\n        this.generation.Types.RootClientForSnippets;\n\n        // after generating the names for everything, freeze the class references\n        this.csharp.freezeClassReferences();\n    }\n}\n","export { Writer } from \"./ast/core/Writer.js\";\nexport * as ast from \"./ast/index.js\";\nexport { convertReadOnlyPrimitiveTypes } from \"./ast/index.js\";\nexport {\n    type MinimalGeneratorConfig,\n    type Support,\n    type TAbsoluteFilePath,\n    type TRelativeFilePath\n} from \"./context/common.js\";\nexport { Generation } from \"./context/generation-info.js\";\nexport * from \"./context/index.js\";\nexport { NameRegistry } from \"./context/name-registry.js\";\nexport { CSharp } from \"./csharp.js\";\nexport { CsharpConfigSchema } from \"./custom-config/index.js\";\nexport { escapeForCSharpString } from \"./utils/escapeForCSharpString.js\";\nexport { type LazyResult, lazy } from \"./utils/lazy.js\";\nexport * as text from \"./utils/text.js\";\nexport { camelCase } from \"./utils/text.js\";\nexport { type TypesOf } from \"./utils/type-extractor.js\";\nexport { is } from \"./utils/type-guards.js\";\nexport { WithGeneration } from \"./with-generation.js\";\n","import { AbstractWriter } from \"@fern-api/browser-compatible-base-generator\";\nimport { Generation } from \"../../context/generation-info.js\";\nimport { type ClassReference } from \"../types/ClassReference.js\";\n\ntype Alias = string;\ntype Namespace = string;\n\nexport declare namespace Writer {\n    interface Args {\n        /* The namespace that is being written to */\n        namespace: string;\n        /* All base namespaces in the project */\n        allNamespaceSegments: Set<string>;\n        /* The name of every type in the project mapped to the namespaces a type of that name belongs to */\n        allTypeClassReferences: Map<string, Set<Namespace>>;\n        /* Custom generator config */\n        generation: Generation;\n        /* Whether or not to skip writing imports */\n        skipImports?: boolean;\n        /* Whether or not to skip adding global:: qualifier to System namespaces (e.g. for user-facing snippets) */\n        skipGlobalQualifier?: boolean;\n    }\n}\n\nexport class Writer extends AbstractWriter {\n    /* Import statements */\n    private references: Record<Namespace, ClassReference[]> = {};\n    /* The namespace that is being written to */\n    public namespace: string;\n    /* The set of namespace aliases */\n    private namespaceAliases: Record<Alias, Namespace> = {};\n    /* All base namespaces in the project */\n    private allNamespaceSegments: Set<string>;\n    /* The name of every type in the project mapped to the namespaces a type of that name belongs to */\n    private allTypeClassReferences: Map<string, Set<Namespace>>;\n    /* Whether or not dictionary<string, object?> should be simplified to just objects */\n    public readonly generation: Generation;\n    /* Whether or not to skip writing imports */\n    public readonly skipImports: boolean;\n\n    /* Whether or not to skip adding global:: qualifier to System namespaces */\n    public readonly skipGlobalQualifier: boolean;\n\n    constructor({\n        namespace,\n        allNamespaceSegments,\n        allTypeClassReferences,\n        generation,\n        skipImports = false,\n        skipGlobalQualifier = false\n    }: Writer.Args) {\n        super();\n        this.namespace = namespace;\n        this.allNamespaceSegments = allNamespaceSegments;\n        this.allTypeClassReferences = allTypeClassReferences;\n        this.generation = generation;\n        this.skipImports = skipImports;\n        this.skipGlobalQualifier = skipGlobalQualifier;\n    }\n\n    public addReference(reference: ClassReference): void {\n        if (reference.namespace == null) {\n            return;\n        }\n        const namespace = this.references[reference.namespace];\n        if (namespace != null) {\n            namespace.push(reference);\n        } else {\n            this.references[reference.namespace] = [reference];\n        }\n    }\n\n    public addNamespace(namespace: string): void {\n        const foundNamespace = this.references[namespace];\n        if (foundNamespace == null) {\n            this.references[namespace] = [];\n        }\n    }\n\n    public addNamespaceAlias(alias: string, namespace: string): string {\n        const set = new Set<Alias>(Object.values(this.namespaceAliases));\n        while (set.has(alias)) {\n            alias = `_${alias}`;\n        }\n        this.namespaceAliases[alias] = namespace;\n        return alias;\n    }\n\n    public getReferencedNamespaces(): string[] {\n        return Object.keys(this.references);\n    }\n\n    public getAllTypeClassReferences(): Map<string, Set<Namespace>> {\n        return this.allTypeClassReferences;\n    }\n\n    public getAllNamespaceSegments(): Set<string> {\n        return this.allNamespaceSegments;\n    }\n\n    public override toString(skipImports = false): string {\n        if (!skipImports) {\n            const imports = this.stringifyImports();\n            if (imports.length > 0) {\n                return `${imports}\n${this.buffer}`;\n            }\n        }\n        return this.buffer;\n    }\n\n    public importsToString(): string | undefined {\n        const imports = this.stringifyImports();\n        return imports.length > 0 ? imports : undefined;\n    }\n\n    public isReadOnlyMemoryType(type: string): boolean {\n        return this.generation.settings.readOnlyMemoryTypes.includes(type);\n    }\n\n    private inQuoteBlock = false;\n\n    public override shouldSkipTracking(lines: string[]) {\n        lines.forEach((line) => (this.inQuoteBlock = line.includes('\"\"\"') ? !this.inQuoteBlock : this.inQuoteBlock));\n        return this.inQuoteBlock;\n    }\n\n    /*******************************\n     * Helper Methods\n     *******************************/\n\n    private stringifyImports(): string {\n        let result = Object.entries(this.references)\n            .filter(\n                ([ns]) =>\n                    ns && // filter out blank or unspecified namespaces\n                    !this.isCurrentNamespace(ns) && // filter out the current namespace.\n                    !this.generation.registry.isNamespaceImplicit(ns) // filter out implicitly imported namespaces.\n            )\n            .map(([ns, refs]) => {\n                const resolvedNs = refs.length > 0 ? (refs[0] as ClassReference).resolveNamespace() : ns;\n                const firstSegment = resolvedNs.split(\".\")[0];\n                // Add global:: prefix when:\n                // 1. The namespace starts with \"System\" — always qualify to prevent\n                //    ambiguity when customer projects define a type or namespace named \"System\", OR\n                // 2. Any ref explicitly requires global qualification, OR\n                // 3. The first segment of the namespace is both a type name and a namespace root,\n                //    which would cause CS0426 in C# (e.g., class \"Candid\" shadowing namespace \"Candid.Net\")\n                const needsGlobal =\n                    !this.skipGlobalQualifier &&\n                    (firstSegment === \"System\" ||\n                        refs.some((ref) => ref?.global) ||\n                        this.generation.registry.hasTypeNamespaceConflict(firstSegment));\n                return `using ${needsGlobal ? \"global::\" : \"\"}${resolvedNs};`;\n            })\n            .join(\"\\n\");\n\n        if (result.length > 0) {\n            result = `${result}\\n`;\n        }\n\n        for (const [alias, namespace] of Object.entries(this.namespaceAliases)) {\n            const aliasFirstSegment = namespace.split(\".\")[0];\n            const aliasNeedsGlobal = !this.skipGlobalQualifier && aliasFirstSegment === \"System\";\n            result = `${result}using ${alias} = ${aliasNeedsGlobal ? \"global::\" : \"\"}${namespace};\\n`;\n        }\n\n        return result;\n    }\n\n    private isCurrentNamespace(namespace: string): boolean {\n        return namespace === this.namespace;\n    }\n}\n","// Language constructs\n\nexport { Block } from \"./code/Block.js\";\n// Code constructs\nexport { ClassInstantiation } from \"./code/ClassInstantiation.js\";\nexport { Dictionary } from \"./code/Dictionary.js\";\nexport { EnumInstantiation } from \"./code/EnumInstantiation.js\";\nexport { PrimitiveInstantiation as InstantiatedPrimitive } from \"./code/InstantiatedPrimitive.js\";\nexport { List } from \"./code/List.js\";\nexport { type ConstructorField, type DictionaryEntry, Literal } from \"./code/Literal.js\";\nexport { MethodInvocation } from \"./code/MethodInvocation.js\";\nexport { ReadOnlyMemory } from \"./code/ReadOnlymemory.js\";\nexport { Set } from \"./code/Set.js\";\nexport { String_ } from \"./code/String_.js\";\n// Core utilities\nexport { AstNode, MemberNode, Node } from \"./core/AstNode.js\";\nexport { Writer } from \"./core/Writer.js\";\nexport { XmlDocWriter } from \"./core/XmlDocWriter.js\";\nexport { Access } from \"./language/Access.js\";\nexport { And } from \"./language/And.js\";\nexport { Annotation } from \"./language/Annotation.js\";\nexport { AnnotationGroup } from \"./language/AnnotationGroup.js\";\nexport { AnonymousFunction } from \"./language/AnonymousFunction.js\";\nexport { CodeBlock } from \"./language/CodeBlock.js\";\nexport { Or } from \"./language/Or.js\";\nexport { Parameter } from \"./language/Parameter.js\";\nexport { Switch } from \"./language/Switch.js\";\nexport { Ternary } from \"./language/Ternary.js\";\nexport { XmlDocBlock } from \"./language/XmlDocBlock.js\";\n// Type definitions\nexport { Class } from \"./types/Class.js\";\nexport { ClassReference } from \"./types/ClassReference.js\";\nexport { Enum } from \"./types/Enum.js\";\nexport { Field } from \"./types/Field.js\";\nexport { Interface } from \"./types/Interface.js\";\nexport { type Type } from \"./types/IType.js\";\nexport { Method, MethodType } from \"./types/Method.js\";\nexport { TestClass } from \"./types/TestClass.js\";\nexport { convertReadOnlyPrimitiveTypes, OptionalWrapper } from \"./types/Type.js\";\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { is } from \"../../utils/type-guards.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { CodeBlock } from \"../language/CodeBlock.js\";\nimport { NamedNode, Statement } from \"../language/Expression.js\";\nexport declare namespace Block {\n    interface Args {}\n}\n\nexport class Block extends AstNode {\n    private statements: Statement[] = [];\n\n    constructor(args: Block.Args, generation: Generation) {\n        super(generation);\n    }\n\n    public write(writer: Writer): void {\n        for (const each of this.statements) {\n            if (is.string(each)) {\n                writer.writeStatement(each);\n                continue;\n            }\n\n            if (each instanceof CodeBlock) {\n                each.write(writer);\n                continue;\n            }\n\n            writer.writeStatement(...each);\n        }\n    }\n\n    append(codeblock: CodeBlock) {\n        this.statements.push(codeblock);\n    }\n\n    assign(to: NamedNode, from: NamedNode | AstNode): this {\n        if (is.Ast.NamedNode(from)) {\n            this.statements.push([`${to.name} = ${from.name}`]);\n        } else {\n            this.statements.push([to.name, ` = `, from]);\n        }\n\n        return this;\n    }\n    /*\n    // \n    var(name: string, type: ClassReference | Type, initialValue?: Expression): Local;\n    var(name: string, initialValue: Expression);\n    var(name: string, typeOrInitialValue: Expression | ClassReference | Type, initialValue?: Expression) {\n        if (type) {\n            this.statements.push([type, \" \", name]);\n        }\n    }\n    */\n    if(condition: string, block: Block) {\n        //\n    }\n}\n","import { Literal } from \"../ast/code/Literal.js\";\nimport { AstNode } from \"../ast/core/AstNode.js\";\nimport { ClassReference } from \"../ast/types/ClassReference.js\";\nimport { Type } from \"../ast/types/IType.js\";\nimport { BaseType, Collection, Optional, OptionalWrapper, Primitive, Value } from \"../ast/types/Type.js\";\nimport { type Provenance } from \"../context/model-navigator.js\";\nimport { is as DynamicIR } from \"./dynamic-ir-type-guards.js\";\nimport { fail } from \"./fail.js\";\nimport { is as IR } from \"./ir-type-guards.js\";\n\nconst ISO_8601_DATE_REGEX = /^[+-]?\\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[12]\\d|3[01])$/;\n\nconst ISO_8601_DATE_TIME_REGEX =\n    /^([+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))[T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([.,]\\d+(?!:))?)?(\\16[0-5]\\d([.,]\\d+)?)?([zZ]|([+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)$/;\n\n/** Universal Type Guard functions\n *\n * Using these functions on objects is preferable to sniffing the internals of the object.\n * Using the type guard functions allows TypeScript to infer the type of the object in the block following.\n *\n * @see https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-guards\n */\nexport const is: {\n    string: (value: unknown) => value is string;\n    boolean: (value: unknown) => value is boolean;\n    number: (value: unknown) => value is number;\n    date: (value: unknown) => value is Date;\n    object: (value: unknown) => value is object;\n    array: (value: unknown) => value is unknown[];\n    Provenance: (value: unknown) => value is Provenance;\n    Explicit: (value: unknown) => value is Provenance & {\n        explicit: true;\n    };\n    NonNullable: <T>(value: T) => value is NonNullable<T>;\n    isIsoDateString: (value: unknown) => value is string;\n    isIsoDateTimeString: (value: unknown) => value is string;\n    Type: (value: unknown) => value is BaseType;\n    ClassReference: (value: unknown) => value is ClassReference;\n    Optional: (value: Type) => value is Optional;\n    OptionalWrapper: (value: Type) => value is OptionalWrapper;\n    AsyncEnumerable: (value: Type | undefined) => value is Type;\n    Record: {\n        empty: (value: unknown) => value is Record<string, unknown>;\n        nonEmpty: (value: unknown) => value is Record<string, unknown>;\n        withKey: <K extends string>(value: unknown, key: K) => value is Record<K, unknown>;\n        missingKey: <K extends string>(value: unknown, key: K) => value is Record<K, unknown>;\n    };\n    Ast: {\n        Node: (value: unknown) => value is AstNode;\n        NamedNode: (value: unknown) => value is AstNode & { name: string };\n    };\n    OneOf: {\n        OneOf: (value: Type | undefined) => value is ClassReference;\n        OneOfBase: (value: Type | undefined) => value is ClassReference;\n    };\n    Primitive: {\n        string: (value: Type | undefined) => value is Primitive.String;\n        boolean: (value: Type | undefined) => value is Primitive.Boolean;\n        int: (value: Type | undefined) => value is Primitive.Integer;\n        long: (value: Type | undefined) => value is Primitive.Long;\n        uint: (value: Type | undefined) => value is Primitive.Uint;\n        ulong: (value: Type | undefined) => value is Primitive.ULong;\n        float: (value: Type | undefined) => value is Primitive.Float;\n        double: (value: Type | undefined) => value is Primitive.Double;\n        object: (value: Type | undefined) => value is Primitive.Object;\n    };\n    Value: {\n        dateTime: (value: Type | undefined) => value is Value.DateTime;\n        uuid: (value: Type | undefined) => value is Value.Uuid;\n        byte: (value: Type | undefined) => value is Value.Binary;\n        stringEnum: (value: Type | undefined) => value is Value.StringEnum;\n    };\n    Collection: {\n        array: (value: Type | undefined) => value is Collection.Array;\n        listType: (value: Type | undefined) => value is Collection.ListType;\n        list: (value: Type | undefined) => value is Collection.List;\n        set: (value: Type | undefined) => value is Collection.Set;\n        map: (value: Type | undefined) => value is Collection.Map;\n        idictionary: (value: Type | undefined) => value is Collection.IDictionary;\n        keyValuePair: (value: Type | undefined) => value is Collection.KeyValuePair;\n    };\n    Literal: {\n        string: (value: Literal | undefined) => value is Literal.String;\n        boolean: (value: Literal | undefined) => value is Literal.Boolean;\n        decimal: (value: Literal | undefined) => value is Literal.Decimal;\n        double: (value: Literal | undefined) => value is Literal.Double;\n        date: (value: Literal | undefined) => value is Literal.Date;\n        dateTime: (value: Literal | undefined) => value is Literal.DateTime;\n        float: (value: Literal | undefined) => value is Literal.Float;\n        int: (value: Literal | undefined) => value is Literal.Integer;\n        long: (value: Literal | undefined) => value is Literal.Long;\n        uint: (value: Literal | undefined) => value is Literal.Uint;\n        ulong: (value: Literal | undefined) => value is Literal.Ulong;\n        class: (value: Literal | undefined) => value is Literal.Class_;\n        list: (value: Literal | undefined) => value is Literal.List;\n        set: (value: Literal | undefined) => value is Literal.Set;\n        dictionary: (value: Literal | undefined) => value is Literal.Dictionary;\n        nop: (value: Literal | undefined) => value is Literal.Nop;\n        null: (value: Literal | undefined) => value is Literal.Null;\n        unknown: (value: Literal | undefined) => value is Literal.Unknown;\n    };\n    IR: typeof IR;\n    DynamicIR: typeof DynamicIR;\n} = {\n    string: (value: unknown): value is string => typeof value === \"string\",\n    boolean: (value: unknown): value is boolean => typeof value === \"boolean\",\n    number: (value: unknown): value is number => typeof value === \"number\",\n    date: (value: unknown): value is Date => value instanceof Date,\n    object: (value: unknown): value is object =>\n        value != null && typeof value === \"object\" && Array.isArray(value) === false,\n    array: (value: unknown): value is unknown[] => Array.isArray(value),\n    Provenance: (value: unknown): value is Provenance =>\n        is.object(value) && \"jsonPath\" in value && \"name\" in value && \"node\" in value,\n    Explicit: (value: unknown): value is Provenance & { explicit: true } =>\n        is.Provenance(value) && value.explicit === true,\n    NonNullable: <T>(value: T): value is NonNullable<T> => value != null,\n    isIsoDateString: (value: unknown): value is string => is.string(value) && ISO_8601_DATE_REGEX.test(value),\n    isIsoDateTimeString: (value: unknown): value is string => is.string(value) && ISO_8601_DATE_TIME_REGEX.test(value),\n    Type: (value: unknown): value is BaseType => value instanceof BaseType,\n    ClassReference: (value: unknown): value is ClassReference => value instanceof ClassReference,\n    Optional: (value: Type): value is Optional => value instanceof Optional,\n    OptionalWrapper: (value: Type): value is OptionalWrapper => value instanceof OptionalWrapper,\n    AsyncEnumerable: (value: Type | undefined): value is Type =>\n        value != null &&\n        value.asNonOptional().fullyQualifiedName.startsWith(\"System.Collections.Generic.IAsyncEnumerable\"),\n    Record: {\n        empty: (value: unknown): value is Record<string, unknown> =>\n            value == null || Object.keys(value || {}).length === 0,\n        nonEmpty: (value: unknown): value is Record<string, unknown> =>\n            is.object(value) && Object.keys(value).length > 0,\n        withKey: <K extends string>(value: unknown, key: K): value is Record<K, unknown> =>\n            is.object(value) && key in value,\n        missingKey: <K extends string>(value: unknown, key: K): value is Record<K, unknown> =>\n            is.object(value) && !(key in value)\n    },\n\n    Ast: {\n        Node: (value: unknown) => value instanceof AstNode,\n        NamedNode: (value: unknown): value is AstNode & { name: string } =>\n            is.Ast.Node(value) && \"name\" in value && typeof value.name === \"string\"\n    },\n    OneOf: {\n        OneOf: (value: Type | undefined): value is ClassReference =>\n            is.ClassReference(value) && value.fullyQualifiedName === \"OneOf.OneOf\",\n        OneOfBase: (value: Type | undefined): value is ClassReference =>\n            is.ClassReference(value) && value.fullyQualifiedName === \"OneOf.OneOfBase\"\n    },\n\n    Primitive: {\n        string: (value: Type | undefined) => value instanceof Primitive.String,\n        boolean: (value: Type | undefined) => value instanceof Primitive.Boolean,\n        int: (value: Type | undefined) => value instanceof Primitive.Integer,\n        long: (value: Type | undefined) => value instanceof Primitive.Long,\n        uint: (value: Type | undefined) => value instanceof Primitive.Uint,\n        ulong: (value: Type | undefined) => value instanceof Primitive.ULong,\n        float: (value: Type | undefined) => value instanceof Primitive.Float,\n        double: (value: Type | undefined) => value instanceof Primitive.Double,\n        object: (value: Type | undefined) => value instanceof Primitive.Object\n    },\n\n    Value: {\n        dateTime: (value: Type | undefined) => value instanceof Value.DateTime,\n        uuid: (value: Type | undefined) => value instanceof Value.Uuid,\n        byte: (value: Type | undefined) => value instanceof Value.Binary,\n        stringEnum: (value: Type | undefined) => value instanceof Value.StringEnum\n    },\n\n    Collection: {\n        array: (value: Type | undefined) => value instanceof Collection.Array,\n        listType: (value: Type | undefined) => value instanceof Collection.ListType,\n        list: (value: Type | undefined) => value instanceof Collection.List,\n        set: (value: Type | undefined) => value instanceof Collection.Set,\n        map: (value: Type | undefined) => value instanceof Collection.Map,\n        idictionary: (value: Type | undefined) => value instanceof Collection.IDictionary,\n        keyValuePair: (value: Type | undefined) => value instanceof Collection.KeyValuePair\n    },\n\n    Literal: {\n        string: (value: Literal | undefined) => value instanceof Literal.String,\n        boolean: (value: Literal | undefined) => value instanceof Literal.Boolean,\n        decimal: (value: Literal | undefined) => value instanceof Literal.Decimal,\n        double: (value: Literal | undefined) => value instanceof Literal.Double,\n        date: (value: Literal | undefined) => value instanceof Literal.Date,\n        dateTime: (value: Literal | undefined) => value instanceof Literal.DateTime,\n        float: (value: Literal | undefined) => value instanceof Literal.Float,\n        int: (value: Literal | undefined) => value instanceof Literal.Integer,\n        long: (value: Literal | undefined) => value instanceof Literal.Long,\n        uint: (value: Literal | undefined) => value instanceof Literal.Uint,\n        ulong: (value: Literal | undefined) => value instanceof Literal.Ulong,\n        class: (value: Literal | undefined) => value instanceof Literal.Class_,\n        list: (value: Literal | undefined) => value instanceof Literal.List,\n        set: (value: Literal | undefined) => value instanceof Literal.Set,\n        dictionary: (value: Literal | undefined) => value instanceof Literal.Dictionary,\n        nop: (value: Literal | undefined) => value instanceof Literal.Nop,\n        null: (value: Literal | undefined) => value instanceof Literal.Null,\n        unknown: (value: Literal | undefined) => value instanceof Literal.Unknown\n    },\n\n    IR, // Intermediate Representation typeguards\n    DynamicIR // Dynamic IR typeguards\n};\n\nexport const assert = {\n    object: (value: unknown): value is object => {\n        return is.object(value) || fail(`Not an object type: ${JSON.stringify(value)}`);\n    }\n};\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { is } from \"../../utils/type-guards.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { ClassReference } from \"../types/ClassReference.js\";\nimport { Type } from \"../types/IType.js\";\n\n/**\n * Represents a field in a class constructor initialization.\n */\nexport interface ConstructorField {\n    /**\n     * The name of the field.\n     */\n    name: string;\n\n    /**\n     * The literal value to assign to the field.\n     */\n    value: Literal;\n}\n\n/**\n * Represents a key-value pair in a dictionary literal.\n */\nexport interface DictionaryEntry {\n    /**\n     * The key of the dictionary entry.\n     */\n    key: Literal;\n\n    /**\n     * The value of the dictionary entry.\n     */\n    value: Literal;\n}\n\n/**\n * Base class for all C# literal value representations in the AST.\n *\n * Literals represent concrete values that can be written directly into code,\n * such as numbers (42, 3.14), strings (\"hello\"), booleans (true), collections ([1, 2, 3]),\n * and object initializers. Each subclass knows how to render its specific literal type\n * using the appropriate C# syntax.\n */\nexport abstract class Literal extends AstNode {\n    /**\n     * Writes this literal value to the provided writer using appropriate C# syntax.\n     */\n    public abstract override write(writer: Writer): void;\n\n    /**\n     * Gets the name of this literal type, typically the constructor name.\n     * Used primarily for debugging and type identification.\n     */\n    public get typeName(): string {\n        return this.constructor.name;\n    }\n}\n\n// Namespace for all Literal classes\nexport namespace Literal {\n    /**\n     * Represents a boolean literal value in C# (true or false).\n     */\n    export class Boolean extends Literal {\n        /**\n         * The boolean value.\n         */\n        public readonly value: boolean;\n\n        /**\n         * Creates a new boolean literal.\n         * @param value - The boolean value (true or false)\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: boolean, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(this.value.toString());\n        }\n    }\n\n    /**\n     * Represents a class instantiation literal with constructor arguments.\n     * This generates code like `new ClassName(field1: value1, field2: value2)`.\n     */\n    export class Class_ extends Literal {\n        /**\n         * The fields to initialize in the constructor.\n         */\n        public readonly fields: ConstructorField[];\n\n        /**\n         * The class reference being instantiated.\n         */\n        public readonly reference: ClassReference;\n\n        /**\n         * Creates a new class instantiation literal.\n         * @param reference - The class reference to instantiate\n         * @param fields - The fields to initialize with their values\n         * @param generation - The generation context for code generation\n         */\n        constructor(reference: ClassReference, fields: ConstructorField[], generation: Generation) {\n            super(generation);\n            this.reference = reference;\n            this.fields = fields;\n        }\n\n        public write(writer: Writer): void {\n            const fields = this.fields.filter((field) => !(field.value instanceof Literal.Nop));\n            writer.writeNode(\n                this.reference.new({\n                    arguments_: fields.map((field) => ({ name: field.name, assignment: field.value })),\n                    multiline: true\n                })\n            );\n        }\n    }\n\n    /**\n     * Represents a DateOnly literal in C# (date without time component).\n     * This generates code like `DateOnly.Parse(\"2023-01-15\")`.\n     */\n    export class Date extends Literal {\n        /**\n         * The date string in a parseable format.\n         */\n        public readonly value: string;\n\n        /**\n         * Creates a new DateOnly literal.\n         * @param value - The date string (e.g., \"2023-01-15\")\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: string, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(this.System.DateOnly, `.Parse(\"${this.value}\")`);\n        }\n    }\n\n    /**\n     * Represents a DateTime literal in C# with timezone adjustment.\n     * This generates code like `DateTime.Parse(\"...\", null, DateTimeStyles.AdjustToUniversal)`.\n     */\n    export class DateTime extends Literal {\n        /**\n         * The datetime string in a parseable format.\n         */\n        public readonly value: string;\n\n        /**\n         * Creates a new DateTime literal.\n         * @param value - The datetime string (e.g., \"2023-01-15T10:30:00Z\")\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: string, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(\n                this.System.DateTime,\n                `.Parse(\"${this.value}\", null, `,\n                this.System.Globalization.DateTimeStyles,\n                \".AdjustToUniversal)\"\n            );\n        }\n    }\n\n    /**\n     * Represents a decimal literal in C# (high-precision decimal number).\n     * This generates code like `42.5m` (the 'm' suffix denotes decimal type).\n     */\n    export class Decimal extends Literal {\n        /**\n         * The decimal value.\n         */\n        public readonly value: number;\n\n        /**\n         * Creates a new decimal literal.\n         * @param value - The decimal value\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: number, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(`${this.value}m`);\n        }\n    }\n\n    /**\n     * Represents a double literal in C# (64-bit floating-point number).\n     * This generates code like `3.14` (no suffix needed for double).\n     */\n    export class Double extends Literal {\n        /**\n         * The double value.\n         */\n        public readonly value: number;\n\n        /**\n         * Creates a new double literal.\n         * @param value - The double value\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: number, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(this.value.toString());\n        }\n    }\n\n    /**\n     * Represents a float literal in C# (32-bit floating-point number).\n     * This generates code like `3.14f` (the 'f' suffix denotes float type).\n     */\n    export class Float extends Literal {\n        /**\n         * The float value.\n         */\n        public readonly value: number;\n\n        /**\n         * Creates a new float literal.\n         * @param value - The float value\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: number, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(`${this.value}f`);\n        }\n    }\n\n    /**\n     * Represents an integer literal in C# (32-bit signed integer).\n     * This generates code like `42` (no suffix needed for int).\n     */\n    export class Integer extends Literal {\n        /**\n         * The integer value.\n         */\n        public readonly value: number;\n\n        /**\n         * Creates a new integer literal.\n         * @param value - The integer value\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: number, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(this.value.toString());\n        }\n    }\n\n    /**\n     * Represents a long literal in C# (64-bit signed integer).\n     * This generates code like `42L` (the 'L' suffix denotes long type).\n     */\n    export class Long extends Literal {\n        /**\n         * The long value.\n         */\n        public readonly value: number;\n\n        /**\n         * Creates a new long literal.\n         * @param value - The long value\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: number, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(`${this.value}L`);\n        }\n    }\n\n    /**\n     * Represents an unsigned integer literal in C# (32-bit unsigned integer).\n     * This generates code like `42u` (the 'u' suffix denotes unsigned int).\n     */\n    export class Uint extends Literal {\n        /**\n         * The unsigned integer value.\n         */\n        public readonly value: number;\n\n        /**\n         * Creates a new unsigned integer literal.\n         * @param value - The unsigned integer value\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: number, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(`${this.value}u`);\n        }\n    }\n\n    /**\n     * Represents an unsigned long literal in C# (64-bit unsigned integer).\n     * This generates code like `42ul` (the 'ul' suffix denotes unsigned long).\n     */\n    export class Ulong extends Literal {\n        /**\n         * The unsigned long value.\n         */\n        public readonly value: number;\n\n        /**\n         * Creates a new unsigned long literal.\n         * @param value - The unsigned long value\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: number, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(`${this.value}ul`);\n        }\n    }\n\n    /**\n     * Represents a reference to another AST node as a literal value.\n     * This allows embedding arbitrary AST nodes within literal contexts.\n     */\n    export class Reference extends Literal {\n        /**\n         * The AST node being referenced.\n         */\n        public readonly value: AstNode;\n\n        /**\n         * Creates a new reference literal.\n         * @param value - The AST node to reference\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: AstNode, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.writeNode(this.value);\n        }\n    }\n\n    /**\n     * Represents a string literal in C# with proper escaping.\n     * This generates code like `\"hello world\"` with appropriate character escaping.\n     */\n    export class String extends Literal {\n        /**\n         * The string value.\n         */\n        public readonly value: string;\n\n        /**\n         * Creates a new string literal.\n         * @param value - The string value\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: string, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            writer.writeNode(this.csharp.string_({ string: this.value }));\n        }\n    }\n\n    /**\n     * Represents a null literal in C#.\n     * This generates the code `null`.\n     */\n    export class Null extends Literal {\n        public write(writer: Writer): void {\n            writer.write(\"null\");\n        }\n    }\n\n    /**\n     * Represents a no-operation literal that writes nothing.\n     * This is useful for filtering out optional values or placeholder fields.\n     */\n    export class Nop extends Literal {\n        public write(writer: Writer): void {\n            // No-op: writes nothing\n        }\n    }\n\n    /**\n     * Represents a List<T> collection initializer literal in C#.\n     * This generates code like `new List<int>() { 1, 2, 3 }`.\n     */\n    export class List extends Literal {\n        /**\n         * The element type of the list.\n         */\n        public readonly valueType: Type;\n\n        /**\n         * The literal values to include in the list.\n         */\n        public readonly values: Literal[];\n\n        /**\n         * Creates a new List literal.\n         * @param valueType - The type of elements in the list\n         * @param values - The literal values to initialize the list with\n         * @param generation - The generation context for code generation\n         */\n        constructor(valueType: Type, values: Literal[], generation: Generation) {\n            super(generation);\n            this.valueType = valueType;\n            this.values = values;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(this.System.Collections.Generic.List(this.valueType).new());\n\n            if (this.values.length === 0) {\n                return;\n            }\n\n            writer.pushScope();\n            for (const value of this.values.filter((value) => !(value instanceof Literal.Nop))) {\n                value.write(writer);\n                writer.writeLine(\",\");\n            }\n            writer.popScope();\n        }\n    }\n\n    /**\n     * Represents a HashSet<T> collection initializer literal in C#.\n     * This generates code like `new HashSet<int>() { 1, 2, 3 }`.\n     */\n    export class Set extends Literal {\n        /**\n         * The element type of the set.\n         */\n        public readonly valueType: Type;\n\n        /**\n         * The literal values to include in the set.\n         */\n        public readonly values: Literal[];\n\n        /**\n         * Creates a new HashSet literal.\n         * @param valueType - The type of elements in the set\n         * @param values - The literal values to initialize the set with\n         * @param generation - The generation context for code generation\n         */\n        constructor(valueType: Type, values: Literal[], generation: Generation) {\n            super(generation);\n            this.valueType = valueType;\n            this.values = values;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(this.System.Collections.Generic.HashSet(this.valueType).new());\n\n            if (this.values.length === 0) {\n                return;\n            }\n\n            writer.pushScope();\n            for (const value of this.values.filter((value) => !(value instanceof Literal.Nop))) {\n                value.write(writer);\n                writer.writeLine(\",\");\n            }\n            writer.popScope();\n        }\n    }\n\n    /**\n     * Represents a Dictionary<TKey, TValue> collection initializer literal in C#.\n     * This generates code like `new Dictionary<string, int>() { [\"key1\"] = 1, [\"key2\"] = 2 }`.\n     */\n    export class Dictionary extends Literal {\n        /**\n         * The entries to include in the dictionary.\n         */\n        public readonly entries: DictionaryEntry[];\n\n        /**\n         * The key type of the dictionary.\n         */\n        public readonly keyType: Type;\n\n        /**\n         * The value type of the dictionary.\n         */\n        public readonly valueType: Type;\n\n        /**\n         * Creates a new Dictionary literal.\n         * @param keyType - The type of keys in the dictionary\n         * @param valueType - The type of values in the dictionary\n         * @param entries - The key-value pairs to initialize the dictionary with\n         * @param generation - The generation context for code generation\n         */\n        constructor(keyType: Type, valueType: Type, entries: DictionaryEntry[], generation: Generation) {\n            super(generation);\n            this.keyType = keyType;\n            this.valueType = valueType;\n            this.entries = entries;\n        }\n\n        public write(writer: Writer): void {\n            writer.write(this.System.Collections.Generic.Dictionary(this.keyType, this.valueType).new());\n\n            const entries = this.entries.filter((entry) => !is.Literal.nop(entry.key) && !is.Literal.nop(entry.value));\n            if (entries.length === 0) {\n                return;\n            }\n\n            writer.pushScope();\n\n            for (const entry of entries) {\n                writer.write(\"[\");\n                writer.writeNode(entry.key);\n                writer.write(\"] = \");\n                writer.writeNode(entry.value);\n                writer.writeLine(\",\");\n            }\n            writer.popScope();\n        }\n    }\n\n    /**\n     * Represents a literal for unknown/dynamic values that are determined at runtime.\n     * This recursively converts JavaScript values (primitives, objects, arrays) into appropriate C# literal syntax.\n     *\n     * For example, a JavaScript object `{ name: \"Alice\", age: 30 }` becomes\n     * `new Dictionary<string, object>() { [\"name\"] = \"Alice\", [\"age\"] = 30 }`.\n     */\n    export class Unknown extends Literal {\n        /**\n         * The unknown value to convert to C# syntax.\n         */\n        public readonly value: unknown;\n\n        /**\n         * Creates a new Unknown literal.\n         * @param value - The unknown value (can be primitive, object, or array)\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: unknown, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public write(writer: Writer): void {\n            this.writeUnknown({ writer, value: this.value });\n        }\n\n        /**\n         * Recursively writes an unknown value using appropriate C# syntax.\n         * @param params - Object containing the writer and value\n         * @param params.writer - The writer to output to\n         * @param params.value - The value to write\n         */\n        private writeUnknown({ writer, value }: { writer: Writer; value: unknown }): void {\n            switch (typeof value) {\n                case \"boolean\":\n                    writer.write(value.toString());\n                    return;\n                case \"string\":\n                    writer.writeNode(this.csharp.string_({ string: value }));\n                    return;\n                case \"number\":\n                    writer.write(value.toString());\n                    return;\n                case \"object\":\n                    if (value == null) {\n                        writer.write(\"null\");\n                        return;\n                    }\n                    if (Array.isArray(value)) {\n                        this.writeUnknownArray({ writer, value });\n                        return;\n                    }\n                    this.writeUnknownMap({ writer, value });\n                    return;\n                default:\n                    throw new Error(`Internal error; unsupported unknown type: ${typeof value}`);\n            }\n        }\n\n        /**\n         * Writes an unknown array as a List<object> literal.\n         * @param params - Object containing the writer and array value\n         * @param params.writer - The writer to output to\n         * @param params.value - The array to write\n         */\n        private writeUnknownArray({\n            writer,\n            value\n        }: {\n            writer: Writer;\n            // biome-ignore lint/suspicious/noExplicitAny: allow\n            value: any[];\n        }): void {\n            writer.write(this.System.Collections.Generic.List(this.Primitive.object).new());\n            if (value.length === 0) {\n                return;\n            }\n            writer.writeLine();\n            writer.pushScope();\n            for (const element of value) {\n                writer.writeNode(new Unknown(element, this.generation));\n                writer.writeLine(\",\");\n            }\n            writer.popScope();\n        }\n\n        /**\n         * Writes an unknown object as a Dictionary<string, object> literal.\n         * @param params - Object containing the writer and object value\n         * @param params.writer - The writer to output to\n         * @param params.value - The object to write\n         */\n        private writeUnknownMap({ writer, value }: { writer: Writer; value: object }): void {\n            const entries = Object.entries(value);\n            writer.write(\n                this.System.Collections.Generic.Dictionary(this.Primitive.string, this.Primitive.object).new()\n            );\n            if (entries.length === 0) {\n                return;\n            }\n            writer.writeLine();\n            writer.pushScope();\n            for (const [key, val] of entries) {\n                writer.write(`[\"${key}\"] = `);\n                writer.writeNode(new Unknown(val, this.generation));\n                writer.writeLine(\",\");\n            }\n            writer.popScope();\n        }\n    }\n}\n","import {\n    AbstractAstNode,\n    AbstractFormatter,\n    addGlobalFunctionFilter,\n    at,\n    enableStackTracking,\n    getFramesForTaggedObject\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { Generation } from \"../../context/generation-info.js\";\nimport { type Origin } from \"../../context/model-navigator.js\";\nimport { type Class } from \"../types/Class.js\";\nimport { type ClassReference } from \"../types/ClassReference.js\";\nimport { type Interface } from \"../types/Interface.js\";\nimport { Writer } from \"./Writer.js\";\n\ntype Namespace = string;\n\nexport interface FormattedAstNodeSnippet {\n    imports: string | undefined;\n    body: string;\n}\n\n// don't track stack frames for the internals of AstNode.\naddGlobalFunctionFilter(\"AstNode\");\n\nexport abstract class AstNode extends AbstractAstNode {\n    constructor(public readonly generation: Generation) {\n        super();\n    }\n\n    protected get csharp() {\n        return this.generation.csharp;\n    }\n    protected get registry() {\n        return this.generation.registry;\n    }\n    protected get settings() {\n        return this.generation.settings;\n    }\n    protected get namespaces() {\n        return this.generation.namespaces;\n    }\n    protected get names() {\n        return this.generation.names;\n    }\n    protected get model() {\n        return this.generation.model;\n    }\n    protected get format() {\n        return this.generation.format;\n    }\n    protected get Types() {\n        return this.generation.Types;\n    }\n\n    protected get System() {\n        return this.generation.extern.System;\n    }\n    protected get NUnit() {\n        return this.generation.extern.NUnit;\n    }\n    protected get OneOf() {\n        return this.generation.extern.OneOf;\n    }\n    protected get Google() {\n        return this.generation.extern.Google;\n    }\n    protected get WireMock() {\n        return this.generation.extern.WireMock;\n    }\n    protected get Primitive() {\n        return this.generation.Primitive;\n    }\n    protected get Value() {\n        return this.generation.Value;\n    }\n    protected get Collection() {\n        return this.generation.Collection;\n    }\n\n    /**\n     * Writes the node to a string.\n     */\n    public override toString({\n        namespace,\n        allNamespaceSegments,\n        allTypeClassReferences,\n        generation,\n        formatter,\n        skipImports = false,\n        skipGlobalQualifier = false\n    }: {\n        namespace: string;\n        allNamespaceSegments: Set<string>;\n        allTypeClassReferences: Map<string, Set<Namespace>>;\n        generation: Generation;\n        formatter?: AbstractFormatter;\n        skipImports?: boolean;\n        skipGlobalQualifier?: boolean;\n    }): string {\n        const writer = new Writer({\n            namespace,\n            allNamespaceSegments,\n            allTypeClassReferences,\n            generation,\n            skipImports,\n            skipGlobalQualifier\n        });\n        this.write(writer);\n        const stringNode = writer.toString(skipImports);\n        return formatter != null ? formatter.formatSync(stringNode) : stringNode;\n    }\n    public toStringAsync({\n        namespace,\n        allNamespaceSegments,\n        allTypeClassReferences,\n        generation,\n        formatter,\n        skipImports = false,\n        skipGlobalQualifier = false\n    }: {\n        namespace: string;\n        allNamespaceSegments: Set<string>;\n        allTypeClassReferences: Map<string, Set<Namespace>>;\n        generation: Generation;\n        formatter?: AbstractFormatter;\n        skipImports?: boolean;\n        skipGlobalQualifier?: boolean;\n    }): Promise<string> {\n        const writer = new Writer({\n            namespace,\n            allNamespaceSegments,\n            allTypeClassReferences,\n            generation,\n            skipImports,\n            skipGlobalQualifier\n        });\n        this.write(writer);\n        const stringNode = writer.toString(skipImports);\n        return formatter != null ? formatter.format(stringNode) : Promise.resolve(stringNode);\n    }\n\n    public toFormattedSnippet({\n        allNamespaceSegments,\n        allTypeClassReferences,\n        generation,\n        formatter,\n        skipImports = false\n    }: {\n        allNamespaceSegments: Set<string>;\n        allTypeClassReferences: Map<string, Set<Namespace>>;\n        generation: Generation;\n        formatter: AbstractFormatter;\n        skipImports: boolean;\n    }): FormattedAstNodeSnippet {\n        const writer = new Writer({\n            namespace: \"\",\n            allNamespaceSegments,\n            allTypeClassReferences,\n            generation,\n            skipImports\n        });\n        this.write(writer);\n        return {\n            imports: writer.importsToString(),\n            body: formatter.formatSync(writer.buffer)\n        };\n    }\n\n    public async toFormattedSnippetAsync({\n        allNamespaceSegments,\n        allTypeClassReferences,\n        generation,\n        formatter,\n        skipImports = false\n    }: {\n        allNamespaceSegments: Set<string>;\n        allTypeClassReferences: Map<string, Set<Namespace>>;\n        generation: Generation;\n        formatter: AbstractFormatter;\n        skipImports?: boolean;\n    }): Promise<FormattedAstNodeSnippet> {\n        const writer = new Writer({\n            namespace: \"\",\n            allNamespaceSegments,\n            allTypeClassReferences,\n            generation,\n            skipImports\n        });\n        this.write(writer);\n        return {\n            imports: writer.importsToString(),\n            body: await formatter.format(writer.buffer)\n        };\n    }\n\n    public get debugInfo(): string {\n        return enableStackTracking\n            ? `Debug Info:\\n    at:\\n    ${at({ multiline: true }).replaceAll(\"\\n\", \"\\n    \")}\\n    creation stack:\\n${getFramesForTaggedObject(\n                  this\n              )\n                  .map((each) => `    ${each.fn} - ${each.path}:${each.position}`)\n                  .join(\"\\n\")}`\n            : \"\";\n    }\n}\n\nexport namespace Node {\n    export interface Args {\n        origin?: Origin;\n    }\n}\n\nexport abstract class Node extends AstNode {\n    public readonly origin?: Origin;\n    constructor(origin: Origin | undefined, generation: Generation) {\n        super(generation);\n        this.origin = this.model.origin(origin);\n    }\n}\n\nexport namespace MemberNode {\n    export interface Args extends Node.Args {\n        enclosingType?: Class | Interface | ClassReference;\n    }\n}\n//\nexport abstract class MemberNode extends Node {\n    public readonly enclosingType?: Class | Interface | ClassReference;\n\n    constructor(args: MemberNode.Args, origin: Origin | undefined, generation: Generation) {\n        super(origin, generation);\n        this.enclosingType = args.enclosingType;\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { type Origin } from \"../../context/model-navigator.js\";\nimport { type TypeScope } from \"../../context/name-registry.js\";\nimport { fail } from \"../../utils/fail.js\";\nimport { type ClassInstantiation } from \"../code/ClassInstantiation.js\";\nimport { Literal } from \"../code/Literal.js\";\nimport { Node } from \"../core/AstNode.js\";\nimport type { Writer } from \"../core/Writer.js\";\nimport { type Field } from \"./Field.js\";\nimport { Type } from \"./IType.js\";\nimport { Nullable, Optional } from \"./Type.js\";\n\nexport declare namespace ClassReference {\n    interface Identity {\n        /* The name of the C# class */\n        name: string;\n        /* The namespace of the C# class */\n        namespace?: string;\n        /* The enclosing type of the C# class */\n        enclosingType?: ClassReference;\n    }\n\n    interface Args extends Identity, Node.Args {\n        /* The namespace alias for C# class */\n        namespaceAlias?: string;\n        /* Any generics used in the class reference */\n        generics?: Type[];\n        /* Whether or not the class reference should be fully-qualified */\n        fullyQualified?: boolean;\n        /* force global:: qualifier */\n        global?: boolean;\n        /* Whether or not the class reference is a collection */\n        isCollection?: boolean;\n\n        /**\n         * The multipart form method name used when this type is added to a multipart/form-data request.\n         * For example, primitives use \"AddStringPart\", while objects use \"AddJsonPart\".\n         *\n         * If this is null, then the type does not support adding to a multipart form.\n         * If this is undefined, then the type supports adding to a multipart form, and the default method name is used.\n         */\n        multipartMethodName?: string | null;\n        /**\n         * The multipart form method name used when a collection of this type is added to a multipart/form-data request.\n         * For example, primitives use \"AddStringParts\", while objects use \"AddJsonParts\".\n         *\n         * If this is null, then the type does not support adding to a multipart form.\n         * If this is undefined, then the type supports adding to a multipart form, and the default method name is used.\n         */\n        multipartMethodNameForCollection?: string | null;\n\n        /**\n         * Whether or not the class reference is a reference type.\n         * If this is undefined, then the type is indeterminate.\n         * (interpreted as false, in a lot of cases, but sometimes it's used to see if it's a class reference)\n         */\n        isReferenceType?: boolean;\n    }\n\n    interface CreationArgs extends Args {\n        /* the fully qualified name of the class reference */\n        fullyQualifiedName: string;\n    }\n}\n\nexport class ClassReference extends Node implements Type {\n    public readonly name: string;\n    public readonly namespace: string;\n    public readonly namespaceAlias: string | undefined;\n    public readonly enclosingType: ClassReference | undefined;\n    public readonly generics: Type[];\n    public readonly fullyQualified: boolean;\n    public readonly global: boolean;\n    public readonly fullyQualifiedName: string;\n    public readonly isCollection: boolean;\n    private readonly namespaceSegments: string[];\n    public readonly isReferenceType: boolean | undefined;\n    public readonly multipartMethodName: string | null;\n    public readonly multipartMethodNameForCollection: string | null;\n\n    constructor(\n        {\n            name,\n            namespace,\n            namespaceAlias,\n            enclosingType,\n            generics,\n            fullyQualified,\n            global,\n            fullyQualifiedName,\n            origin,\n            isCollection,\n            multipartMethodName,\n            multipartMethodNameForCollection,\n            isReferenceType\n        }: ClassReference.CreationArgs,\n        readonly scope: TypeScope,\n        generation: Generation\n    ) {\n        super(origin, generation);\n        this.name = name;\n        this.namespace = enclosingType?.namespace ?? namespace ?? \"\";\n        this.namespaceAlias = namespaceAlias;\n        this.enclosingType = enclosingType;\n        this.generics = generics ?? [];\n        this.fullyQualified = fullyQualified ?? false;\n        this.global = global ?? false;\n        this.namespaceSegments = this.namespace.split(\".\");\n        this.isCollection = isCollection ?? false;\n        if (enclosingType != null) {\n            // Use '+' separator for nested types to match the registry key format\n            // (structurally distinguishes nested types from sub-namespace types)\n            this.fullyQualifiedName = enclosingType.fullyQualifiedName\n                ? `${enclosingType.fullyQualifiedName}+${name}`\n                : name;\n        } else {\n            this.fullyQualifiedName = fullyQualifiedName ? fullyQualifiedName : name;\n        }\n        this.multipartMethodName = multipartMethodName === undefined ? \"AddJsonPart\" : multipartMethodName;\n        this.multipartMethodNameForCollection =\n            multipartMethodNameForCollection === undefined ? \"AddJsonParts\" : multipartMethodNameForCollection;\n        this.isReferenceType = isReferenceType;\n    }\n\n    public write(writer: Writer): void {\n        this.writeInternal(writer, false);\n    }\n\n    public writeAsAttribute(writer: Writer): void {\n        this.writeInternal(writer, true);\n    }\n\n    /**\n     * Returns the C# source-code form of the fully qualified name.\n     * Converts the internal '+' separator (used for nested types in the registry)\n     * back to '.' for valid C# syntax.\n     */\n    public get csharpQualifiedName(): string {\n        return this.fullyQualifiedName.replaceAll(\"+\", \".\");\n    }\n\n    public get scopedName() {\n        return this.enclosingType ? `${this.enclosingType.name}.${this.name}` : this.name;\n    }\n\n    private getScopedName(isAttribute: boolean): string {\n        const nameToWrite =\n            isAttribute && this.name.endsWith(\"Attribute\") ? this.name.slice(0, -\"Attribute\".length) : this.name;\n        return this.enclosingType ? `${this.enclosingType.name}.${nameToWrite}` : nameToWrite;\n    }\n\n    private writeInternal(writer: Writer, isAttribute: boolean): void {\n        const nameToWrite = this.getScopedName(isAttribute);\n\n        // if the name (or the enclosing type name) is ambiguous\n        const isAmbiguous =\n            this.registry.isAmbiguousTypeName(this.name) ||\n            this.registry.isAmbiguousTypeName(this.enclosingType?.name) ||\n            // check if the type is registered in another referenced namespace\n            writer\n                .getReferencedNamespaces()\n                .some((each) => each !== this.namespace && this.registry.isRegisteredTypeName(`${each}.${this.name}`));\n\n        const shouldGlobal =\n            !writer.skipGlobalQualifier &&\n            // if the type is global, then we need to globally qualify the type\n            (this.global ||\n                // Always qualify System namespaces to prevent ambiguity when customer\n                // projects define a type or namespace named \"System\"\n                this.namespaceSegments[0] === \"System\" ||\n                // if the first segment in a FQN is ambiguous, then we need to globally qualify the type if it gets expanded\n                this.registry.isAmbiguousTypeName(this.namespaceSegments[0]) ||\n                this.registry.isAmbiguousNamespaceName(this.namespaceSegments[0]) ||\n                // if the first namespace segment is both a type name and a namespace root,\n                // the C# compiler will resolve it to the type instead of the namespace (CS0426)\n                this.registry.hasTypeNamespaceConflict(this.namespaceSegments[0]) ||\n                // or we always are going to be using fully qualified namespaces\n                writer.generation.settings.useFullyQualifiedNamespaces);\n\n        // the fully qualified name of the type (with global:: qualifier if it necessary)\n        // For attributes, strip the \"Attribute\" suffix from the fully qualified name\n        let fqNameBase = this.csharpQualifiedName;\n        if (isAttribute && fqNameBase.endsWith(\"Attribute\")) {\n            // Replace the last occurrence of \"Attribute\" with empty string\n            const lastDotIndex = fqNameBase.lastIndexOf(\".\");\n            if (lastDotIndex >= 0) {\n                const namespacePart = fqNameBase.substring(0, lastDotIndex + 1);\n                const namePart = fqNameBase.substring(lastDotIndex + 1);\n                if (namePart.endsWith(\"Attribute\")) {\n                    fqNameBase = namespacePart + namePart.slice(0, -\"Attribute\".length);\n                }\n            } else {\n                fqNameBase = fqNameBase.slice(0, -\"Attribute\".length);\n            }\n        }\n        const fqName = `${shouldGlobal ? \"global::\" : \"\"}${fqNameBase}`;\n\n        if (!this.namespace) {\n            writer.write(nameToWrite);\n            return;\n        }\n        if (this.namespaceAlias != null) {\n            const alias = writer.addNamespaceAlias(this.namespaceAlias, this.resolveNamespace());\n            writer.write(`${alias}.${nameToWrite}`);\n        } else {\n            if (writer.skipImports) {\n                writer.write(nameToWrite);\n            } else {\n                if (this.fullyQualified) {\n                    writer.write(fqName);\n                } else {\n                    // if the class needs to be partially qualified, or we're skipping imports,\n                    // we need to at least partially qualify the type\n                    if (this.qualifiedTypeNameRequired(writer, isAttribute) || writer.skipImports) {\n                        const typeQualification = this.getTypeQualification({\n                            classReferenceNamespace: this.resolveNamespace(),\n                            namespaceToBeWrittenTo: writer.namespace,\n                            isAttribute\n                        });\n                        // check to see if the abbreviation would be ambiguous\n                        const segments = typeQualification.split(\".\");\n                        if (\n                            shouldGlobal ||\n                            this.registry.isAmbiguousTypeName(segments[0]) ||\n                            this.registry.isAmbiguousNamespaceName(segments[0]) ||\n                            this.registry.hasTypeNamespaceConflict(segments[0])\n                        ) {\n                            writer.write(fqName);\n                        } else {\n                            writer.write(`${typeQualification}${nameToWrite}`);\n                        }\n                    } else if (isAmbiguous && this.resolveNamespace() !== writer.namespace) {\n                        // If the class is ambiguous and not in this specific namespace\n                        // we must to fully qualify the type\n                        // writer.addReference(this);\n                        writer.write(fqName);\n                    } else if (this.registry.hasTypeNamespaceConflict(this.name)) {\n                        // If the class name itself matches a root namespace segment,\n                        // the C# compiler resolves it as the namespace instead of the type (CS0118).\n                        // Use the fully qualified name to disambiguate.\n                        writer.write(fqName);\n                    } else {\n                        // If the class is not ambiguous and is in this specific namespace,\n                        // we can use the short name\n                        writer.addReference(this);\n                        writer.write(nameToWrite);\n                    }\n                }\n            }\n        }\n        if (this.generics != null && this.generics.length > 0) {\n            writer.write(\"<\");\n            this.generics.forEach((generic, idx) => {\n                writer.writeNode(generic);\n                if (idx < this.generics.length - 1) {\n                    writer.write(\", \");\n                }\n            });\n            writer.write(\">\");\n        }\n    }\n\n    /**\n     * Computes the type qualification starting at the point where the namespace of the type\n     * differs from the namespace being written to.\n     *\n     * Example:\n     * - classReferenceNamespace: Company.Employee.Engineer.Backend\n     * - namespaceToBeWrittenTo: Company.Employee.Janitor\n     *\n     * Result: Engineer.Backend.\n     */\n    /**\n     * Fast check for naming conflicts between class name and namespace segments\n     */\n    private hasNamespaceConflict(className: string, currentNamespace: string): boolean {\n        // Fast path: check last segment first (most common case)\n        const lastDotIndex = currentNamespace.lastIndexOf(\".\");\n        const lastSegment = lastDotIndex === -1 ? currentNamespace : currentNamespace.substring(lastDotIndex + 1);\n\n        if (lastSegment === className) {\n            return true;\n        }\n\n        // Check if class name matches any segment in the CURRENT namespace\n        // (not the target namespace - that's what we're trying to reference)\n        const currentNamespaceSegments = currentNamespace.split(\".\");\n        return currentNamespaceSegments.includes(className);\n    }\n\n    private getTypeQualification({\n        classReferenceNamespace,\n        namespaceToBeWrittenTo,\n        isAttribute\n    }: {\n        classReferenceNamespace: string;\n        namespaceToBeWrittenTo: string;\n        isAttribute?: boolean;\n    }): string {\n        // If the class is in the exact same namespace, no qualification needed\n        if (classReferenceNamespace === namespaceToBeWrittenTo) {\n            return \"\";\n        }\n\n        // Check if we can use a shorter qualification by checking if the target namespace\n        // is a child of the current namespace - in this case, minimal qualification is preferred\n        if (classReferenceNamespace.startsWith(`${namespaceToBeWrittenTo}.`)) {\n            // The target is a child namespace, so we only need the relative path\n            const relativePath = classReferenceNamespace.substring(namespaceToBeWrittenTo.length + 1);\n            return `${relativePath}.`;\n        }\n\n        // Check for sibling namespaces with common root - use minimal qualification\n        const nameToCheck = isAttribute && !this.name.endsWith(\"Attribute\") ? `${this.name}Attribute` : this.name;\n        const hasConflict = this.hasNamespaceConflict(nameToCheck, namespaceToBeWrittenTo);\n\n        if (hasConflict) {\n            // If there's a namespace conflict, use full qualification\n            // Only use global:: when the entire namespace is just the class name\n            if (namespaceToBeWrittenTo.indexOf(\".\") === -1 && namespaceToBeWrittenTo === nameToCheck) {\n                return `global::${classReferenceNamespace}.`;\n            }\n            return `${classReferenceNamespace}.`;\n        }\n\n        // Find the common root and use minimal qualification from divergence point\n        const classReferenceSegments = this.namespaceSegments;\n        const namespaceToBeWrittenSegments = namespaceToBeWrittenTo.split(\".\");\n\n        let commonPrefixLength = 0;\n        const minLength = Math.min(classReferenceSegments.length, namespaceToBeWrittenSegments.length);\n        while (\n            commonPrefixLength < minLength &&\n            classReferenceSegments[commonPrefixLength] === namespaceToBeWrittenSegments[commonPrefixLength]\n        ) {\n            commonPrefixLength++;\n        }\n\n        // If we have a common root, use qualification from divergence point\n        if (commonPrefixLength > 0 && commonPrefixLength < classReferenceSegments.length) {\n            const remainingSegments = classReferenceSegments.slice(commonPrefixLength);\n            return `${remainingSegments.join(\".\")}.`;\n        }\n\n        // No common prefix or we're referencing the exact namespace, use full qualification\n        return `${classReferenceNamespace}.`;\n    }\n\n    /**\n     * This method addresses an edge case involving namespace and type conflicts.\n     * When a class name matches any segment of a namespace within the project, the .NET compiler\n     * might require references to that class to be qualified to avoid conflicts.\n     * The rules governing this behavior are complex, so this method errs on the side of caution\n     * by performing a simple check.\n     *\n     * -- Exploration supporting this --\n     *\n     * LEGEND: <Class Name> -- <Namespace of Class>\n     * SETUP: Company.Net is the root namespace (i.e., the project name).\n     *\n     * Full qualification required:\n     * - Guarantor -- Company.Net.Guarantor.V1\n     * - ImportInvoice -- Company.Net.ImportInvoice.V1\n     * - ImportInvoice -- Company.Net.Guarantor.V1 (if Candid.Net.ImportInvoice.V1 also exists)\n     *\n     * Qualification not required:\n     * - V1 -- Company.Net.Guarantor.V1\n     * - V1 -- Company.Net.Guarantor.V1.Types\n     * - Net -- Company.Net\n     */\n    private qualifiedTypeNameRequired(writer: Writer, isAttribute: boolean): boolean {\n        const currentNamespace = writer.namespace;\n\n        if (this.namespace === currentNamespace) {\n            return false;\n        }\n\n        const nameToDeconflict = isAttribute && !this.name.endsWith(\"Attribute\") ? `${this.name}Attribute` : this.name;\n\n        // Check for direct namespace conflicts first\n        if (this.hasNamespaceConflict(nameToDeconflict, currentNamespace)) {\n            return true;\n        }\n\n        // For attributes, check if there's a real conflict with another attribute type\n        // In C#, [Foo] automatically looks for FooAttribute, not Foo\n        // So [Nullable] won't conflict with System.Nullable<T> - it looks for NullableAttribute\n        if (isAttribute) {\n            const hasConflict = this.potentialConflictWithGeneratedType(writer, isAttribute);\n            if (!hasConflict) {\n                // No conflict with another attribute, so we can rely on the using statement\n                return false;\n            }\n        }\n\n        // For child namespaces (like SeedCsharpNamespaceConflict.A.Aa from SeedCsharpNamespaceConflict.A),\n        // we generally don't need qualification unless there's a specific conflict\n        if (this.namespace.startsWith(`${currentNamespace}.`)) {\n            // Only require qualification if there's an actual naming conflict\n            return this.potentialConflictWithGeneratedType(writer, isAttribute);\n        }\n\n        // Check for potential conflicts with generated types regardless of namespace\n        // This handles both internal and external types consistently\n        return this.potentialConflictWithGeneratedType(writer, isAttribute);\n    }\n\n    private potentialConflictWithGeneratedType(writer: Writer, isAttribute: boolean = false) {\n        // For attributes, we check for conflicts differently\n        // In C#, [Foo] looks for FooAttribute first, then falls back to Foo\n        // Since our attribute classes are registered with names like \"Nullable\" (not \"NullableAttribute\"),\n        // we just check if there's another type with the same name in a different namespace\n        const matchingNamespaces = writer.getAllTypeClassReferences().get(this.name);\n        if (matchingNamespaces == null) {\n            // No types with this name at all, so no conflict\n            return false;\n        }\n\n        // If there's a ClassReference besides the one that we're writing with the same name,\n        // then there may be conflict, so return true\n        const matchingNamespacesCopy = new Set(matchingNamespaces);\n        matchingNamespacesCopy.delete(this.namespace);\n\n        if (matchingNamespacesCopy.size === 0) {\n            // No other types with this name in other namespaces\n            // For attributes in attribute context, there's no conflict with non-attribute types\n            // because C# looks for FooAttribute when you write [Foo]\n            if (isAttribute) {\n                return false;\n            }\n            // Even if there's no type conflict, check for namespace conflicts\n            // This handles cases like class \"A\" conflicting with namespace \"A\"\n            return this.hasProjectNamespaceConflict(writer);\n        }\n\n        const currentNamespace = writer.namespace;\n        // Check if any of the conflicting namespaces would actually cause ambiguity\n        for (const conflictingNamespace of matchingNamespacesCopy) {\n            // Only consider it a real conflict if the conflicting type is in the same namespace\n            // or a parent namespace that would make qualification ambiguous\n            if (conflictingNamespace === currentNamespace || currentNamespace.startsWith(`${conflictingNamespace}.`)) {\n                return true;\n            }\n        }\n\n        // For attributes, if we haven't found a conflict yet, there isn't one\n        // (because C# disambiguates [Foo] vs Foo<T> automatically)\n        if (isAttribute) {\n            return false;\n        }\n\n        // Also check if the class name matches any namespace segment in the project\n        return this.hasProjectNamespaceConflict(writer);\n    }\n\n    private hasProjectNamespaceConflict(writer: Writer): boolean {\n        const allNamespaceSegments = writer.getAllNamespaceSegments();\n        return allNamespaceSegments.has(this.name);\n    }\n\n    public resolveNamespace(): string {\n        return this.registry.resolveNamespace(this.namespace);\n    }\n\n    /** returns this class reference as a fully qualified class reference */\n    public asFullyQualified() {\n        return this.csharp.classReferenceInternal({\n            ...this,\n            fullyQualified: true\n        });\n    }\n\n    /** returns a class instantiation node for this class reference */\n    public new(args?: Omit<ClassInstantiation.Args, \"classReference\">) {\n        args = args ?? { arguments_: [] };\n        return this.csharp.instantiateClass({\n            ...args,\n            classReference: this\n        });\n    }\n\n    public explicit(name: string) {\n        if (!this.origin) {\n            fail(\n                `Cannot create explicitly named member '${name}' on '${this.name}' because the class is not bound to an origin.`\n            );\n        }\n        return this.model.explicit(this.origin, name);\n    }\n\n    public registerField(expectedName: string, origin?: Origin, field?: Field): string {\n        return this.scope.registerField(expectedName, origin, field);\n    }\n\n    public getFieldName(origin: Origin, expectedName: string): string | undefined {\n        return this.scope.getFieldName(origin, expectedName);\n    }\n\n    public registerMethod(name: string, origin?: Origin): string {\n        return name;\n    }\n\n    public get isOptional(): boolean {\n        return false;\n    }\n\n    public asOptional(): Type {\n        return new Optional(this, this.generation);\n    }\n\n    public asNullable(): Type {\n        return new Nullable(this, this.generation);\n    }\n\n    public asNonOptional(): Type {\n        return this;\n    }\n    public get defaultValue(): Literal {\n        return this.csharp.Literal.null();\n    }\n    /** returns true if this class reference is the IAsyncEnumerable class */\n    public get isAsyncEnumerable() {\n        return this.name === \"IAsyncEnumerable\" && this.namespace === \"System.Collections.Generic\";\n    }\n}\n","/**\n * Browser-compatible replacement for Node.js `assert.fail`.\n *\n * Throws an error with the given message. This is functionally equivalent\n * to `assert.fail(message)` from the Node.js `assert` module, but works\n * in browser environments without requiring a Node.js polyfill.\n *\n * @param message - The error message\n * @returns never - This function always throws\n */\nexport function fail(message?: string): never {\n    throw new Error(message ?? \"Assertion failed\");\n}\n","import { FernIr } from \"@fern-fern/ir-sdk\";\nimport { type Generation } from \"../../context/generation-info.js\";\nimport { fail } from \"../../utils/fail.js\";\nimport { hash, uniqueId } from \"../../utils/text.js\";\nimport { Literal } from \"../code/Literal.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { ClassReference } from \"./ClassReference.js\";\nimport { type Type } from \"./IType.js\";\n\n/**\n * Base class for all C# type representations in the AST.\n *\n * This class provides a polymorphic type system that makes it easier to work with\n * different C# types without requiring switch statements on discriminated unions.\n * Each concrete type (Integer, String, List, etc.) extends this base class and\n * provides its own implementation of abstract members.\n */\nexport abstract class BaseType extends AstNode {\n    /**\n     * Gets the multipart form method name used when this type is added to a multipart/form-data request.\n     * For example, primitives use \"AddStringPart\", while objects use \"AddJsonPart\".\n     */\n    public abstract get multipartMethodName(): string | null;\n\n    /**\n     * Gets the multipart form method name used when a collection of this type is added to a multipart/form-data request.\n     * For example, primitives use \"AddStringParts\", while objects use \"AddJsonParts\".\n     */\n    public abstract get multipartMethodNameForCollection(): string | null;\n\n    /**\n     * The default value for this type (e.g., null for reference types, 0 for integers, etc.).\n     */\n    public readonly defaultValue: Literal = this.csharp.Literal.null();\n\n    /**\n     * Indicates whether this type is optional (nullable). Defaults to false.\n     */\n    public readonly isOptional: boolean = false;\n\n    /**\n     * Indicates whether this type is a reference type (true), value type (false), or indeterminate (undefined).\n     * Reference types include classes, interfaces, strings, etc. Value types include structs, primitives, etc.\n     */\n    public readonly isReferenceType: boolean | undefined = false;\n\n    /**\n     * The string representation of this type, typically the constructor name.\n     * Used primarily for debugging and default write implementations.\n     */\n    public readonly fullyQualifiedName: string = this.constructor.name;\n\n    /**\n     * Indicates whether this type represents an async enumerable (IAsyncEnumerable<T>).\n     */\n    public get isAsyncEnumerable(): boolean {\n        return false;\n    }\n\n    /**\n     * Indicates whether this type represents a collection (List, Set, Map, etc.).\n     */\n    public get isCollection(): boolean {\n        return false;\n    }\n\n    /**\n     * Gets the item type for collection types (e.g., T in List<T>, or KeyValuePair<K,V> in Map<K,V>).\n     * Returns undefined for non-collection types.\n     */\n    public getCollectionItemType(): Type | undefined {\n        return undefined;\n    }\n\n    /**\n     * Wraps this type in an Optional type if it's not already optional.\n     * If this type is already optional, returns it unchanged.\n     * Semantically represents: field can be omitted from JSON.\n     */\n    public asOptional(): Type {\n        return new Optional(this, this.generation);\n    }\n\n    /**\n     * Wraps this type in a Nullable type if it's not already nullable.\n     * If this type is already nullable, returns it unchanged.\n     * Semantically represents: value can be null.\n     * Note: In C#, both optional and nullable use the same ? syntax.\n     */\n    public asNullable(): Type {\n        return new Nullable(this, this.generation);\n    }\n\n    /**\n     * Returns the underlying type if this is an Optional type, otherwise returns this type unchanged.\n     * This is useful for getting the non-nullable version of a type.\n     */\n    public asNonOptional(): Type {\n        return this;\n    }\n\n    /**\n     * Writes this type to the provided writer.\n     * The default implementation writes the type name, but most subclasses override this\n     * to provide more specific C# type syntax.\n     */\n    public override write(writer: Writer): void {\n        writer.write(this.fullyQualifiedName);\n    }\n\n    /**\n     * Writes an empty collection initializer for this type (e.g., \"= new List<T>();\").\n     * The default implementation is a no-op. Collection types override this to provide\n     * appropriate initialization syntax.\n     */\n    public writeEmptyCollectionInitializer(writer: Writer): void {\n        // default - no-op\n    }\n\n    /**\n     * This returns a typeLiteral for the appropriate type with a value,\n     * derived from the getDefaultFor string\n     *\n     * The value should give a deterministic result for the same input string.\n     * This is used to generate a default value for a type when no value is provided.\n     *\n     * @param input - The input string to derive the default value from\n     * @returns A typeLiteral for the appropriate type with a value, derived from the input string\n     * */\n    public getDeterminsticDefault(input: string): Literal {\n        return this.csharp.Literal.nop();\n    }\n}\n\n/**\n * Base class for all primitive types in C# (int, string, bool, double, etc.).\n * Primitive types are serialized as strings in multipart form data.\n */\nabstract class PrimitiveType extends BaseType {\n    public override get multipartMethodName(): string | null {\n        return \"AddStringPart\";\n    }\n\n    public override get multipartMethodNameForCollection(): string | null {\n        return \"AddStringParts\";\n    }\n}\n\n/**\n * Base class for types that are always reference types but don't fit into CollectionType or ObjectType categories.\n * This includes delegates (Action, Func), optional types, union types, and special types like Binary and SystemType.\n */\nabstract class ReferenceType extends BaseType {\n    public override readonly isReferenceType: boolean | undefined = true;\n}\n\n/**\n * Base class for all collection types in C# (List, Set, Map, etc.).\n * Collection types are serialized as JSON in multipart form data and are always reference types.\n */\nabstract class CollectionType extends ReferenceType {\n    public override get isCollection(): boolean {\n        return true;\n    }\n\n    public override get multipartMethodName(): string | null {\n        return \"AddJsonPart\";\n    }\n\n    public override get multipartMethodNameForCollection(): string | null {\n        return \"AddJsonParts\";\n    }\n}\n\n/**\n * Base class for all object/reference types in C# (classes, interfaces, etc.).\n * Object types are serialized as JSON in multipart form data and are always reference types.\n */\nabstract class ObjectType extends ReferenceType {\n    public override get multipartMethodName(): string | null {\n        return \"AddJsonPart\";\n    }\n\n    public override get multipartMethodNameForCollection(): string | null {\n        return \"AddJsonParts\";\n    }\n}\n\n/**\n * Represents an optional (nullable) type in C#.\n * For value types, this renders as T?, and for reference types, it also uses the nullable syntax.\n */\nexport class Optional extends ReferenceType {\n    public override readonly isOptional = true;\n\n    /**\n     * The underlying non-nullable type.\n     */\n    public readonly value: Type;\n\n    /**\n     * Creates a new optional type.\n     * @param value - The underlying non-nullable type\n     * @param generation - The generation context for code generation\n     */\n    constructor(value: Type, generation: Generation) {\n        super(generation);\n        this.value = value;\n    }\n\n    public override get isCollection(): boolean {\n        return false;\n    }\n\n    public override get multipartMethodName(): string | null {\n        return this.value.multipartMethodName;\n    }\n\n    public override get multipartMethodNameForCollection(): string | null {\n        return this.value.multipartMethodNameForCollection;\n    }\n\n    public override asOptional(): Type {\n        return this;\n    }\n\n    public override asNullable(): Type {\n        return this;\n    }\n\n    public override asNonOptional(): Type {\n        return this.value;\n    }\n\n    public override write(writer: Writer): void {\n        this.value.write(writer);\n        if (!this.value.isOptional) {\n            writer.write(\"?\");\n        }\n    }\n}\n\n/**\n * Represents a nullable type in C#.\n * This renders as T? where T is the inner type.\n * Semantically represents: value can be null.\n */\nexport class Nullable extends ReferenceType {\n    public override readonly isOptional = true;\n\n    /**\n     * The underlying non-nullable type.\n     */\n    public readonly value: Type;\n\n    /**\n     * Creates a new nullable type.\n     * @param value - The underlying non-nullable type\n     * @param generation - The generation context for code generation\n     */\n    constructor(value: Type, generation: Generation) {\n        super(generation);\n        this.value = value;\n    }\n\n    public override get isCollection(): boolean {\n        return false;\n    }\n\n    public override get multipartMethodName(): string | null {\n        return this.value.multipartMethodName;\n    }\n\n    public override get multipartMethodNameForCollection(): string | null {\n        return this.value.multipartMethodNameForCollection;\n    }\n\n    public override asOptional(): Type {\n        // If we make a nullable type optional, it's still just nullable\n        return this;\n    }\n\n    public override asNullable(): Type {\n        return this;\n    }\n\n    public override asNonOptional(): Type {\n        return this.value;\n    }\n\n    public override write(writer: Writer): void {\n        this.value.write(writer);\n        if (!this.value.isOptional) {\n            writer.write(\"?\");\n        }\n    }\n}\n\n/**\n * Represents a wrapped Optional<T> type in C#.\n * This renders as Optional<T> where T is the inner type.\n * Used for explicit optional/undefined semantics in API requests.\n */\nexport class OptionalWrapper extends ReferenceType {\n    public override readonly isOptional = true;\n\n    /**\n     * The underlying type wrapped in Optional<T>.\n     */\n    public readonly value: Type;\n\n    /**\n     * Creates a new Optional<T> wrapper type.\n     * @param value - The underlying type to wrap\n     * @param generation - The generation context for code generation\n     */\n    constructor(value: Type, generation: Generation) {\n        super(generation);\n        this.value = value;\n    }\n\n    public override get isCollection(): boolean {\n        return false;\n    }\n\n    public override get multipartMethodName(): string | null {\n        return this.value.multipartMethodName;\n    }\n\n    public override get multipartMethodNameForCollection(): string | null {\n        return this.value.multipartMethodNameForCollection;\n    }\n\n    public override asOptional(): Type {\n        return this;\n    }\n\n    public override asNullable(): Type {\n        return this;\n    }\n\n    public override asNonOptional(): Type {\n        return this.value;\n    }\n\n    public override write(writer: Writer): void {\n        const optionalRef = this.generation.Types.Optional;\n        writer.addReference(optionalRef);\n        writer.write(\"Optional<\");\n        this.value.write(writer);\n        writer.write(\">\");\n    }\n}\n\nexport namespace Primitive {\n    /**\n     * Represents the C# `int` type (32-bit signed integer).\n     */\n    export class Integer extends PrimitiveType {\n        public override fullyQualifiedName = \"int\";\n        public override defaultValue = this.csharp.Literal.integer(0);\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique number using the default With string as the seed.\n            return this.csharp.Literal.integer(hash(input) & 0x7fffffff);\n        }\n    }\n\n    /**\n     * Represents the C# `long` type (64-bit signed integer).\n     */\n    export class Long extends PrimitiveType {\n        public override fullyQualifiedName = \"long\";\n        public override defaultValue = this.csharp.Literal.long(0);\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique number using the defaultWith string as the seed.\n            return this.csharp.Literal.long(hash(input) & 0x7ffffffffffff);\n        }\n    }\n\n    /**\n     * Represents the C# `uint` type (32-bit unsigned integer).\n     */\n    export class Uint extends PrimitiveType {\n        public override fullyQualifiedName = \"uint\";\n        public override defaultValue = this.csharp.Literal.uint(0);\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique number using the defaultWith string as the seed.\n            return this.csharp.Literal.uint(hash(input) & 0x7fffffff);\n        }\n    }\n\n    /**\n     * Represents the C# `ulong` type (64-bit unsigned integer).\n     */\n    export class ULong extends PrimitiveType {\n        public override fullyQualifiedName = \"ulong\";\n        public override defaultValue = this.csharp.Literal.ulong(0);\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique number using the defaultWith string as the seed.\n            return this.csharp.Literal.ulong(hash(input) & 0x7ffffffffffff);\n        }\n    }\n\n    /**\n     * Represents the C# `string` type.\n     * Strings are reference types in C#.\n     */\n    export class String extends PrimitiveType {\n        public override fullyQualifiedName = \"string\";\n        public override defaultValue = this.csharp.Literal.string(\"\");\n        public override readonly isReferenceType: boolean | undefined = true;\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique string using the defaultWith string as the seed.\n            return this.csharp.Literal.string(`<${input}>`);\n        }\n    }\n\n    /**\n     * Represents the C# `bool` type.\n     */\n    export class Boolean extends PrimitiveType {\n        public override fullyQualifiedName = \"bool\";\n        public override defaultValue = this.csharp.Literal.boolean(false);\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique boolean using the defaultWith string as the seed.\n            return this.csharp.Literal.boolean(hash(input) % 2 === 0);\n        }\n    }\n\n    /**\n     * Represents the C# `float` type (32-bit floating-point number).\n     */\n    export class Float extends PrimitiveType {\n        public override fullyQualifiedName = \"float\";\n        public override defaultValue = this.csharp.Literal.float(0);\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique float using the defaultWith string as the seed.\n            return this.csharp.Literal.float((hash(input) & 0x7fffffff) / 100);\n        }\n    }\n\n    /**\n     * Represents the C# `double` type (64-bit floating-point number).\n     */\n    export class Double extends PrimitiveType {\n        public override fullyQualifiedName = \"double\";\n        public override defaultValue = this.csharp.Literal.double(0);\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique double using the defaultWith string as the seed.\n            return this.csharp.Literal.double((hash(input) & 0x7ffffffffffff) / 100);\n        }\n    }\n\n    /**\n     * Represents the C# `object` type (base type for all reference types).\n     */\n    export class Object extends ObjectType {\n        public override fullyQualifiedName = \"object\";\n    }\n\n    export class ArbitraryType extends PrimitiveType {\n        constructor(\n            public override readonly fullyQualifiedName: string,\n            generation: Generation\n        ) {\n            super(generation);\n        }\n    }\n}\n\nexport namespace Value {\n    /**\n     * Represents the C# `byte[]` type (byte array/binary data).\n     * This type is used for binary data.\n     */\n    export class Binary extends ReferenceType {\n        public override get multipartMethodName(): string | null {\n            fail(\"byte[] can not be added to multipart form\");\n            return \"\";\n        }\n\n        public override get multipartMethodNameForCollection(): string {\n            fail(\"byte[] can not be added to multipart form\");\n            return \"\";\n        }\n\n        public override write(writer: Writer): void {\n            writer.write(\"byte[]\");\n        }\n    }\n    /**\n     * Represents the C# `DateOnly` type (date without time component).\n     */\n    export class DateOnly extends PrimitiveType {\n        public override fullyQualifiedName = \"DateOnly\";\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique date using the defaultWith string as the seed.\n            const date = new Date(hash(input) & 0x7ffffffffffff);\n            return this.csharp.Literal.date(date.toISOString());\n        }\n    }\n\n    /**\n     * Represents the C# `DateTime` type.\n     */\n    export class DateTime extends PrimitiveType {\n        public override fullyQualifiedName = \"DateTime\";\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique date using the defaultWith string as the seed.\n            const date = new Date(hash(input) & 0x7ffffffffffff);\n            return this.csharp.Literal.datetime(date.toISOString());\n        }\n    }\n    /**\n     * Represents a UUID type, which is represented as a C# `string`.\n     * Note: C# GUID is a value type, but we use string for UUID compatibility.\n     */\n    export class Uuid extends PrimitiveType {\n        public override fullyQualifiedName = \"string\";\n        public override defaultValue = this.csharp.Literal.string(\"\");\n\n        // C# GUID is a value type, but we use string for UUID\n        public override readonly isReferenceType: boolean | undefined = true;\n        public override getDeterminsticDefault(input: string): Literal {\n            // make a unique UUID using the defaultWith string as the seed.\n            return this.csharp.Literal.string(uniqueId(input));\n        }\n    }\n\n    /**\n     * Represents a string enum type (enum backed by string values).\n     * This extends PrimitiveType because string enums are serialized as strings.\n     */\n    export class StringEnum extends PrimitiveType {\n        /**\n         * The class reference for the string enum type.\n         */\n        public readonly value: ClassReference;\n\n        /**\n         * Creates a new string enum type.\n         * @param value - The class reference for the enum\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: ClassReference, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public override write(writer: Writer): void {\n            this.Types.StringEnum(this.value).write(writer);\n        }\n    }\n}\n\nexport namespace Collection {\n    /**\n     * Represents a C# array type (T[]).\n     * Arrays can be rendered as ReadOnlyMemory<T> for certain primitive types when configured.\n     */\n    export class Array extends ObjectType {\n        public override readonly isReferenceType: boolean | undefined = true;\n\n        /**\n         * The element type of the array.\n         */\n        public readonly value: Type;\n\n        /**\n         * Creates a new array type.\n         * @param value - The element type of the array\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: Type, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public override getCollectionItemType(): Type | undefined {\n            return this.value;\n        }\n\n        public override write(writer: Writer): void {\n            if (isReadOnlyMemoryType({ writer, value: this.value })) {\n                this.writeReadOnlyMemoryType({ writer, value: this.value });\n                return;\n            }\n            this.value.write(writer);\n            writer.write(\"[]\");\n        }\n\n        private writeReadOnlyMemoryType({ writer, value }: { writer: Writer; value: Type }): void {\n            writer.writeNode(this.System.ReadOnlyMemory(value));\n        }\n    }\n\n    /**\n     * Represents the concrete C# `List<T>` type.\n     * Can be rendered as ReadOnlyMemory<T> for certain primitive types when configured.\n     */\n    export class ListType extends CollectionType {\n        /**\n         * The element type of the list.\n         */\n        public readonly value: Type;\n\n        /**\n         * Creates a new List<T> type.\n         * @param value - The element type of the list\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: Type, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public override get multipartMethodName(): string | null {\n            return this.value.multipartMethodNameForCollection;\n        }\n\n        public override get multipartMethodNameForCollection(): string | null {\n            return this.value.multipartMethodNameForCollection;\n        }\n\n        public override getCollectionItemType(): Type | undefined {\n            return this.value;\n        }\n\n        public override write(writer: Writer): void {\n            if (isReadOnlyMemoryType({ writer, value: this.value })) {\n                this.writeReadOnlyMemoryType({ writer, value: this.value });\n                return;\n            }\n            writer.writeNode(this.System.Collections.Generic.List(this.value));\n        }\n\n        public override writeEmptyCollectionInitializer(writer: Writer): void {\n            if (isReadOnlyMemoryType({ writer, value: this.value })) {\n                return;\n            }\n            writer.writeStatement(\" = \", this.System.Collections.Generic.List(this.value).new());\n        }\n\n        private writeReadOnlyMemoryType({ writer, value }: { writer: Writer; value: Type }): void {\n            writer.writeNode(this.System.ReadOnlyMemory(value));\n        }\n    }\n\n    /**\n     * Represents the C# `IEnumerable<T>` interface type.\n     * Can be rendered as ReadOnlyMemory<T> for certain primitive types when configured.\n     */\n    export class List extends CollectionType {\n        /**\n         * The element type of the enumerable.\n         */\n        public readonly value: Type;\n\n        /**\n         * Creates a new IEnumerable<T> type.\n         * @param value - The element type of the enumerable\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: Type, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public override get multipartMethodName(): string | null {\n            return this.value.multipartMethodNameForCollection;\n        }\n\n        public override get multipartMethodNameForCollection(): string | null {\n            return this.value.multipartMethodNameForCollection;\n        }\n\n        public override getCollectionItemType(): Type {\n            return this.value;\n        }\n\n        public override write(writer: Writer): void {\n            if (isReadOnlyMemoryType({ writer, value: this.value })) {\n                this.writeReadOnlyMemoryType({ writer, value: this.value });\n                return;\n            }\n            writer.writeNode(this.System.Collections.Generic.IEnumerable(this.value));\n        }\n\n        public override writeEmptyCollectionInitializer(writer: Writer): void {\n            if (isReadOnlyMemoryType({ writer, value: this.value })) {\n                return;\n            }\n            writer.writeStatement(\" = \", this.System.Collections.Generic.List(this.value).new());\n        }\n\n        private writeReadOnlyMemoryType({ writer, value }: { writer: Writer; value: Type }): void {\n            writer.writeNode(this.System.ReadOnlyMemory(value));\n        }\n    }\n\n    /**\n     * Represents the C# `HashSet<T>` type.\n     */\n    export class Set extends CollectionType {\n        /**\n         * The element type of the set.\n         */\n        public readonly value: Type;\n\n        /**\n         * Creates a new HashSet<T> type.\n         * @param value - The element type of the set\n         * @param generation - The generation context for code generation\n         */\n        constructor(value: Type, generation: Generation) {\n            super(generation);\n            this.value = value;\n        }\n\n        public override getCollectionItemType(): Type | undefined {\n            return this.value;\n        }\n\n        public override write(writer: Writer): void {\n            writer.writeNode(this.System.Collections.Generic.HashSet(this.value));\n        }\n\n        public override writeEmptyCollectionInitializer(writer: Writer): void {\n            writer.writeStatement(\" = \", this.System.Collections.Generic.HashSet(this.value).new());\n        }\n    }\n\n    /**\n     * Represents the concrete C# `Dictionary<TKey, TValue>` type.\n     * Can optionally simplify Dictionary<string, object?> to just `object` based on settings.\n     */\n    export class Map extends CollectionType {\n        /**\n         * The key type of the dictionary.\n         */\n        public readonly keyType: Type;\n\n        /**\n         * Optional configuration for this map type.\n         */\n        public readonly options?: { dontSimplify?: boolean };\n\n        /**\n         * The value type of the dictionary.\n         */\n        public readonly valueType: Type;\n\n        /**\n         * Creates a new Dictionary<TKey, TValue> type.\n         * @param keyType - The key type of the dictionary\n         * @param valueType - The value type of the dictionary\n         * @param generation - The generation context for code generation\n         * @param options - Optional configuration (e.g., whether to skip simplification)\n         */\n        constructor(keyType: Type, valueType: Type, generation: Generation, options?: { dontSimplify?: boolean }) {\n            super(generation);\n            this.keyType = keyType;\n            this.valueType = valueType;\n            this.options = options;\n        }\n\n        public override getCollectionItemType(): Type | undefined {\n            return this.Collection.keyValuePair(this.keyType, this.valueType);\n        }\n\n        public override write(writer: Writer): void {\n            if (\n                this.options?.dontSimplify !== true &&\n                writer.generation.settings.simplifyObjectDictionaries &&\n                this.keyType instanceof Primitive.String &&\n                this.valueType instanceof Optional &&\n                this.valueType.value instanceof Primitive.Object\n            ) {\n                writer.write(\"object\");\n                return;\n            }\n            writer.write(this.System.Collections.Generic.Dictionary(this.keyType, this.valueType));\n        }\n\n        public override writeEmptyCollectionInitializer(writer: Writer): void {\n            writer.writeStatement(\n                \" = \",\n                this.System.Collections.Generic.Dictionary(this.keyType, this.valueType).new()\n            );\n        }\n    }\n\n    /**\n     * Represents the C# `IDictionary<TKey, TValue>` interface type.\n     * Can optionally simplify IDictionary<string, object?> to just `object` based on settings.\n     */\n    export class IDictionary extends CollectionType {\n        /**\n         * The key type of the dictionary.\n         */\n        public readonly keyType: Type;\n\n        /**\n         * Optional configuration for this dictionary type.\n         */\n        public readonly options?: { dontSimplify?: boolean };\n\n        /**\n         * The value type of the dictionary.\n         */\n        public readonly valueType: Type;\n\n        /**\n         * Creates a new IDictionary<TKey, TValue> type.\n         * @param keyType - The key type of the dictionary\n         * @param valueType - The value type of the dictionary\n         * @param generation - The generation context for code generation\n         * @param options - Optional configuration (e.g., whether to skip simplification)\n         */\n        constructor(keyType: Type, valueType: Type, generation: Generation, options?: { dontSimplify?: boolean }) {\n            super(generation);\n            this.keyType = keyType;\n            this.valueType = valueType;\n            this.options = options;\n        }\n\n        public override getCollectionItemType(): Type | undefined {\n            return this.Collection.keyValuePair(this.keyType, this.valueType);\n        }\n\n        public override write(writer: Writer): void {\n            if (\n                this.options?.dontSimplify !== true &&\n                writer.generation.settings.simplifyObjectDictionaries &&\n                this.keyType instanceof Primitive.String &&\n                this.valueType instanceof Optional &&\n                this.valueType.value instanceof Primitive.Object\n            ) {\n                writer.write(\"object\");\n                return;\n            }\n            writer.writeNode(this.System.Collections.Generic.IDictionary(this.keyType, this.valueType));\n        }\n    }\n\n    /**\n     * Represents the C# `KeyValuePair<TKey, TValue>` struct type.\n     * This is a value type (struct) in C#, not a reference type.\n     */\n    export class KeyValuePair extends ObjectType {\n        public override readonly isReferenceType: boolean | undefined = false;\n\n        /**\n         * The key type of the key-value pair.\n         */\n        public readonly keyType: Type;\n\n        /**\n         * The value type of the key-value pair.\n         */\n        public readonly valueType: Type;\n\n        /**\n         * Creates a new KeyValuePair<TKey, TValue> type.\n         * @param keyType - The key type\n         * @param valueType - The value type\n         * @param generation - The generation context for code generation\n         */\n        constructor(keyType: Type, valueType: Type, generation: Generation) {\n            super(generation);\n            this.keyType = keyType;\n            this.valueType = valueType;\n        }\n\n        public override write(writer: Writer): void {\n            writer.writeNode(this.System.Collections.Generic.KeyValuePair(this.keyType, this.valueType));\n        }\n    }\n}\n\n/**\n * Converts an array of C# type names to their corresponding PrimitiveTypeV1 enum values.\n * This is used for converting ReadOnlyMemory type configurations.\n *\n * @param readOnlyMemoryTypeNames - Array of C# type names (e.g., \"int\", \"string\", \"bool\")\n * @returns Array of PrimitiveTypeV1 enum values\n * @throws Error if an unknown type name is encountered (should be unreachable if validated earlier)\n */\nexport function convertReadOnlyPrimitiveTypes(readOnlyMemoryTypeNames: string[]): FernIr.PrimitiveTypeV1[] {\n    return readOnlyMemoryTypeNames.map<FernIr.PrimitiveTypeV1>((typeName) => {\n        switch (typeName) {\n            case \"int\":\n                return FernIr.PrimitiveTypeV1.Integer;\n            case \"long\":\n                return FernIr.PrimitiveTypeV1.Long;\n            case \"uint\":\n                return FernIr.PrimitiveTypeV1.Uint;\n            case \"ulong\":\n                return FernIr.PrimitiveTypeV1.Uint64;\n            case \"string\":\n                return FernIr.PrimitiveTypeV1.String;\n            case \"bool\":\n            case \"boolean\":\n                return FernIr.PrimitiveTypeV1.Boolean;\n            case \"float\":\n                return FernIr.PrimitiveTypeV1.Float;\n            case \"double\":\n                return FernIr.PrimitiveTypeV1.Double;\n            default:\n                // This should be unreachable; the ReadOnlyMemory types should have already\n                // been validated at this point.\n                throw new Error(`Internal error; unknown ReadOnlyMemory type: ${typeName}`);\n        }\n    });\n}\n\n/**\n * Determines whether a given type should be rendered as `ReadOnlyMemory<T>` instead of an array or list.\n * This check is recursive for Optional types and delegates to the writer's configuration for the actual check.\n *\n * @param params - Object containing the writer and type to check\n * @param params.writer - The writer instance containing configuration for ReadOnlyMemory types\n * @param params.value - The type to check\n * @returns true if the type should be rendered as ReadOnlyMemory, false otherwise\n */\nfunction isReadOnlyMemoryType({ writer, value }: { writer: Writer; value: Type }): boolean {\n    if (value instanceof Optional) {\n        return isReadOnlyMemoryType({ writer, value: value.value });\n    }\n    // Check if it's a primitive type that should be ReadOnlyMemory\n    if (value instanceof Primitive.Integer) {\n        return writer.isReadOnlyMemoryType(\"int\");\n    }\n    if (value instanceof Primitive.Long) {\n        return writer.isReadOnlyMemoryType(\"long\");\n    }\n    if (value instanceof Primitive.Uint) {\n        return writer.isReadOnlyMemoryType(\"uint\");\n    }\n    if (value instanceof Primitive.ULong) {\n        return writer.isReadOnlyMemoryType(\"ulong\");\n    }\n    if (value instanceof Primitive.String) {\n        return writer.isReadOnlyMemoryType(\"string\");\n    }\n    if (value instanceof Primitive.Boolean) {\n        return writer.isReadOnlyMemoryType(\"bool\");\n    }\n    if (value instanceof Primitive.Float) {\n        return writer.isReadOnlyMemoryType(\"float\");\n    }\n    if (value instanceof Primitive.Double) {\n        return writer.isReadOnlyMemoryType(\"double\");\n    }\n    return false;\n}\n","export * as FernIr from \"./api/index.mjs\";\nexport { FernIrError, FernIrTimeoutError } from \"./errors/index.mjs\";\nexport * from \"./exports.mjs\";\nexport * as serialization from \"./serialization/index.mjs\";\n","export * from \"./resources/index.mjs\";\n","export * as audience from \"./audience/index.mjs\";\nexport * from \"./audience/types/index.mjs\";\nexport * as auth from \"./auth/index.mjs\";\nexport * from \"./auth/types/index.mjs\";\nexport * as commons from \"./commons/index.mjs\";\nexport * from \"./commons/types/index.mjs\";\nexport * as constants from \"./constants/index.mjs\";\nexport * from \"./constants/types/index.mjs\";\nexport * as dynamic from \"./dynamic/index.mjs\";\nexport * as environment from \"./environment/index.mjs\";\nexport * from \"./environment/types/index.mjs\";\nexport * as errors from \"./errors/index.mjs\";\nexport * from \"./errors/types/index.mjs\";\nexport * as examples from \"./examples/index.mjs\";\nexport * from \"./examples/types/index.mjs\";\nexport * as generatorExec from \"./generatorExec/index.mjs\";\nexport * as http from \"./http/index.mjs\";\nexport * from \"./http/types/index.mjs\";\nexport * as ir from \"./ir/index.mjs\";\nexport * from \"./ir/types/index.mjs\";\nexport * as proto from \"./proto/index.mjs\";\nexport * from \"./proto/types/index.mjs\";\nexport * as publish from \"./publish/index.mjs\";\nexport * from \"./publish/types/index.mjs\";\nexport * as types from \"./types/index.mjs\";\nexport * from \"./types/types/index.mjs\";\nexport * as variables from \"./variables/index.mjs\";\nexport * from \"./variables/types/index.mjs\";\nexport * as webhooks from \"./webhooks/index.mjs\";\nexport * from \"./webhooks/types/index.mjs\";\nexport * as websocket from \"./websocket/index.mjs\";\nexport * from \"./websocket/types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const AuthScheme = {\n    bearer: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bearer\", _visit: function (visitor) {\n                return FernIr.AuthScheme._visit(this, visitor);\n            } });\n    },\n    basic: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"basic\", _visit: function (visitor) {\n                return FernIr.AuthScheme._visit(this, visitor);\n            } });\n    },\n    header: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"header\", _visit: function (visitor) {\n                return FernIr.AuthScheme._visit(this, visitor);\n            } });\n    },\n    oauth: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"oauth\", _visit: function (visitor) {\n                return FernIr.AuthScheme._visit(this, visitor);\n            } });\n    },\n    inferred: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"inferred\", _visit: function (visitor) {\n                return FernIr.AuthScheme._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"bearer\":\n                return visitor.bearer(value);\n            case \"basic\":\n                return visitor.basic(value);\n            case \"header\":\n                return visitor.header(value);\n            case \"oauth\":\n                return visitor.oauth(value);\n            case \"inferred\":\n                return visitor.inferred(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst AuthSchemesRequirementValues = {\n    All: \"ALL\",\n    Any: \"ANY\",\n    EndpointSecurity: \"ENDPOINT_SECURITY\",\n};\nexport const AuthSchemesRequirement = Object.assign(Object.assign({}, AuthSchemesRequirementValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case AuthSchemesRequirement.All:\n                return visitor.all();\n            case AuthSchemesRequirement.Any:\n                return visitor.any();\n            case AuthSchemesRequirement.EndpointSecurity:\n                return visitor.endpointSecurity();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const OAuthConfiguration = {\n    clientCredentials: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"clientCredentials\", _visit: function (visitor) {\n                return FernIr.OAuthConfiguration._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"clientCredentials\":\n                return visitor.clientCredentials(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nconst AvailabilityStatusValues = {\n    InDevelopment: \"IN_DEVELOPMENT\",\n    PreRelease: \"PRE_RELEASE\",\n    GeneralAvailability: \"GENERAL_AVAILABILITY\",\n    Deprecated: \"DEPRECATED\",\n};\nexport const AvailabilityStatus = Object.assign(Object.assign({}, AvailabilityStatusValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case AvailabilityStatus.InDevelopment:\n                return visitor.inDevelopment();\n            case AvailabilityStatus.PreRelease:\n                return visitor.preRelease();\n            case AvailabilityStatus.GeneralAvailability:\n                return visitor.generalAvailability();\n            case AvailabilityStatus.Deprecated:\n                return visitor.deprecated();\n            default:\n                return visitor._other();\n        }\n    } });\n","export * from \"./types/index.mjs\";\n","export * from \"./resources/index.mjs\";\n","export * as auth from \"./auth/index.mjs\";\nexport * from \"./auth/types/index.mjs\";\nexport * as commons from \"./commons/index.mjs\";\nexport * from \"./commons/types/index.mjs\";\nexport * as declaration from \"./declaration/index.mjs\";\nexport * from \"./declaration/types/index.mjs\";\nexport * as endpoints from \"./endpoints/index.mjs\";\nexport * from \"./endpoints/types/index.mjs\";\nexport * as environment from \"./environment/index.mjs\";\nexport * from \"./environment/types/index.mjs\";\nexport * as http from \"./http/index.mjs\";\nexport * from \"./http/types/index.mjs\";\nexport * as ir from \"./ir/index.mjs\";\nexport * from \"./ir/types/index.mjs\";\nexport * as snippets from \"./snippets/index.mjs\";\nexport * from \"./snippets/types/index.mjs\";\nexport * as types from \"./types/index.mjs\";\nexport * from \"./types/types/index.mjs\";\nexport * as variables from \"./variables/index.mjs\";\nexport * from \"./variables/types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const Auth = {\n    basic: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"basic\", _visit: function (visitor) {\n                return FernIr.dynamic.Auth._visit(this, visitor);\n            } });\n    },\n    bearer: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bearer\", _visit: function (visitor) {\n                return FernIr.dynamic.Auth._visit(this, visitor);\n            } });\n    },\n    header: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"header\", _visit: function (visitor) {\n                return FernIr.dynamic.Auth._visit(this, visitor);\n            } });\n    },\n    oauth: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"oauth\", _visit: function (visitor) {\n                return FernIr.dynamic.Auth._visit(this, visitor);\n            } });\n    },\n    inferred: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"inferred\", _visit: function (visitor) {\n                return FernIr.dynamic.Auth._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"basic\":\n                return visitor.basic(value);\n            case \"bearer\":\n                return visitor.bearer(value);\n            case \"header\":\n                return visitor.header(value);\n            case \"oauth\":\n                return visitor.oauth(value);\n            case \"inferred\":\n                return visitor.inferred(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const AuthValues = {\n    basic: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"basic\", _visit: function (visitor) {\n                return FernIr.dynamic.AuthValues._visit(this, visitor);\n            } });\n    },\n    bearer: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bearer\", _visit: function (visitor) {\n                return FernIr.dynamic.AuthValues._visit(this, visitor);\n            } });\n    },\n    header: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"header\", _visit: function (visitor) {\n                return FernIr.dynamic.AuthValues._visit(this, visitor);\n            } });\n    },\n    oauth: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"oauth\", _visit: function (visitor) {\n                return FernIr.dynamic.AuthValues._visit(this, visitor);\n            } });\n    },\n    inferred: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"inferred\", _visit: function (visitor) {\n                return FernIr.dynamic.AuthValues._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"basic\":\n                return visitor.basic(value);\n            case \"bearer\":\n                return visitor.bearer(value);\n            case \"header\":\n                return visitor.header(value);\n            case \"oauth\":\n                return visitor.oauth(value);\n            case \"inferred\":\n                return visitor.inferred(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const FileUploadRequestBodyProperty = {\n    file: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"file\", _visit: function (visitor) {\n                return FernIr.dynamic.FileUploadRequestBodyProperty._visit(this, visitor);\n            } });\n    },\n    fileArray: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"fileArray\", _visit: function (visitor) {\n                return FernIr.dynamic.FileUploadRequestBodyProperty._visit(this, visitor);\n            } });\n    },\n    bodyProperty: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bodyProperty\", _visit: function (visitor) {\n                return FernIr.dynamic.FileUploadRequestBodyProperty._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"file\":\n                return visitor.file(value);\n            case \"fileArray\":\n                return visitor.fileArray(value);\n            case \"bodyProperty\":\n                return visitor.bodyProperty(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const InlinedRequestBody = {\n    properties: (value) => {\n        return {\n            value: value,\n            type: \"properties\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.InlinedRequestBody._visit(this, visitor);\n            },\n        };\n    },\n    referenced: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"referenced\", _visit: function (visitor) {\n                return FernIr.dynamic.InlinedRequestBody._visit(this, visitor);\n            } });\n    },\n    fileUpload: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"fileUpload\", _visit: function (visitor) {\n                return FernIr.dynamic.InlinedRequestBody._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"properties\":\n                return visitor.properties(value.value);\n            case \"referenced\":\n                return visitor.referenced(value);\n            case \"fileUpload\":\n                return visitor.fileUpload(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const ReferencedRequestBodyType = {\n    bytes: () => {\n        return {\n            type: \"bytes\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.ReferencedRequestBodyType._visit(this, visitor);\n            },\n        };\n    },\n    typeReference: (value) => {\n        return {\n            value: value,\n            type: \"typeReference\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.ReferencedRequestBodyType._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"bytes\":\n                return visitor.bytes();\n            case \"typeReference\":\n                return visitor.typeReference(value.value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const Request = {\n    body: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"body\", _visit: function (visitor) {\n                return FernIr.dynamic.Request._visit(this, visitor);\n            } });\n    },\n    inlined: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"inlined\", _visit: function (visitor) {\n                return FernIr.dynamic.Request._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"body\":\n                return visitor.body(value);\n            case \"inlined\":\n                return visitor.inlined(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const Response = {\n    json: () => {\n        return {\n            type: \"json\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.Response._visit(this, visitor);\n            },\n        };\n    },\n    streaming: () => {\n        return {\n            type: \"streaming\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.Response._visit(this, visitor);\n            },\n        };\n    },\n    streamParameter: () => {\n        return {\n            type: \"streamParameter\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.Response._visit(this, visitor);\n            },\n        };\n    },\n    fileDownload: () => {\n        return {\n            type: \"fileDownload\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.Response._visit(this, visitor);\n            },\n        };\n    },\n    text: () => {\n        return {\n            type: \"text\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.Response._visit(this, visitor);\n            },\n        };\n    },\n    bytes: () => {\n        return {\n            type: \"bytes\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.Response._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"json\":\n                return visitor.json();\n            case \"streaming\":\n                return visitor.streaming();\n            case \"streamParameter\":\n                return visitor.streamParameter();\n            case \"fileDownload\":\n                return visitor.fileDownload();\n            case \"text\":\n                return visitor.text();\n            case \"bytes\":\n                return visitor.bytes();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const Environments = {\n    singleBaseUrl: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"singleBaseUrl\", _visit: function (visitor) {\n                return FernIr.dynamic.Environments._visit(this, visitor);\n            } });\n    },\n    multipleBaseUrls: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"multipleBaseUrls\", _visit: function (visitor) {\n                return FernIr.dynamic.Environments._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"singleBaseUrl\":\n                return visitor.singleBaseUrl(value);\n            case \"multipleBaseUrls\":\n                return visitor.multipleBaseUrls(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nconst HttpMethodValues = {\n    Get: \"GET\",\n    Post: \"POST\",\n    Put: \"PUT\",\n    Patch: \"PATCH\",\n    Delete: \"DELETE\",\n    Head: \"HEAD\",\n};\nexport const HttpMethod = Object.assign(Object.assign({}, HttpMethodValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case HttpMethod.Get:\n                return visitor.get();\n            case HttpMethod.Post:\n                return visitor.post();\n            case HttpMethod.Put:\n                return visitor.put();\n            case HttpMethod.Patch:\n                return visitor.patch();\n            case HttpMethod.Delete:\n                return visitor.delete();\n            case HttpMethod.Head:\n                return visitor.head();\n            default:\n                return visitor._other();\n        }\n    } });\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const GeneratorOutputConfig = {\n    publish: (value) => {\n        return {\n            value: value,\n            type: \"publish\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.GeneratorOutputConfig._visit(this, visitor);\n            },\n        };\n    },\n    local: () => {\n        return {\n            type: \"local\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.GeneratorOutputConfig._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"publish\":\n                return visitor.publish(value.value);\n            case \"local\":\n                return visitor.local();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const PublishInfo = {\n    go: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"go\", _visit: function (visitor) {\n                return FernIr.dynamic.PublishInfo._visit(this, visitor);\n            } });\n    },\n    swift: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"swift\", _visit: function (visitor) {\n                return FernIr.dynamic.PublishInfo._visit(this, visitor);\n            } });\n    },\n    maven: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"maven\", _visit: function (visitor) {\n                return FernIr.dynamic.PublishInfo._visit(this, visitor);\n            } });\n    },\n    npm: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"npm\", _visit: function (visitor) {\n                return FernIr.dynamic.PublishInfo._visit(this, visitor);\n            } });\n    },\n    nuget: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"nuget\", _visit: function (visitor) {\n                return FernIr.dynamic.PublishInfo._visit(this, visitor);\n            } });\n    },\n    pypi: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"pypi\", _visit: function (visitor) {\n                return FernIr.dynamic.PublishInfo._visit(this, visitor);\n            } });\n    },\n    rubygems: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"rubygems\", _visit: function (visitor) {\n                return FernIr.dynamic.PublishInfo._visit(this, visitor);\n            } });\n    },\n    crates: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"crates\", _visit: function (visitor) {\n                return FernIr.dynamic.PublishInfo._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"go\":\n                return visitor.go(value);\n            case \"swift\":\n                return visitor.swift(value);\n            case \"maven\":\n                return visitor.maven(value);\n            case \"npm\":\n                return visitor.npm(value);\n            case \"nuget\":\n                return visitor.nuget(value);\n            case \"pypi\":\n                return visitor.pypi(value);\n            case \"rubygems\":\n                return visitor.rubygems(value);\n            case \"crates\":\n                return visitor.crates(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nconst ErrorSeverityValues = {\n    Critical: \"CRITICAL\",\n    Warning: \"WARNING\",\n};\nexport const ErrorSeverity = Object.assign(Object.assign({}, ErrorSeverityValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case ErrorSeverity.Critical:\n                return visitor.critical();\n            case ErrorSeverity.Warning:\n                return visitor.warning();\n            default:\n                return visitor._other();\n        }\n    } });\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const LiteralType = {\n    boolean: (value) => {\n        return {\n            value: value,\n            type: \"boolean\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.LiteralType._visit(this, visitor);\n            },\n        };\n    },\n    string: (value) => {\n        return {\n            value: value,\n            type: \"string\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.LiteralType._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"boolean\":\n                return visitor.boolean(value.value);\n            case \"string\":\n                return visitor.string(value.value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const NamedType = {\n    alias: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"alias\", _visit: function (visitor) {\n                return FernIr.dynamic.NamedType._visit(this, visitor);\n            } });\n    },\n    enum: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"enum\", _visit: function (visitor) {\n                return FernIr.dynamic.NamedType._visit(this, visitor);\n            } });\n    },\n    object: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"object\", _visit: function (visitor) {\n                return FernIr.dynamic.NamedType._visit(this, visitor);\n            } });\n    },\n    discriminatedUnion: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"discriminatedUnion\", _visit: function (visitor) {\n                return FernIr.dynamic.NamedType._visit(this, visitor);\n            } });\n    },\n    undiscriminatedUnion: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"undiscriminatedUnion\", _visit: function (visitor) {\n                return FernIr.dynamic.NamedType._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"alias\":\n                return visitor.alias(value);\n            case \"enum\":\n                return visitor.enum(value);\n            case \"object\":\n                return visitor.object(value);\n            case \"discriminatedUnion\":\n                return visitor.discriminatedUnion(value);\n            case \"undiscriminatedUnion\":\n                return visitor.undiscriminatedUnion(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst ObjectPropertyAccessValues = {\n    ReadOnly: \"READ_ONLY\",\n    WriteOnly: \"WRITE_ONLY\",\n};\nexport const ObjectPropertyAccess = Object.assign(Object.assign({}, ObjectPropertyAccessValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case ObjectPropertyAccess.ReadOnly:\n                return visitor.readOnly();\n            case ObjectPropertyAccess.WriteOnly:\n                return visitor.writeOnly();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nconst PrimitiveTypeV1Values = {\n    Integer: \"INTEGER\",\n    /**\n     * Within the range -2^53 to 2^53 */\n    Long: \"LONG\",\n    Uint: \"UINT\",\n    Uint64: \"UINT_64\",\n    Float: \"FLOAT\",\n    Double: \"DOUBLE\",\n    Boolean: \"BOOLEAN\",\n    String: \"STRING\",\n    Date: \"DATE\",\n    DateTime: \"DATE_TIME\",\n    DateTimeRfc2822: \"DATE_TIME_RFC_2822\",\n    Uuid: \"UUID\",\n    Base64: \"BASE_64\",\n    BigInteger: \"BIG_INTEGER\",\n};\nexport const PrimitiveTypeV1 = Object.assign(Object.assign({}, PrimitiveTypeV1Values), { _visit: (value, visitor) => {\n        switch (value) {\n            case PrimitiveTypeV1.Integer:\n                return visitor.integer();\n            case PrimitiveTypeV1.Long:\n                return visitor.long();\n            case PrimitiveTypeV1.Uint:\n                return visitor.uint();\n            case PrimitiveTypeV1.Uint64:\n                return visitor.uint64();\n            case PrimitiveTypeV1.Float:\n                return visitor.float();\n            case PrimitiveTypeV1.Double:\n                return visitor.double();\n            case PrimitiveTypeV1.Boolean:\n                return visitor.boolean();\n            case PrimitiveTypeV1.String:\n                return visitor.string();\n            case PrimitiveTypeV1.Date:\n                return visitor.date();\n            case PrimitiveTypeV1.DateTime:\n                return visitor.dateTime();\n            case PrimitiveTypeV1.DateTimeRfc2822:\n                return visitor.dateTimeRfc2822();\n            case PrimitiveTypeV1.Uuid:\n                return visitor.uuid();\n            case PrimitiveTypeV1.Base64:\n                return visitor.base64();\n            case PrimitiveTypeV1.BigInteger:\n                return visitor.bigInteger();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const SingleDiscriminatedUnionType = {\n    samePropertiesAsObject: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"samePropertiesAsObject\", _visit: function (visitor) {\n                return FernIr.dynamic.SingleDiscriminatedUnionType._visit(this, visitor);\n            } });\n    },\n    singleProperty: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"singleProperty\", _visit: function (visitor) {\n                return FernIr.dynamic.SingleDiscriminatedUnionType._visit(this, visitor);\n            } });\n    },\n    noProperties: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"noProperties\", _visit: function (visitor) {\n                return FernIr.dynamic.SingleDiscriminatedUnionType._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"samePropertiesAsObject\":\n                return visitor.samePropertiesAsObject(value);\n            case \"singleProperty\":\n                return visitor.singleProperty(value);\n            case \"noProperties\":\n                return visitor.noProperties(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const TypeReference = {\n    list: (value) => {\n        return {\n            value: value,\n            type: \"list\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    literal: (value) => {\n        return {\n            value: value,\n            type: \"literal\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    map: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"map\", _visit: function (visitor) {\n                return FernIr.dynamic.TypeReference._visit(this, visitor);\n            } });\n    },\n    named: (value) => {\n        return {\n            value: value,\n            type: \"named\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    nullable: (value) => {\n        return {\n            value: value,\n            type: \"nullable\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    optional: (value) => {\n        return {\n            value: value,\n            type: \"optional\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    primitive: (value) => {\n        return {\n            value: value,\n            type: \"primitive\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    set: (value) => {\n        return {\n            value: value,\n            type: \"set\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    unknown: () => {\n        return {\n            type: \"unknown\",\n            _visit: function (visitor) {\n                return FernIr.dynamic.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"list\":\n                return visitor.list(value.value);\n            case \"literal\":\n                return visitor.literal(value.value);\n            case \"map\":\n                return visitor.map(value);\n            case \"named\":\n                return visitor.named(value.value);\n            case \"nullable\":\n                return visitor.nullable(value.value);\n            case \"optional\":\n                return visitor.optional(value.value);\n            case \"primitive\":\n                return visitor.primitive(value.value);\n            case \"set\":\n                return visitor.set(value.value);\n            case \"unknown\":\n                return visitor.unknown();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const Environments = {\n    singleBaseUrl: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"singleBaseUrl\", _visit: function (visitor) {\n                return FernIr.Environments._visit(this, visitor);\n            } });\n    },\n    multipleBaseUrls: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"multipleBaseUrls\", _visit: function (visitor) {\n                return FernIr.Environments._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"singleBaseUrl\":\n                return visitor.singleBaseUrl(value);\n            case \"multipleBaseUrls\":\n                return visitor.multipleBaseUrls(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ErrorDeclarationDiscriminantValue = {\n    property: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"property\", _visit: function (visitor) {\n                return FernIr.ErrorDeclarationDiscriminantValue._visit(this, visitor);\n            } });\n    },\n    statusCode: () => {\n        return {\n            type: \"statusCode\",\n            _visit: function (visitor) {\n                return FernIr.ErrorDeclarationDiscriminantValue._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"property\":\n                return visitor.property(value);\n            case \"statusCode\":\n                return visitor.statusCode();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const V2AuthValues = {\n    basic: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"basic\", _visit: function (visitor) {\n                return FernIr.V2AuthValues._visit(this, visitor);\n            } });\n    },\n    bearer: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bearer\", _visit: function (visitor) {\n                return FernIr.V2AuthValues._visit(this, visitor);\n            } });\n    },\n    header: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"header\", _visit: function (visitor) {\n                return FernIr.V2AuthValues._visit(this, visitor);\n            } });\n    },\n    oauth: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"oauth\", _visit: function (visitor) {\n                return FernIr.V2AuthValues._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"basic\":\n                return visitor.basic(value);\n            case \"bearer\":\n                return visitor.bearer(value);\n            case \"header\":\n                return visitor.header(value);\n            case \"oauth\":\n                return visitor.oauth(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst V2EndpointLocationHttpMethodValues = {\n    Get: \"GET\",\n    Post: \"POST\",\n    Put: \"PUT\",\n    Patch: \"PATCH\",\n    Delete: \"DELETE\",\n    Head: \"HEAD\",\n};\nexport const V2EndpointLocationHttpMethod = Object.assign(Object.assign({}, V2EndpointLocationHttpMethodValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case V2EndpointLocationHttpMethod.Get:\n                return visitor.get();\n            case V2EndpointLocationHttpMethod.Post:\n                return visitor.post();\n            case V2EndpointLocationHttpMethod.Put:\n                return visitor.put();\n            case V2EndpointLocationHttpMethod.Patch:\n                return visitor.patch();\n            case V2EndpointLocationHttpMethod.Delete:\n                return visitor.delete();\n            case V2EndpointLocationHttpMethod.Head:\n                return visitor.head();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const V2HttpEndpointResponseBody = {\n    error: (value) => {\n        return {\n            value: value,\n            type: \"error\",\n            _visit: function (visitor) {\n                return FernIr.V2HttpEndpointResponseBody._visit(this, visitor);\n            },\n        };\n    },\n    json: (value) => {\n        return {\n            value: value,\n            type: \"json\",\n            _visit: function (visitor) {\n                return FernIr.V2HttpEndpointResponseBody._visit(this, visitor);\n            },\n        };\n    },\n    stream: (value) => {\n        return {\n            value: value,\n            type: \"stream\",\n            _visit: function (visitor) {\n                return FernIr.V2HttpEndpointResponseBody._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"error\":\n                return visitor.error(value.value);\n            case \"json\":\n                return visitor.json(value.value);\n            case \"stream\":\n                return visitor.stream(value.value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./resources/index.mjs\";\n","export * as config from \"./config/index.mjs\";\nexport * from \"./config/types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const GeneratorEnvironment = {\n    local: () => {\n        return {\n            type: \"local\",\n            _visit: function (visitor) {\n                return FernIr.generatorExec.GeneratorEnvironment._visit(this, visitor);\n            },\n        };\n    },\n    remote: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"remote\", _visit: function (visitor) {\n                return FernIr.generatorExec.GeneratorEnvironment._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"local\":\n                return visitor.local();\n            case \"remote\":\n                return visitor.remote(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const GeneratorPublishTarget = {\n    maven: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"maven\", _visit: function (visitor) {\n                return FernIr.generatorExec.GeneratorPublishTarget._visit(this, visitor);\n            } });\n    },\n    npm: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"npm\", _visit: function (visitor) {\n                return FernIr.generatorExec.GeneratorPublishTarget._visit(this, visitor);\n            } });\n    },\n    pypi: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"pypi\", _visit: function (visitor) {\n                return FernIr.generatorExec.GeneratorPublishTarget._visit(this, visitor);\n            } });\n    },\n    postman: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"postman\", _visit: function (visitor) {\n                return FernIr.generatorExec.GeneratorPublishTarget._visit(this, visitor);\n            } });\n    },\n    rubygems: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"rubygems\", _visit: function (visitor) {\n                return FernIr.generatorExec.GeneratorPublishTarget._visit(this, visitor);\n            } });\n    },\n    nuget: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"nuget\", _visit: function (visitor) {\n                return FernIr.generatorExec.GeneratorPublishTarget._visit(this, visitor);\n            } });\n    },\n    crates: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"crates\", _visit: function (visitor) {\n                return FernIr.generatorExec.GeneratorPublishTarget._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"maven\":\n                return visitor.maven(value);\n            case \"npm\":\n                return visitor.npm(value);\n            case \"pypi\":\n                return visitor.pypi(value);\n            case \"postman\":\n                return visitor.postman(value);\n            case \"rubygems\":\n                return visitor.rubygems(value);\n            case \"nuget\":\n                return visitor.nuget(value);\n            case \"crates\":\n                return visitor.crates(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const GithubPublishInfo = {\n    npm: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"npm\", _visit: function (visitor) {\n                return FernIr.generatorExec.GithubPublishInfo._visit(this, visitor);\n            } });\n    },\n    maven: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"maven\", _visit: function (visitor) {\n                return FernIr.generatorExec.GithubPublishInfo._visit(this, visitor);\n            } });\n    },\n    postman: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"postman\", _visit: function (visitor) {\n                return FernIr.generatorExec.GithubPublishInfo._visit(this, visitor);\n            } });\n    },\n    pypi: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"pypi\", _visit: function (visitor) {\n                return FernIr.generatorExec.GithubPublishInfo._visit(this, visitor);\n            } });\n    },\n    rubygems: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"rubygems\", _visit: function (visitor) {\n                return FernIr.generatorExec.GithubPublishInfo._visit(this, visitor);\n            } });\n    },\n    nuget: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"nuget\", _visit: function (visitor) {\n                return FernIr.generatorExec.GithubPublishInfo._visit(this, visitor);\n            } });\n    },\n    crates: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"crates\", _visit: function (visitor) {\n                return FernIr.generatorExec.GithubPublishInfo._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"npm\":\n                return visitor.npm(value);\n            case \"maven\":\n                return visitor.maven(value);\n            case \"postman\":\n                return visitor.postman(value);\n            case \"pypi\":\n                return visitor.pypi(value);\n            case \"rubygems\":\n                return visitor.rubygems(value);\n            case \"nuget\":\n                return visitor.nuget(value);\n            case \"crates\":\n                return visitor.crates(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const LicenseConfig = {\n    basic: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"basic\", _visit: function (visitor) {\n                return FernIr.generatorExec.LicenseConfig._visit(this, visitor);\n            } });\n    },\n    custom: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"custom\", _visit: function (visitor) {\n                return FernIr.generatorExec.LicenseConfig._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"basic\":\n                return visitor.basic(value);\n            case \"custom\":\n                return visitor.custom(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst LicenseIdValues = {\n    Mit: \"MIT\",\n    Apache2: \"Apache-2.0\",\n};\nexport const LicenseId = Object.assign(Object.assign({}, LicenseIdValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case LicenseId.Mit:\n                return visitor.mit();\n            case LicenseId.Apache2:\n                return visitor.apache2();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../../../index.mjs\";\nexport const OutputMode = {\n    publish: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"publish\", _visit: function (visitor) {\n                return FernIr.generatorExec.OutputMode._visit(this, visitor);\n            } });\n    },\n    downloadFiles: () => {\n        return {\n            type: \"downloadFiles\",\n            _visit: function (visitor) {\n                return FernIr.generatorExec.OutputMode._visit(this, visitor);\n            },\n        };\n    },\n    github: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"github\", _visit: function (visitor) {\n                return FernIr.generatorExec.OutputMode._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"publish\":\n                return visitor.publish(value);\n            case \"downloadFiles\":\n                return visitor.downloadFiles();\n            case \"github\":\n                return visitor.github(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExampleCodeSample = {\n    language: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"language\", _visit: function (visitor) {\n                return FernIr.ExampleCodeSample._visit(this, visitor);\n            } });\n    },\n    sdk: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"sdk\", _visit: function (visitor) {\n                return FernIr.ExampleCodeSample._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"language\":\n                return visitor.language(value);\n            case \"sdk\":\n                return visitor.sdk(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExampleEndpointSuccessResponse = {\n    body: (value) => {\n        return {\n            value: value,\n            type: \"body\",\n            _visit: function (visitor) {\n                return FernIr.ExampleEndpointSuccessResponse._visit(this, visitor);\n            },\n        };\n    },\n    stream: (value) => {\n        return {\n            value: value,\n            type: \"stream\",\n            _visit: function (visitor) {\n                return FernIr.ExampleEndpointSuccessResponse._visit(this, visitor);\n            },\n        };\n    },\n    sse: (value) => {\n        return {\n            value: value,\n            type: \"sse\",\n            _visit: function (visitor) {\n                return FernIr.ExampleEndpointSuccessResponse._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"body\":\n                return visitor.body(value.value);\n            case \"stream\":\n                return visitor.stream(value.value);\n            case \"sse\":\n                return visitor.sse(value.value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExampleQueryParameterShape = {\n    single: () => {\n        return {\n            type: \"single\",\n            _visit: function (visitor) {\n                return FernIr.ExampleQueryParameterShape._visit(this, visitor);\n            },\n        };\n    },\n    exploded: () => {\n        return {\n            type: \"exploded\",\n            _visit: function (visitor) {\n                return FernIr.ExampleQueryParameterShape._visit(this, visitor);\n            },\n        };\n    },\n    commaSeparated: () => {\n        return {\n            type: \"commaSeparated\",\n            _visit: function (visitor) {\n                return FernIr.ExampleQueryParameterShape._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"single\":\n                return visitor.single();\n            case \"exploded\":\n                return visitor.exploded();\n            case \"commaSeparated\":\n                return visitor.commaSeparated();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExampleRequestBody = {\n    inlinedRequestBody: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"inlinedRequestBody\", _visit: function (visitor) {\n                return FernIr.ExampleRequestBody._visit(this, visitor);\n            } });\n    },\n    reference: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"reference\", _visit: function (visitor) {\n                return FernIr.ExampleRequestBody._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"inlinedRequestBody\":\n                return visitor.inlinedRequestBody(value);\n            case \"reference\":\n                return visitor.reference(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExampleResponse = {\n    ok: (value) => {\n        return {\n            value: value,\n            type: \"ok\",\n            _visit: function (visitor) {\n                return FernIr.ExampleResponse._visit(this, visitor);\n            },\n        };\n    },\n    error: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"error\", _visit: function (visitor) {\n                return FernIr.ExampleResponse._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"ok\":\n                return visitor.ok(value.value);\n            case \"error\":\n                return visitor.error(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const FileProperty = {\n    file: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"file\", _visit: function (visitor) {\n                return FernIr.FileProperty._visit(this, visitor);\n            } });\n    },\n    fileArray: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"fileArray\", _visit: function (visitor) {\n                return FernIr.FileProperty._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"file\":\n                return visitor.file(value);\n            case \"fileArray\":\n                return visitor.fileArray(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst FileUploadBodyPropertyEncodingValues = {\n    Exploded: \"exploded\",\n    Json: \"json\",\n    Form: \"form\",\n};\nexport const FileUploadBodyPropertyEncoding = Object.assign(Object.assign({}, FileUploadBodyPropertyEncodingValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case FileUploadBodyPropertyEncoding.Exploded:\n                return visitor.exploded();\n            case FileUploadBodyPropertyEncoding.Json:\n                return visitor.json();\n            case FileUploadBodyPropertyEncoding.Form:\n                return visitor.form();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const FileUploadRequestProperty = {\n    file: (value) => {\n        return {\n            value: value,\n            type: \"file\",\n            _visit: function (visitor) {\n                return FernIr.FileUploadRequestProperty._visit(this, visitor);\n            },\n        };\n    },\n    bodyProperty: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bodyProperty\", _visit: function (visitor) {\n                return FernIr.FileUploadRequestProperty._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"file\":\n                return visitor.file(value.value);\n            case \"bodyProperty\":\n                return visitor.bodyProperty(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const HttpEndpointSource = {\n    proto: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"proto\", _visit: function (visitor) {\n                return FernIr.HttpEndpointSource._visit(this, visitor);\n            } });\n    },\n    openapi: () => {\n        return {\n            type: \"openapi\",\n            _visit: function (visitor) {\n                return FernIr.HttpEndpointSource._visit(this, visitor);\n            },\n        };\n    },\n    openrpc: () => {\n        return {\n            type: \"openrpc\",\n            _visit: function (visitor) {\n                return FernIr.HttpEndpointSource._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"proto\":\n                return visitor.proto(value);\n            case \"openapi\":\n                return visitor.openapi();\n            case \"openrpc\":\n                return visitor.openrpc();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst HttpMethodValues = {\n    Get: \"GET\",\n    Post: \"POST\",\n    Put: \"PUT\",\n    Patch: \"PATCH\",\n    Delete: \"DELETE\",\n    Head: \"HEAD\",\n};\nexport const HttpMethod = Object.assign(Object.assign({}, HttpMethodValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case HttpMethod.Get:\n                return visitor.get();\n            case HttpMethod.Post:\n                return visitor.post();\n            case HttpMethod.Put:\n                return visitor.put();\n            case HttpMethod.Patch:\n                return visitor.patch();\n            case HttpMethod.Delete:\n                return visitor.delete();\n            case HttpMethod.Head:\n                return visitor.head();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const HttpRequestBody = {\n    inlinedRequestBody: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"inlinedRequestBody\", _visit: function (visitor) {\n                return FernIr.HttpRequestBody._visit(this, visitor);\n            } });\n    },\n    reference: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"reference\", _visit: function (visitor) {\n                return FernIr.HttpRequestBody._visit(this, visitor);\n            } });\n    },\n    fileUpload: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"fileUpload\", _visit: function (visitor) {\n                return FernIr.HttpRequestBody._visit(this, visitor);\n            } });\n    },\n    bytes: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bytes\", _visit: function (visitor) {\n                return FernIr.HttpRequestBody._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"inlinedRequestBody\":\n                return visitor.inlinedRequestBody(value);\n            case \"reference\":\n                return visitor.reference(value);\n            case \"fileUpload\":\n                return visitor.fileUpload(value);\n            case \"bytes\":\n                return visitor.bytes(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const HttpResponseBody = {\n    json: (value) => {\n        return {\n            value: value,\n            type: \"json\",\n            _visit: function (visitor) {\n                return FernIr.HttpResponseBody._visit(this, visitor);\n            },\n        };\n    },\n    fileDownload: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"fileDownload\", _visit: function (visitor) {\n                return FernIr.HttpResponseBody._visit(this, visitor);\n            } });\n    },\n    text: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"text\", _visit: function (visitor) {\n                return FernIr.HttpResponseBody._visit(this, visitor);\n            } });\n    },\n    bytes: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bytes\", _visit: function (visitor) {\n                return FernIr.HttpResponseBody._visit(this, visitor);\n            } });\n    },\n    streaming: (value) => {\n        return {\n            value: value,\n            type: \"streaming\",\n            _visit: function (visitor) {\n                return FernIr.HttpResponseBody._visit(this, visitor);\n            },\n        };\n    },\n    streamParameter: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"streamParameter\", _visit: function (visitor) {\n                return FernIr.HttpResponseBody._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"json\":\n                return visitor.json(value.value);\n            case \"fileDownload\":\n                return visitor.fileDownload(value);\n            case \"text\":\n                return visitor.text(value);\n            case \"bytes\":\n                return visitor.bytes(value);\n            case \"streaming\":\n                return visitor.streaming(value.value);\n            case \"streamParameter\":\n                return visitor.streamParameter(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const JsonResponse = {\n    response: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"response\", _visit: function (visitor) {\n                return FernIr.JsonResponse._visit(this, visitor);\n            } });\n    },\n    nestedPropertyAsResponse: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"nestedPropertyAsResponse\", _visit: function (visitor) {\n                return FernIr.JsonResponse._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"response\":\n                return visitor.response(value);\n            case \"nestedPropertyAsResponse\":\n                return visitor.nestedPropertyAsResponse(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const NonStreamHttpResponseBody = {\n    json: (value) => {\n        return {\n            value: value,\n            type: \"json\",\n            _visit: function (visitor) {\n                return FernIr.NonStreamHttpResponseBody._visit(this, visitor);\n            },\n        };\n    },\n    fileDownload: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"fileDownload\", _visit: function (visitor) {\n                return FernIr.NonStreamHttpResponseBody._visit(this, visitor);\n            } });\n    },\n    text: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"text\", _visit: function (visitor) {\n                return FernIr.NonStreamHttpResponseBody._visit(this, visitor);\n            } });\n    },\n    bytes: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bytes\", _visit: function (visitor) {\n                return FernIr.NonStreamHttpResponseBody._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"json\":\n                return visitor.json(value.value);\n            case \"fileDownload\":\n                return visitor.fileDownload(value);\n            case \"text\":\n                return visitor.text(value);\n            case \"bytes\":\n                return visitor.bytes(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const Pagination = {\n    cursor: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"cursor\", _visit: function (visitor) {\n                return FernIr.Pagination._visit(this, visitor);\n            } });\n    },\n    offset: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"offset\", _visit: function (visitor) {\n                return FernIr.Pagination._visit(this, visitor);\n            } });\n    },\n    custom: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"custom\", _visit: function (visitor) {\n                return FernIr.Pagination._visit(this, visitor);\n            } });\n    },\n    uri: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"uri\", _visit: function (visitor) {\n                return FernIr.Pagination._visit(this, visitor);\n            } });\n    },\n    path: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"path\", _visit: function (visitor) {\n                return FernIr.Pagination._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"cursor\":\n                return visitor.cursor(value);\n            case \"offset\":\n                return visitor.offset(value);\n            case \"custom\":\n                return visitor.custom(value);\n            case \"uri\":\n                return visitor.uri(value);\n            case \"path\":\n                return visitor.path(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst PathParameterLocationValues = {\n    Root: \"ROOT\",\n    Service: \"SERVICE\",\n    Endpoint: \"ENDPOINT\",\n};\nexport const PathParameterLocation = Object.assign(Object.assign({}, PathParameterLocationValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case PathParameterLocation.Root:\n                return visitor.root();\n            case PathParameterLocation.Service:\n                return visitor.service();\n            case PathParameterLocation.Endpoint:\n                return visitor.endpoint();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const RequestPropertyValue = {\n    query: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"query\", _visit: function (visitor) {\n                return FernIr.RequestPropertyValue._visit(this, visitor);\n            } });\n    },\n    body: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"body\", _visit: function (visitor) {\n                return FernIr.RequestPropertyValue._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"query\":\n                return visitor.query(value);\n            case \"body\":\n                return visitor.body(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const SdkRequestBodyType = {\n    typeReference: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"typeReference\", _visit: function (visitor) {\n                return FernIr.SdkRequestBodyType._visit(this, visitor);\n            } });\n    },\n    bytes: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bytes\", _visit: function (visitor) {\n                return FernIr.SdkRequestBodyType._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"typeReference\":\n                return visitor.typeReference(value);\n            case \"bytes\":\n                return visitor.bytes(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const SdkRequestShape = {\n    justRequestBody: (value) => {\n        return {\n            value: value,\n            type: \"justRequestBody\",\n            _visit: function (visitor) {\n                return FernIr.SdkRequestShape._visit(this, visitor);\n            },\n        };\n    },\n    wrapper: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"wrapper\", _visit: function (visitor) {\n                return FernIr.SdkRequestShape._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"justRequestBody\":\n                return visitor.justRequestBody(value.value);\n            case \"wrapper\":\n                return visitor.wrapper(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const StreamingResponse = {\n    json: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"json\", _visit: function (visitor) {\n                return FernIr.StreamingResponse._visit(this, visitor);\n            } });\n    },\n    text: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"text\", _visit: function (visitor) {\n                return FernIr.StreamingResponse._visit(this, visitor);\n            } });\n    },\n    sse: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"sse\", _visit: function (visitor) {\n                return FernIr.StreamingResponse._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"json\":\n                return visitor.json(value);\n            case \"text\":\n                return visitor.text(value);\n            case \"sse\":\n                return visitor.sse(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst SupportedSdkLanguageValues = {\n    Curl: \"curl\",\n    Python: \"python\",\n    Javascript: \"javascript\",\n    Typescript: \"typescript\",\n    Go: \"go\",\n    Ruby: \"ruby\",\n    Csharp: \"csharp\",\n    Java: \"java\",\n    Php: \"php\",\n    Rust: \"rust\",\n    Swift: \"swift\",\n};\nexport const SupportedSdkLanguage = Object.assign(Object.assign({}, SupportedSdkLanguageValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case SupportedSdkLanguage.Curl:\n                return visitor.curl();\n            case SupportedSdkLanguage.Python:\n                return visitor.python();\n            case SupportedSdkLanguage.Javascript:\n                return visitor.javascript();\n            case SupportedSdkLanguage.Typescript:\n                return visitor.typescript();\n            case SupportedSdkLanguage.Go:\n                return visitor.go();\n            case SupportedSdkLanguage.Ruby:\n                return visitor.ruby();\n            case SupportedSdkLanguage.Csharp:\n                return visitor.csharp();\n            case SupportedSdkLanguage.Java:\n                return visitor.java();\n            case SupportedSdkLanguage.Php:\n                return visitor.php();\n            case SupportedSdkLanguage.Rust:\n                return visitor.rust();\n            case SupportedSdkLanguage.Swift:\n                return visitor.swift();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const Transport = {\n    http: () => {\n        return {\n            type: \"http\",\n            _visit: function (visitor) {\n                return FernIr.Transport._visit(this, visitor);\n            },\n        };\n    },\n    grpc: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"grpc\", _visit: function (visitor) {\n                return FernIr.Transport._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"http\":\n                return visitor.http();\n            case \"grpc\":\n                return visitor.grpc(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ApiDefinitionSource = {\n    proto: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"proto\", _visit: function (visitor) {\n                return FernIr.ApiDefinitionSource._visit(this, visitor);\n            } });\n    },\n    openapi: () => {\n        return {\n            type: \"openapi\",\n            _visit: function (visitor) {\n                return FernIr.ApiDefinitionSource._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"proto\":\n                return visitor.proto(value);\n            case \"openapi\":\n                return visitor.openapi();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ApiVersionScheme = {\n    header: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"header\", _visit: function (visitor) {\n                return FernIr.ApiVersionScheme._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"header\":\n                return visitor.header(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ErrorDiscriminationStrategy = {\n    statusCode: () => {\n        return {\n            type: \"statusCode\",\n            _visit: function (visitor) {\n                return FernIr.ErrorDiscriminationStrategy._visit(this, visitor);\n            },\n        };\n    },\n    property: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"property\", _visit: function (visitor) {\n                return FernIr.ErrorDiscriminationStrategy._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"statusCode\":\n                return visitor.statusCode();\n            case \"property\":\n                return visitor.property(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\n/** Controls the verbosity of usage examples in README generation */\nconst ExampleStyleValues = {\n    Minimal: \"minimal\",\n    Comprehensive: \"comprehensive\",\n};\nexport const ExampleStyle = Object.assign(Object.assign({}, ExampleStyleValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case ExampleStyle.Minimal:\n                return visitor.minimal();\n            case ExampleStyle.Comprehensive:\n                return visitor.comprehensive();\n            default:\n                return visitor._other();\n        }\n    } });\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nconst ProtobufMethodTypeValues = {\n    Unary: \"UNARY\",\n    ClientStream: \"CLIENT_STREAM\",\n    ServerStream: \"SERVER_STREAM\",\n    BidirectionalStream: \"BIDIRECTIONAL_STREAM\",\n};\nexport const ProtobufMethodType = Object.assign(Object.assign({}, ProtobufMethodTypeValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case ProtobufMethodType.Unary:\n                return visitor.unary();\n            case ProtobufMethodType.ClientStream:\n                return visitor.clientStream();\n            case ProtobufMethodType.ServerStream:\n                return visitor.serverStream();\n            case ProtobufMethodType.BidirectionalStream:\n                return visitor.bidirectionalStream();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ProtobufType = {\n    wellKnown: (value) => {\n        return {\n            value: value,\n            type: \"wellKnown\",\n            _visit: function (visitor) {\n                return FernIr.ProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    userDefined: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"userDefined\", _visit: function (visitor) {\n                return FernIr.ProtobufType._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"wellKnown\":\n                return visitor.wellKnown(value.value);\n            case \"userDefined\":\n                return visitor.userDefined(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const WellKnownProtobufType = {\n    any: () => {\n        return {\n            type: \"any\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    api: () => {\n        return {\n            type: \"api\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    boolValue: () => {\n        return {\n            type: \"boolValue\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    bytesValue: () => {\n        return {\n            type: \"bytesValue\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    doubleValue: () => {\n        return {\n            type: \"doubleValue\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    duration: () => {\n        return {\n            type: \"duration\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    empty: () => {\n        return {\n            type: \"empty\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    enum: () => {\n        return {\n            type: \"enum\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    enumValue: () => {\n        return {\n            type: \"enumValue\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    field: () => {\n        return {\n            type: \"field\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    fieldCardinality: () => {\n        return {\n            type: \"fieldCardinality\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    fieldKind: () => {\n        return {\n            type: \"fieldKind\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    fieldMask: () => {\n        return {\n            type: \"fieldMask\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    floatValue: () => {\n        return {\n            type: \"floatValue\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    int32Value: () => {\n        return {\n            type: \"int32Value\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    int64Value: () => {\n        return {\n            type: \"int64Value\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    listValue: () => {\n        return {\n            type: \"listValue\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    method: () => {\n        return {\n            type: \"method\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    mixin: () => {\n        return {\n            type: \"mixin\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    nullValue: () => {\n        return {\n            type: \"nullValue\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    option: () => {\n        return {\n            type: \"option\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    sourceContext: () => {\n        return {\n            type: \"sourceContext\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    stringValue: () => {\n        return {\n            type: \"stringValue\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    struct: () => {\n        return {\n            type: \"struct\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    syntax: () => {\n        return {\n            type: \"syntax\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    timestamp: () => {\n        return {\n            type: \"timestamp\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    type: () => {\n        return {\n            type: \"type\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    uint32Value: () => {\n        return {\n            type: \"uint32Value\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    uint64Value: () => {\n        return {\n            type: \"uint64Value\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    value: () => {\n        return {\n            type: \"value\",\n            _visit: function (visitor) {\n                return FernIr.WellKnownProtobufType._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"any\":\n                return visitor.any();\n            case \"api\":\n                return visitor.api();\n            case \"boolValue\":\n                return visitor.boolValue();\n            case \"bytesValue\":\n                return visitor.bytesValue();\n            case \"doubleValue\":\n                return visitor.doubleValue();\n            case \"duration\":\n                return visitor.duration();\n            case \"empty\":\n                return visitor.empty();\n            case \"enum\":\n                return visitor.enum();\n            case \"enumValue\":\n                return visitor.enumValue();\n            case \"field\":\n                return visitor.field();\n            case \"fieldCardinality\":\n                return visitor.fieldCardinality();\n            case \"fieldKind\":\n                return visitor.fieldKind();\n            case \"fieldMask\":\n                return visitor.fieldMask();\n            case \"floatValue\":\n                return visitor.floatValue();\n            case \"int32Value\":\n                return visitor.int32Value();\n            case \"int64Value\":\n                return visitor.int64Value();\n            case \"listValue\":\n                return visitor.listValue();\n            case \"method\":\n                return visitor.method();\n            case \"mixin\":\n                return visitor.mixin();\n            case \"nullValue\":\n                return visitor.nullValue();\n            case \"option\":\n                return visitor.option();\n            case \"sourceContext\":\n                return visitor.sourceContext();\n            case \"stringValue\":\n                return visitor.stringValue();\n            case \"struct\":\n                return visitor.struct();\n            case \"syntax\":\n                return visitor.syntax();\n            case \"timestamp\":\n                return visitor.timestamp();\n            case \"type\":\n                return visitor.type();\n            case \"uint32Value\":\n                return visitor.uint32Value();\n            case \"uint64Value\":\n                return visitor.uint64Value();\n            case \"value\":\n                return visitor.value();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const PublishingConfig = {\n    github: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"github\", _visit: function (visitor) {\n                return FernIr.PublishingConfig._visit(this, visitor);\n            } });\n    },\n    direct: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"direct\", _visit: function (visitor) {\n                return FernIr.PublishingConfig._visit(this, visitor);\n            } });\n    },\n    filesystem: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"filesystem\", _visit: function (visitor) {\n                return FernIr.PublishingConfig._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"github\":\n                return visitor.github(value);\n            case \"direct\":\n                return visitor.direct(value);\n            case \"filesystem\":\n                return visitor.filesystem(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const PublishTarget = {\n    postman: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"postman\", _visit: function (visitor) {\n                return FernIr.PublishTarget._visit(this, visitor);\n            } });\n    },\n    npm: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"npm\", _visit: function (visitor) {\n                return FernIr.PublishTarget._visit(this, visitor);\n            } });\n    },\n    maven: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"maven\", _visit: function (visitor) {\n                return FernIr.PublishTarget._visit(this, visitor);\n            } });\n    },\n    pypi: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"pypi\", _visit: function (visitor) {\n                return FernIr.PublishTarget._visit(this, visitor);\n            } });\n    },\n    crates: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"crates\", _visit: function (visitor) {\n                return FernIr.PublishTarget._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"postman\":\n                return visitor.postman(value);\n            case \"npm\":\n                return visitor.npm(value);\n            case \"maven\":\n                return visitor.maven(value);\n            case \"pypi\":\n                return visitor.pypi(value);\n            case \"crates\":\n                return visitor.crates(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ContainerType = {\n    list: (value) => {\n        return {\n            list: value,\n            type: \"list\",\n            _visit: function (visitor) {\n                return FernIr.ContainerType._visit(this, visitor);\n            },\n        };\n    },\n    map: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"map\", _visit: function (visitor) {\n                return FernIr.ContainerType._visit(this, visitor);\n            } });\n    },\n    nullable: (value) => {\n        return {\n            nullable: value,\n            type: \"nullable\",\n            _visit: function (visitor) {\n                return FernIr.ContainerType._visit(this, visitor);\n            },\n        };\n    },\n    optional: (value) => {\n        return {\n            optional: value,\n            type: \"optional\",\n            _visit: function (visitor) {\n                return FernIr.ContainerType._visit(this, visitor);\n            },\n        };\n    },\n    set: (value) => {\n        return {\n            set: value,\n            type: \"set\",\n            _visit: function (visitor) {\n                return FernIr.ContainerType._visit(this, visitor);\n            },\n        };\n    },\n    literal: (value) => {\n        return {\n            literal: value,\n            type: \"literal\",\n            _visit: function (visitor) {\n                return FernIr.ContainerType._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"list\":\n                return visitor.list(value.list);\n            case \"map\":\n                return visitor.map(value);\n            case \"nullable\":\n                return visitor.nullable(value.nullable);\n            case \"optional\":\n                return visitor.optional(value.optional);\n            case \"set\":\n                return visitor.set(value.set);\n            case \"literal\":\n                return visitor.literal(value.literal);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExampleContainer = {\n    list: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"list\", _visit: function (visitor) {\n                return FernIr.ExampleContainer._visit(this, visitor);\n            } });\n    },\n    set: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"set\", _visit: function (visitor) {\n                return FernIr.ExampleContainer._visit(this, visitor);\n            } });\n    },\n    optional: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"optional\", _visit: function (visitor) {\n                return FernIr.ExampleContainer._visit(this, visitor);\n            } });\n    },\n    nullable: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"nullable\", _visit: function (visitor) {\n                return FernIr.ExampleContainer._visit(this, visitor);\n            } });\n    },\n    map: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"map\", _visit: function (visitor) {\n                return FernIr.ExampleContainer._visit(this, visitor);\n            } });\n    },\n    literal: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"literal\", _visit: function (visitor) {\n                return FernIr.ExampleContainer._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"list\":\n                return visitor.list(value);\n            case \"set\":\n                return visitor.set(value);\n            case \"optional\":\n                return visitor.optional(value);\n            case \"nullable\":\n                return visitor.nullable(value);\n            case \"map\":\n                return visitor.map(value);\n            case \"literal\":\n                return visitor.literal(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExamplePrimitive = {\n    integer: (value) => {\n        return {\n            integer: value,\n            type: \"integer\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    long: (value) => {\n        return {\n            long: value,\n            type: \"long\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    uint: (value) => {\n        return {\n            uint: value,\n            type: \"uint\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    uint64: (value) => {\n        return {\n            uint64: value,\n            type: \"uint64\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    float: (value) => {\n        return {\n            float: value,\n            type: \"float\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    double: (value) => {\n        return {\n            double: value,\n            type: \"double\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    boolean: (value) => {\n        return {\n            boolean: value,\n            type: \"boolean\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    string: (value) => {\n        return {\n            string: value,\n            type: \"string\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    date: (value) => {\n        return {\n            date: value,\n            type: \"date\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    datetime: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"datetime\", _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            } });\n    },\n    datetimeRfc2822: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"datetimeRfc2822\", _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            } });\n    },\n    uuid: (value) => {\n        return {\n            uuid: value,\n            type: \"uuid\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    base64: (value) => {\n        return {\n            base64: value,\n            type: \"base64\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    bigInteger: (value) => {\n        return {\n            bigInteger: value,\n            type: \"bigInteger\",\n            _visit: function (visitor) {\n                return FernIr.ExamplePrimitive._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"integer\":\n                return visitor.integer(value.integer);\n            case \"long\":\n                return visitor.long(value.long);\n            case \"uint\":\n                return visitor.uint(value.uint);\n            case \"uint64\":\n                return visitor.uint64(value.uint64);\n            case \"float\":\n                return visitor.float(value.float);\n            case \"double\":\n                return visitor.double(value.double);\n            case \"boolean\":\n                return visitor.boolean(value.boolean);\n            case \"string\":\n                return visitor.string(value.string);\n            case \"date\":\n                return visitor.date(value.date);\n            case \"datetime\":\n                return visitor.datetime(value);\n            case \"datetimeRfc2822\":\n                return visitor.datetimeRfc2822(value);\n            case \"uuid\":\n                return visitor.uuid(value.uuid);\n            case \"base64\":\n                return visitor.base64(value.base64);\n            case \"bigInteger\":\n                return visitor.bigInteger(value.bigInteger);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExampleSingleUnionTypeProperties = {\n    samePropertiesAsObject: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"samePropertiesAsObject\", _visit: function (visitor) {\n                return FernIr.ExampleSingleUnionTypeProperties._visit(this, visitor);\n            } });\n    },\n    singleProperty: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"singleProperty\", _visit: function (visitor) {\n                return FernIr.ExampleSingleUnionTypeProperties._visit(this, visitor);\n            } });\n    },\n    noProperties: () => {\n        return {\n            type: \"noProperties\",\n            _visit: function (visitor) {\n                return FernIr.ExampleSingleUnionTypeProperties._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"samePropertiesAsObject\":\n                return visitor.samePropertiesAsObject(value);\n            case \"singleProperty\":\n                return visitor.singleProperty(value);\n            case \"noProperties\":\n                return visitor.noProperties();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExampleTypeReferenceShape = {\n    primitive: (value) => {\n        return {\n            primitive: value,\n            type: \"primitive\",\n            _visit: function (visitor) {\n                return FernIr.ExampleTypeReferenceShape._visit(this, visitor);\n            },\n        };\n    },\n    container: (value) => {\n        return {\n            container: value,\n            type: \"container\",\n            _visit: function (visitor) {\n                return FernIr.ExampleTypeReferenceShape._visit(this, visitor);\n            },\n        };\n    },\n    unknown: (value) => {\n        return {\n            unknown: value,\n            type: \"unknown\",\n            _visit: function (visitor) {\n                return FernIr.ExampleTypeReferenceShape._visit(this, visitor);\n            },\n        };\n    },\n    named: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"named\", _visit: function (visitor) {\n                return FernIr.ExampleTypeReferenceShape._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"primitive\":\n                return visitor.primitive(value.primitive);\n            case \"container\":\n                return visitor.container(value.container);\n            case \"unknown\":\n                return visitor.unknown(value.unknown);\n            case \"named\":\n                return visitor.named(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExampleTypeShape = {\n    alias: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"alias\", _visit: function (visitor) {\n                return FernIr.ExampleTypeShape._visit(this, visitor);\n            } });\n    },\n    enum: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"enum\", _visit: function (visitor) {\n                return FernIr.ExampleTypeShape._visit(this, visitor);\n            } });\n    },\n    object: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"object\", _visit: function (visitor) {\n                return FernIr.ExampleTypeShape._visit(this, visitor);\n            } });\n    },\n    union: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"union\", _visit: function (visitor) {\n                return FernIr.ExampleTypeShape._visit(this, visitor);\n            } });\n    },\n    undiscriminatedUnion: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"undiscriminatedUnion\", _visit: function (visitor) {\n                return FernIr.ExampleTypeShape._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"alias\":\n                return visitor.alias(value);\n            case \"enum\":\n                return visitor.enum(value);\n            case \"object\":\n                return visitor.object(value);\n            case \"union\":\n                return visitor.union(value);\n            case \"undiscriminatedUnion\":\n                return visitor.undiscriminatedUnion(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const Literal = {\n    string: (value) => {\n        return {\n            string: value,\n            type: \"string\",\n            _visit: function (visitor) {\n                return FernIr.Literal._visit(this, visitor);\n            },\n        };\n    },\n    boolean: (value) => {\n        return {\n            boolean: value,\n            type: \"boolean\",\n            _visit: function (visitor) {\n                return FernIr.Literal._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"string\":\n                return visitor.string(value.string);\n            case \"boolean\":\n                return visitor.boolean(value.boolean);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const NamedTypeDefault = {\n    enum: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"enum\", _visit: function (visitor) {\n                return FernIr.NamedTypeDefault._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"enum\":\n                return visitor.enum(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst ObjectPropertyAccessValues = {\n    ReadOnly: \"READ_ONLY\",\n    WriteOnly: \"WRITE_ONLY\",\n};\nexport const ObjectPropertyAccess = Object.assign(Object.assign({}, ObjectPropertyAccessValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case ObjectPropertyAccess.ReadOnly:\n                return visitor.readOnly();\n            case ObjectPropertyAccess.WriteOnly:\n                return visitor.writeOnly();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nconst PrimitiveTypeV1Values = {\n    Integer: \"INTEGER\",\n    /**\n     * Within the range -2^53 to 2^53 */\n    Long: \"LONG\",\n    Uint: \"UINT\",\n    Uint64: \"UINT_64\",\n    Float: \"FLOAT\",\n    Double: \"DOUBLE\",\n    Boolean: \"BOOLEAN\",\n    String: \"STRING\",\n    Date: \"DATE\",\n    DateTime: \"DATE_TIME\",\n    DateTimeRfc2822: \"DATE_TIME_RFC_2822\",\n    Uuid: \"UUID\",\n    Base64: \"BASE_64\",\n    BigInteger: \"BIG_INTEGER\",\n};\nexport const PrimitiveTypeV1 = Object.assign(Object.assign({}, PrimitiveTypeV1Values), { _visit: (value, visitor) => {\n        switch (value) {\n            case PrimitiveTypeV1.Integer:\n                return visitor.integer();\n            case PrimitiveTypeV1.Long:\n                return visitor.long();\n            case PrimitiveTypeV1.Uint:\n                return visitor.uint();\n            case PrimitiveTypeV1.Uint64:\n                return visitor.uint64();\n            case PrimitiveTypeV1.Float:\n                return visitor.float();\n            case PrimitiveTypeV1.Double:\n                return visitor.double();\n            case PrimitiveTypeV1.Boolean:\n                return visitor.boolean();\n            case PrimitiveTypeV1.String:\n                return visitor.string();\n            case PrimitiveTypeV1.Date:\n                return visitor.date();\n            case PrimitiveTypeV1.DateTime:\n                return visitor.dateTime();\n            case PrimitiveTypeV1.DateTimeRfc2822:\n                return visitor.dateTimeRfc2822();\n            case PrimitiveTypeV1.Uuid:\n                return visitor.uuid();\n            case PrimitiveTypeV1.Base64:\n                return visitor.base64();\n            case PrimitiveTypeV1.BigInteger:\n                return visitor.bigInteger();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const PrimitiveTypeV2 = {\n    integer: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"integer\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    long: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"long\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    uint: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"uint\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    uint64: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"uint64\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    float: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"float\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    double: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"double\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    boolean: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"boolean\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    string: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"string\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    date: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"date\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    dateTime: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"dateTime\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    dateTimeRfc2822: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"dateTimeRfc2822\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    uuid: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"uuid\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    base64: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"base64\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    bigInteger: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"bigInteger\", _visit: function (visitor) {\n                return FernIr.PrimitiveTypeV2._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"integer\":\n                return visitor.integer(value);\n            case \"long\":\n                return visitor.long(value);\n            case \"uint\":\n                return visitor.uint(value);\n            case \"uint64\":\n                return visitor.uint64(value);\n            case \"float\":\n                return visitor.float(value);\n            case \"double\":\n                return visitor.double(value);\n            case \"boolean\":\n                return visitor.boolean(value);\n            case \"string\":\n                return visitor.string(value);\n            case \"date\":\n                return visitor.date(value);\n            case \"dateTime\":\n                return visitor.dateTime(value);\n            case \"dateTimeRfc2822\":\n                return visitor.dateTimeRfc2822(value);\n            case \"uuid\":\n                return visitor.uuid(value);\n            case \"base64\":\n                return visitor.base64(value);\n            case \"bigInteger\":\n                return visitor.bigInteger(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ResolvedTypeReference = {\n    container: (value) => {\n        return {\n            container: value,\n            type: \"container\",\n            _visit: function (visitor) {\n                return FernIr.ResolvedTypeReference._visit(this, visitor);\n            },\n        };\n    },\n    named: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"named\", _visit: function (visitor) {\n                return FernIr.ResolvedTypeReference._visit(this, visitor);\n            } });\n    },\n    primitive: (value) => {\n        return {\n            primitive: value,\n            type: \"primitive\",\n            _visit: function (visitor) {\n                return FernIr.ResolvedTypeReference._visit(this, visitor);\n            },\n        };\n    },\n    unknown: () => {\n        return {\n            type: \"unknown\",\n            _visit: function (visitor) {\n                return FernIr.ResolvedTypeReference._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"container\":\n                return visitor.container(value.container);\n            case \"named\":\n                return visitor.named(value);\n            case \"primitive\":\n                return visitor.primitive(value.primitive);\n            case \"unknown\":\n                return visitor.unknown();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst ShapeTypeValues = {\n    Enum: \"ENUM\",\n    Object: \"OBJECT\",\n    Union: \"UNION\",\n    UndiscriminatedUnion: \"UNDISCRIMINATED_UNION\",\n};\nexport const ShapeType = Object.assign(Object.assign({}, ShapeTypeValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case ShapeType.Enum:\n                return visitor.enum();\n            case ShapeType.Object:\n                return visitor.object();\n            case ShapeType.Union:\n                return visitor.union();\n            case ShapeType.UndiscriminatedUnion:\n                return visitor.undiscriminatedUnion();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const SingleUnionTypeProperties = {\n    samePropertiesAsObject: (value) => {\n        return Object.assign(Object.assign({}, value), { propertiesType: \"samePropertiesAsObject\", _visit: function (visitor) {\n                return FernIr.SingleUnionTypeProperties._visit(this, visitor);\n            } });\n    },\n    singleProperty: (value) => {\n        return Object.assign(Object.assign({}, value), { propertiesType: \"singleProperty\", _visit: function (visitor) {\n                return FernIr.SingleUnionTypeProperties._visit(this, visitor);\n            } });\n    },\n    noProperties: () => {\n        return {\n            propertiesType: \"noProperties\",\n            _visit: function (visitor) {\n                return FernIr.SingleUnionTypeProperties._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.propertiesType) {\n            case \"samePropertiesAsObject\":\n                return visitor.samePropertiesAsObject(value);\n            case \"singleProperty\":\n                return visitor.singleProperty(value);\n            case \"noProperties\":\n                return visitor.noProperties();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const Source = {\n    proto: (value) => {\n        return {\n            value: value,\n            type: \"proto\",\n            _visit: function (visitor) {\n                return FernIr.Source._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"proto\":\n                return visitor.proto(value.value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const Type = {\n    alias: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"alias\", _visit: function (visitor) {\n                return FernIr.Type._visit(this, visitor);\n            } });\n    },\n    enum: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"enum\", _visit: function (visitor) {\n                return FernIr.Type._visit(this, visitor);\n            } });\n    },\n    object: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"object\", _visit: function (visitor) {\n                return FernIr.Type._visit(this, visitor);\n            } });\n    },\n    union: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"union\", _visit: function (visitor) {\n                return FernIr.Type._visit(this, visitor);\n            } });\n    },\n    undiscriminatedUnion: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"undiscriminatedUnion\", _visit: function (visitor) {\n                return FernIr.Type._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"alias\":\n                return visitor.alias(value);\n            case \"enum\":\n                return visitor.enum(value);\n            case \"object\":\n                return visitor.object(value);\n            case \"union\":\n                return visitor.union(value);\n            case \"undiscriminatedUnion\":\n                return visitor.undiscriminatedUnion(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const TypeReference = {\n    container: (value) => {\n        return {\n            container: value,\n            type: \"container\",\n            _visit: function (visitor) {\n                return FernIr.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    named: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"named\", _visit: function (visitor) {\n                return FernIr.TypeReference._visit(this, visitor);\n            } });\n    },\n    primitive: (value) => {\n        return {\n            primitive: value,\n            type: \"primitive\",\n            _visit: function (visitor) {\n                return FernIr.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    unknown: () => {\n        return {\n            type: \"unknown\",\n            _visit: function (visitor) {\n                return FernIr.TypeReference._visit(this, visitor);\n            },\n        };\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"container\":\n                return visitor.container(value.container);\n            case \"named\":\n                return visitor.named(value);\n            case \"primitive\":\n                return visitor.primitive(value.primitive);\n            case \"unknown\":\n                return visitor.unknown();\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\n/** Location of the discriminator relative to the union type */\nconst UnionDiscriminatorContextValues = {\n    /**\n     * Discriminator is within the union data itself (e.g., data.type field) */\n    Data: \"data\",\n    /**\n     * Discriminator is at the protocol level (e.g., SSE event field, HTTP path) */\n    Protocol: \"protocol\",\n};\nexport const UnionDiscriminatorContext = Object.assign(Object.assign({}, UnionDiscriminatorContextValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case UnionDiscriminatorContext.Data:\n                return visitor.data();\n            case UnionDiscriminatorContext.Protocol:\n                return visitor.protocol();\n            default:\n                return visitor._other();\n        }\n    } });\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\n/** The asymmetric signing algorithm. */\nconst AsymmetricAlgorithmValues = {\n    RsaSha256: \"RSA_SHA256\",\n    RsaSha384: \"RSA_SHA384\",\n    RsaSha512: \"RSA_SHA512\",\n    EcdsaSha256: \"ECDSA_SHA256\",\n    EcdsaSha384: \"ECDSA_SHA384\",\n    EcdsaSha512: \"ECDSA_SHA512\",\n    Ed25519: \"ED25519\",\n};\nexport const AsymmetricAlgorithm = Object.assign(Object.assign({}, AsymmetricAlgorithmValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case AsymmetricAlgorithm.RsaSha256:\n                return visitor.rsaSha256();\n            case AsymmetricAlgorithm.RsaSha384:\n                return visitor.rsaSha384();\n            case AsymmetricAlgorithm.RsaSha512:\n                return visitor.rsaSha512();\n            case AsymmetricAlgorithm.EcdsaSha256:\n                return visitor.ecdsaSha256();\n            case AsymmetricAlgorithm.EcdsaSha384:\n                return visitor.ecdsaSha384();\n            case AsymmetricAlgorithm.EcdsaSha512:\n                return visitor.ecdsaSha512();\n            case AsymmetricAlgorithm.Ed25519:\n                return visitor.ed25519();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const AsymmetricKeySource = {\n    jwks: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"jwks\", _visit: function (visitor) {\n                return FernIr.AsymmetricKeySource._visit(this, visitor);\n            } });\n    },\n    static: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"static\", _visit: function (visitor) {\n                return FernIr.AsymmetricKeySource._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"jwks\":\n                return visitor.jwks(value);\n            case \"static\":\n                return visitor.static(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\n/** The HMAC algorithm used to compute the webhook signature. */\nconst HmacAlgorithmValues = {\n    Sha256: \"SHA256\",\n    Sha1: \"SHA1\",\n    Sha384: \"SHA384\",\n    Sha512: \"SHA512\",\n};\nexport const HmacAlgorithm = Object.assign(Object.assign({}, HmacAlgorithmValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case HmacAlgorithm.Sha256:\n                return visitor.sha256();\n            case HmacAlgorithm.Sha1:\n                return visitor.sha1();\n            case HmacAlgorithm.Sha384:\n                return visitor.sha384();\n            case HmacAlgorithm.Sha512:\n                return visitor.sha512();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nconst WebhookHttpMethodValues = {\n    Get: \"GET\",\n    Post: \"POST\",\n};\nexport const WebhookHttpMethod = Object.assign(Object.assign({}, WebhookHttpMethodValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case WebhookHttpMethod.Get:\n                return visitor.get();\n            case WebhookHttpMethod.Post:\n                return visitor.post();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const WebhookPayload = {\n    inlinedPayload: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"inlinedPayload\", _visit: function (visitor) {\n                return FernIr.WebhookPayload._visit(this, visitor);\n            } });\n    },\n    reference: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"reference\", _visit: function (visitor) {\n                return FernIr.WebhookPayload._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"inlinedPayload\":\n                return visitor.inlinedPayload(value);\n            case \"reference\":\n                return visitor.reference(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\n/** A component included in the signed payload. */\nconst WebhookPayloadComponentValues = {\n    /**\n     * The raw request body. */\n    Body: \"BODY\",\n    /**\n     * The delivery timestamp value from the timestamp header. */\n    Timestamp: \"TIMESTAMP\",\n    /**\n     * The notification/callback URL. */\n    NotificationUrl: \"NOTIFICATION_URL\",\n    /**\n     * A provider-assigned message identifier. */\n    MessageId: \"MESSAGE_ID\",\n};\nexport const WebhookPayloadComponent = Object.assign(Object.assign({}, WebhookPayloadComponentValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case WebhookPayloadComponent.Body:\n                return visitor.body();\n            case WebhookPayloadComponent.Timestamp:\n                return visitor.timestamp();\n            case WebhookPayloadComponent.NotificationUrl:\n                return visitor.notificationUrl();\n            case WebhookPayloadComponent.MessageId:\n                return visitor.messageId();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\n/** The encoding of the computed signature. */\nconst WebhookSignatureEncodingValues = {\n    Base64: \"BASE64\",\n    Hex: \"HEX\",\n};\nexport const WebhookSignatureEncoding = Object.assign(Object.assign({}, WebhookSignatureEncodingValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case WebhookSignatureEncoding.Base64:\n                return visitor.base64();\n            case WebhookSignatureEncoding.Hex:\n                return visitor.hex();\n            default:\n                return visitor._other();\n        }\n    } });\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const WebhookSignatureVerification = {\n    hmac: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"hmac\", _visit: function (visitor) {\n                return FernIr.WebhookSignatureVerification._visit(this, visitor);\n            } });\n    },\n    asymmetric: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"asymmetric\", _visit: function (visitor) {\n                return FernIr.WebhookSignatureVerification._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"hmac\":\n                return visitor.hmac(value);\n            case \"asymmetric\":\n                return visitor.asymmetric(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\n/** The format of the timestamp value in the header. */\nconst WebhookTimestampFormatValues = {\n    UnixSeconds: \"UNIX_SECONDS\",\n    UnixMillis: \"UNIX_MILLIS\",\n    Iso8601: \"ISO8601\",\n};\nexport const WebhookTimestampFormat = Object.assign(Object.assign({}, WebhookTimestampFormatValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case WebhookTimestampFormat.UnixSeconds:\n                return visitor.unixSeconds();\n            case WebhookTimestampFormat.UnixMillis:\n                return visitor.unixMillis();\n            case WebhookTimestampFormat.Iso8601:\n                return visitor.iso8601();\n            default:\n                return visitor._other();\n        }\n    } });\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const ExampleWebSocketMessageBody = {\n    inlinedBody: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"inlinedBody\", _visit: function (visitor) {\n                return FernIr.ExampleWebSocketMessageBody._visit(this, visitor);\n            } });\n    },\n    reference: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"reference\", _visit: function (visitor) {\n                return FernIr.ExampleWebSocketMessageBody._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"inlinedBody\":\n                return visitor.inlinedBody(value);\n            case \"reference\":\n                return visitor.reference(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nimport * as FernIr from \"../../../index.mjs\";\nexport const WebSocketMessageBody = {\n    inlinedBody: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"inlinedBody\", _visit: function (visitor) {\n                return FernIr.WebSocketMessageBody._visit(this, visitor);\n            } });\n    },\n    reference: (value) => {\n        return Object.assign(Object.assign({}, value), { type: \"reference\", _visit: function (visitor) {\n                return FernIr.WebSocketMessageBody._visit(this, visitor);\n            } });\n    },\n    _visit: (value, visitor) => {\n        switch (value.type) {\n            case \"inlinedBody\":\n                return visitor.inlinedBody(value);\n            case \"reference\":\n                return visitor.reference(value);\n            default:\n                return visitor._other(value);\n        }\n    },\n};\n","// This file was auto-generated by Fern from our API Definition.\nconst WebSocketMessageOriginValues = {\n    Client: \"client\",\n    Server: \"server\",\n};\nexport const WebSocketMessageOrigin = Object.assign(Object.assign({}, WebSocketMessageOriginValues), { _visit: (value, visitor) => {\n        switch (value) {\n            case WebSocketMessageOrigin.Client:\n                return visitor.client();\n            case WebSocketMessageOrigin.Server:\n                return visitor.server();\n            default:\n                return visitor._other();\n        }\n    } });\n","import { is } from \"./type-guards.js\";\n\n/**\n * Capitalizes the first character of a string.\n *\n * @param str - The input string to transform\n * @returns A new string with the first character uppercased and the rest unchanged\n *\n * @example\n * ```ts\n * upperFirst(\"hello\") // returns \"Hello\"\n * upperFirst(\"WORLD\") // returns \"WORLD\"\n * upperFirst(\"\") // returns \"\"\n * ```\n */\nexport function upperFirst(str: string): string {\n    return `${str.charAt(0).toUpperCase()}${str.slice(1)}`;\n}\n\n/**\n * Converts a string to camelCase format.\n *\n * This function handles various input formats including:\n * - Snake_case\n * - kebab-case\n * - PascalCase\n * - camelCase\n * - Space separated words\n * - Mixed formats with acronyms\n *\n * @param str - The input string to transform\n * @returns A camelCase version of the input string, with the first word lowercased\n *          and subsequent words capitalized. Returns an empty string if the input\n *          contains no valid words.\n *\n * @example\n * ```ts\n * camelCase(\"hello world\") // returns \"helloWorld\"\n * camelCase(\"snake_case_string\") // returns \"snakeCaseString\"\n * camelCase(\"kebab-case-string\") // returns \"kebabCaseString\"\n * camelCase(\"PascalCaseString\") // returns \"pascalCaseString\"\n * camelCase(\"XMLParser\") // returns \"xmlParser\"\n * camelCase(\"\") // returns \"\"\n * ```\n */\nexport function camelCase(str: string): string {\n    // Remove leading and trailing whitespace\n    str = str.trim();\n\n    // Split on whitespace, hyphens, underscores, and transitions from lowercase to uppercase\n    const words = str\n        .replace(/([a-z])([A-Z])/g, \"$1 $2\") // Add space between camelCase\n        .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1 $2\") // Handle acronyms like \"XMLParser\" -> \"XML Parser\"\n        .split(/[\\s_-]+/) // Split on whitespace, underscores, and hyphens\n        .filter((word) => word.length > 0);\n\n    if (words.length === 0) {\n        return \"\";\n    }\n\n    // First word is lowercase, rest are capitalized\n    return words\n        .map((word, index) => {\n            word = word.toLowerCase();\n            if (index === 0) {\n                return word;\n            }\n            return `${word.charAt(0).toUpperCase()}${word.slice(1)}`;\n        })\n        .join(\"\");\n}\n\n/**\n * Hashes a string to a number.\n * @param input - The input string to hash\n * @returns A number generated from the input string\n *\n * @example\n * ```ts\n * hash(\"hello\") // returns 1000000\n * hash(\"WORLD\") // returns 1000000\n * hash(\"\") // returns 0\n * ```\n */\nexport function hash(input: string): number {\n    let hash = 0;\n    for (const char of input) {\n        hash = (hash << 5) - hash + char.charCodeAt(0);\n    }\n    return hash;\n}\n\n/**\n * Generates a deterministic unique id from a string.\n * @param input - The input string to generate a unique id for\n * @returns A unique id generated from the input string\n *\n * @example\n * ```ts\n * uniqueId(\"hello\") // returns \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\"\n * uniqueId(\"WORLD\") // returns \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\"\n * uniqueId(\"\") // returns \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\"\n * ```\n */\nexport function uniqueId(input: string): string {\n    // create a unique guid without using thecrypto library.\n    // Seeded pseudo-random number generator\n    function iterate(seed: number): number {\n        const x = Math.sin(seed++) * 10000;\n        return x - Math.floor(x);\n    }\n\n    let seed = hash(input);\n\n    // Generate UUID v4 format using seeded random\n    return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n        const r = (iterate(seed++) * 16) | 0;\n        const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n        return v.toString(16);\n    });\n}\n/**\n * This normalized date strings to ISO 8601 format so that they can be matched in wire tests.\n *\n * This can be used as a replacer function for JSON.stringify.\n *\n * @example\n * ```ts\n * JSON.stringify({ a: \"2025-01-01T00:00:00.000\" }, normalizeDates, 2);\n * ```\n */\nexport function normalizeDates(key: string, value: unknown): unknown {\n    return is.isIsoDateTimeString(value) // reformat date time to ISO 8601 format\n        ? new Date(value).toISOString()\n        : is.isIsoDateString(value) // reformat date to ISO 8601 format\n          ? new Date(value).toISOString().slice(0, 10)\n          : value; // return value as is\n}\n","/**\n * TYPE GUARDS FOR @fern-api/dynamic-ir-sdk\n *\n * This file contains runtime type guards for validating objects from the Dynamic IR SDK.\n *\n * ============================================================================================\n * INSTRUCTIONS FOR UPDATING THIS FILE WHEN @fern-api/dynamic-ir-sdk PACKAGE IS UPDATED:\n * ============================================================================================\n *\n * 1. LOCATE INTERFACE DEFINITIONS:\n *    - All interfaces are in: node_modules/@fern-api/dynamic-ir-sdk/api/resources/dynamic/\n *    - ONLY include types from the `dynamic` namespace (FernIr.dynamic.*)\n *    - EXCLUDE types from `generatorExec` namespace - they are NOT in FernIr.dynamic\n *\n * 2. STANDARD INTERFACE TYPEGUARDS:\n *    - For each interface, create a typeguard that checks REQUIRED fields only\n *    - Use this structure:\n *      InterfaceName: (value: unknown): value is FernIr.dynamic.InterfaceName =>\n *          isObject(value) &&\n *          \"requiredProp1\" in value &&\n *          \"requiredProp2\" in value &&\n *          typeof value.requiredProp1 === \"string\" &&\n *          Array.isArray(value.requiredProp2)\n *\n * 3. CHECK ORDERING (IMPORTANT):\n *    - First: ALL property presence checks (\"prop\" in value)\n *    - Then: ALL type validation checks (typeof, Array.isArray, is.OtherType)\n *    - This ordering improves performance and readability\n *\n * 4. TYPE CHECKS TO USE:\n *    - Primitives: typeof value.prop === \"string\" | \"number\" | \"boolean\"\n *    - Arrays: Array.isArray(value.prop)\n *    - Records/Objects: isObject(value.prop)\n *    - Other interfaces: is.OtherInterface(value.prop)\n *\n * 5. DISCRIMINATED UNIONS:\n *    - Found in files like Auth.d.ts, Request.d.ts, etc.\n *    - Pattern: \"export type UnionName = UnionName.Variant1 | UnionName.Variant2\"\n *              \"export declare namespace UnionName { interface Variant1 extends ParentInterface { type: \"variant1\" } }\"\n *    - Structure as nested objects:\n *      UnionName: {\n *          Variant1: (value: unknown): value is FernIr.dynamic.UnionName.Variant1 =>\n *              is.ParentInterface(value) && \"type\" in value && value.type === \"variant1\",\n *          Variant2: (value: unknown): value is FernIr.dynamic.UnionName.Variant2 =>\n *              is.ParentInterface(value) && \"type\" in value && value.type === \"variant2\"\n *      }\n *\n * 6. OPTIMIZATION RULES:\n *    - For union variants: Use parent interface check (e.g., is.BasicAuth(value))\n *    - DO NOT add redundant isObject(value) after a parent check\n *    - Parent checks already include isObject validation\n *\n * 7. CATEGORIZATION:\n *    - Group typeguards by their location in the SDK:\n *      • Common Types (from /resources/dynamic/resources/commons/)\n *      • Auth Types (from /resources/dynamic/resources/auth/)\n *      • Environment Types (from /resources/dynamic/resources/environment/)\n *      • Types Types (from /resources/dynamic/resources/types/)\n *      • Endpoints Types (from /resources/dynamic/resources/endpoints/)\n *      • IR Types (from /resources/dynamic/resources/ir/)\n *      • Variables Types (from /resources/dynamic/resources/variables/)\n *      • Snippets Types (from /resources/dynamic/resources/snippets/)\n *      • Discriminated Unions (at the end)\n *\n * 8. NAMING CONVENTIONS:\n *    - Use exact interface names from the SDK\n *    - For interfaces ending in underscore (e.g., Error_), keep the underscore\n *    - For discriminated unions, use PascalCase variant names from the namespace\n *\n * 9. VERIFICATION:\n *    - After updating, run linter to check for errors\n *    - Ensure all FernIr.dynamic.* types are exported from the SDK\n *    - Test that no TypeScript compilation errors occur\n *\n * CURRENT STATS: 51 standard typeguards, 10 discriminated unions (34 variants)\n * ============================================================================================\n */\n\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nconst isObject = (value: unknown): value is object =>\n    value != null && typeof value === \"object\" && !Array.isArray(value);\n\nexport const is = {\n    // Common Types\n    FernFilepath: (value: unknown): value is FernIr.dynamic.FernFilepath =>\n        isObject(value) &&\n        \"allParts\" in value &&\n        \"packagePath\" in value &&\n        Array.isArray(value.allParts) &&\n        Array.isArray(value.packagePath),\n    Name: (value: unknown): value is FernIr.dynamic.Name =>\n        isObject(value) &&\n        \"originalName\" in value &&\n        \"camelCase\" in value &&\n        \"pascalCase\" in value &&\n        \"snakeCase\" in value &&\n        \"screamingSnakeCase\" in value &&\n        typeof value.originalName === \"string\",\n    NameAndWireValue: (value: unknown): value is FernIr.dynamic.NameAndWireValue =>\n        isObject(value) && \"wireValue\" in value && \"name\" in value && typeof value.wireValue === \"string\",\n    SafeAndUnsafeString: (value: unknown): value is FernIr.dynamic.SafeAndUnsafeString =>\n        isObject(value) &&\n        \"unsafeName\" in value &&\n        \"safeName\" in value &&\n        typeof value.unsafeName === \"string\" &&\n        typeof value.safeName === \"string\",\n    WithDocs: (value: unknown): value is FernIr.dynamic.WithDocs => isObject(value),\n\n    // Auth Types\n    BasicAuth: (value: unknown): value is FernIr.dynamic.BasicAuth =>\n        isObject(value) && \"username\" in value && \"password\" in value,\n    BasicAuthValues: (value: unknown): value is FernIr.dynamic.BasicAuthValues =>\n        isObject(value) &&\n        \"username\" in value &&\n        \"password\" in value &&\n        typeof value.username === \"string\" &&\n        typeof value.password === \"string\",\n    BearerAuth: (value: unknown): value is FernIr.dynamic.BearerAuth => isObject(value) && \"token\" in value,\n    BearerAuthValues: (value: unknown): value is FernIr.dynamic.BearerAuthValues =>\n        isObject(value) && \"token\" in value && typeof value.token === \"string\",\n    HeaderAuth: (value: unknown): value is FernIr.dynamic.HeaderAuth => isObject(value) && \"header\" in value,\n    HeaderAuthValues: (value: unknown): value is FernIr.dynamic.HeaderAuthValues => isObject(value),\n    InferredAuth: (value: unknown): value is FernIr.dynamic.InferredAuth => isObject(value),\n    InferredAuthValues: (value: unknown): value is FernIr.dynamic.InferredAuthValues => isObject(value),\n    OAuth: (value: unknown): value is FernIr.dynamic.OAuth =>\n        isObject(value) && \"clientId\" in value && \"clientSecret\" in value,\n    OAuthValues: (value: unknown): value is FernIr.dynamic.OAuthValues =>\n        isObject(value) &&\n        \"clientId\" in value &&\n        \"clientSecret\" in value &&\n        typeof value.clientId === \"string\" &&\n        typeof value.clientSecret === \"string\",\n\n    // Environment Types\n    EnvironmentBaseUrlWithId: (value: unknown): value is FernIr.dynamic.EnvironmentBaseUrlWithId =>\n        isObject(value) && \"id\" in value && \"name\" in value,\n    EnvironmentsConfig: (value: unknown): value is FernIr.dynamic.EnvironmentsConfig =>\n        isObject(value) && \"environments\" in value,\n    MultipleBaseUrlsEnvironment: (value: unknown): value is FernIr.dynamic.MultipleBaseUrlsEnvironment =>\n        isObject(value) && \"id\" in value && \"name\" in value && \"urls\" in value && isObject(value.urls),\n    MultipleBaseUrlsEnvironments: (value: unknown): value is FernIr.dynamic.MultipleBaseUrlsEnvironments =>\n        isObject(value) &&\n        \"baseUrls\" in value &&\n        \"environments\" in value &&\n        Array.isArray(value.baseUrls) &&\n        Array.isArray(value.environments),\n    SingleBaseUrlEnvironment: (value: unknown): value is FernIr.dynamic.SingleBaseUrlEnvironment =>\n        isObject(value) && \"id\" in value && \"name\" in value && \"url\" in value,\n    SingleBaseUrlEnvironments: (value: unknown): value is FernIr.dynamic.SingleBaseUrlEnvironments =>\n        isObject(value) && \"environments\" in value && Array.isArray(value.environments),\n\n    // Types Types\n    AliasType: (value: unknown): value is FernIr.dynamic.AliasType =>\n        isObject(value) && \"declaration\" in value && \"typeReference\" in value,\n    DiscriminatedUnionType: (value: unknown): value is FernIr.dynamic.DiscriminatedUnionType =>\n        isObject(value) &&\n        \"declaration\" in value &&\n        \"discriminant\" in value &&\n        \"types\" in value &&\n        isObject(value.types),\n    EnumType: (value: unknown): value is FernIr.dynamic.EnumType =>\n        isObject(value) && \"declaration\" in value && \"values\" in value && Array.isArray(value.values),\n    MapType: (value: unknown): value is FernIr.dynamic.MapType => isObject(value) && \"key\" in value && \"value\" in value,\n    NamedParameter: (value: unknown): value is FernIr.dynamic.NamedParameter =>\n        isObject(value) && \"name\" in value && \"typeReference\" in value,\n    ObjectType: (value: unknown): value is FernIr.dynamic.ObjectType =>\n        isObject(value) && \"declaration\" in value && \"properties\" in value && Array.isArray(value.properties),\n    SingleDiscriminatedUnionTypeNoProperties: (\n        value: unknown\n    ): value is FernIr.dynamic.SingleDiscriminatedUnionTypeNoProperties =>\n        isObject(value) && \"discriminantValue\" in value,\n    SingleDiscriminatedUnionTypeObject: (value: unknown): value is FernIr.dynamic.SingleDiscriminatedUnionTypeObject =>\n        isObject(value) &&\n        \"typeId\" in value &&\n        \"discriminantValue\" in value &&\n        \"properties\" in value &&\n        Array.isArray(value.properties),\n    SingleDiscriminatedUnionTypeSingleProperty: (\n        value: unknown\n    ): value is FernIr.dynamic.SingleDiscriminatedUnionTypeSingleProperty =>\n        isObject(value) && \"typeReference\" in value && \"discriminantValue\" in value,\n    UndiscriminatedUnionType: (value: unknown): value is FernIr.dynamic.UndiscriminatedUnionType =>\n        isObject(value) && \"declaration\" in value && \"types\" in value && Array.isArray(value.types),\n\n    // Endpoints Types\n    BodyRequest: (value: unknown): value is FernIr.dynamic.BodyRequest => isObject(value),\n    Endpoint: (value: unknown): value is FernIr.dynamic.Endpoint =>\n        isObject(value) && \"declaration\" in value && \"location\" in value && \"request\" in value && \"response\" in value,\n    EndpointExample: (value: unknown): value is FernIr.dynamic.EndpointExample =>\n        isObject(value) && \"id\" in value && typeof value.id === \"string\",\n    EndpointLocation: (value: unknown): value is FernIr.dynamic.EndpointLocation =>\n        isObject(value) && \"method\" in value && \"path\" in value && typeof value.path === \"string\",\n    FileUploadRequestBody: (value: unknown): value is FernIr.dynamic.FileUploadRequestBody =>\n        isObject(value) && \"properties\" in value && Array.isArray(value.properties),\n    InlinedRequest: (value: unknown): value is FernIr.dynamic.InlinedRequest =>\n        isObject(value) && \"declaration\" in value,\n    InlinedRequestMetadata: (value: unknown): value is FernIr.dynamic.InlinedRequestMetadata =>\n        isObject(value) &&\n        \"includePathParameters\" in value &&\n        \"onlyPathParameters\" in value &&\n        typeof value.includePathParameters === \"boolean\" &&\n        typeof value.onlyPathParameters === \"boolean\",\n    ReferencedRequestBody: (value: unknown): value is FernIr.dynamic.ReferencedRequestBody =>\n        isObject(value) && \"bodyKey\" in value && \"bodyType\" in value,\n\n    // IR Types\n    DynamicIntermediateRepresentation: (value: unknown): value is FernIr.dynamic.DynamicIntermediateRepresentation =>\n        isObject(value) &&\n        \"version\" in value &&\n        \"types\" in value &&\n        \"endpoints\" in value &&\n        isObject(value.types) &&\n        isObject(value.endpoints),\n    GeneratorConfig: (value: unknown): value is FernIr.dynamic.GeneratorConfig =>\n        isObject(value) &&\n        \"apiName\" in value &&\n        \"organization\" in value &&\n        \"outputConfig\" in value &&\n        typeof value.apiName === \"string\" &&\n        typeof value.organization === \"string\",\n    GoPublishInfo: (value: unknown): value is FernIr.dynamic.GoPublishInfo =>\n        isObject(value) &&\n        \"version\" in value &&\n        \"repoUrl\" in value &&\n        typeof value.version === \"string\" &&\n        typeof value.repoUrl === \"string\",\n    MavenPublishInfo: (value: unknown): value is FernIr.dynamic.MavenPublishInfo =>\n        isObject(value) &&\n        \"version\" in value &&\n        \"coordinate\" in value &&\n        typeof value.version === \"string\" &&\n        typeof value.coordinate === \"string\",\n    NpmPublishInfo: (value: unknown): value is FernIr.dynamic.NpmPublishInfo =>\n        isObject(value) &&\n        \"version\" in value &&\n        \"packageName\" in value &&\n        typeof value.version === \"string\" &&\n        typeof value.packageName === \"string\",\n    NugetPublishInfo: (value: unknown): value is FernIr.dynamic.NugetPublishInfo =>\n        isObject(value) &&\n        \"version\" in value &&\n        \"packageName\" in value &&\n        typeof value.version === \"string\" &&\n        typeof value.packageName === \"string\",\n    PypiPublishInfo: (value: unknown): value is FernIr.dynamic.PypiPublishInfo =>\n        isObject(value) &&\n        \"version\" in value &&\n        \"packageName\" in value &&\n        typeof value.version === \"string\" &&\n        typeof value.packageName === \"string\",\n    RubyGemsPublishInfo: (value: unknown): value is FernIr.dynamic.RubyGemsPublishInfo =>\n        isObject(value) &&\n        \"version\" in value &&\n        \"packageName\" in value &&\n        typeof value.version === \"string\" &&\n        typeof value.packageName === \"string\",\n\n    // Variables Types\n    VariableDeclaration: (value: unknown): value is FernIr.dynamic.VariableDeclaration =>\n        isObject(value) && \"id\" in value && \"name\" in value && \"typeReference\" in value && typeof value.id === \"string\",\n\n    // Snippets Types\n    EndpointSnippetRequest: (value: unknown): value is FernIr.dynamic.EndpointSnippetRequest =>\n        isObject(value) && \"endpoint\" in value,\n    EndpointSnippetResponse: (value: unknown): value is FernIr.dynamic.EndpointSnippetResponse =>\n        isObject(value) && \"snippet\" in value && typeof value.snippet === \"string\",\n    Error_: (value: unknown): value is FernIr.dynamic.Error_ =>\n        isObject(value) && \"severity\" in value && \"message\" in value && typeof value.message === \"string\",\n\n    // Discriminated Unions\n    Auth: {\n        Basic: (value: unknown): value is FernIr.dynamic.Auth.Basic =>\n            is.BasicAuth(value) && \"type\" in value && value.type === \"basic\",\n        Bearer: (value: unknown): value is FernIr.dynamic.Auth.Bearer =>\n            is.BearerAuth(value) && \"type\" in value && value.type === \"bearer\",\n        Header: (value: unknown): value is FernIr.dynamic.Auth.Header =>\n            is.HeaderAuth(value) && \"type\" in value && value.type === \"header\",\n        Inferred: (value: unknown): value is FernIr.dynamic.Auth.Inferred =>\n            is.InferredAuth(value) && \"type\" in value && value.type === \"inferred\",\n        Oauth: (value: unknown): value is FernIr.dynamic.Auth.Oauth =>\n            is.OAuth(value) && \"type\" in value && value.type === \"oauth\"\n    },\n\n    AuthValues: {\n        Basic: (value: unknown): value is FernIr.dynamic.AuthValues.Basic =>\n            is.BasicAuthValues(value) && \"type\" in value && value.type === \"basic\",\n        Bearer: (value: unknown): value is FernIr.dynamic.AuthValues.Bearer =>\n            is.BearerAuthValues(value) && \"type\" in value && value.type === \"bearer\",\n        Header: (value: unknown): value is FernIr.dynamic.AuthValues.Header =>\n            is.HeaderAuthValues(value) && \"type\" in value && value.type === \"header\",\n        Inferred: (value: unknown): value is FernIr.dynamic.AuthValues.Inferred =>\n            is.InferredAuthValues(value) && \"type\" in value && value.type === \"inferred\",\n        Oauth: (value: unknown): value is FernIr.dynamic.AuthValues.Oauth =>\n            is.OAuthValues(value) && \"type\" in value && value.type === \"oauth\"\n    },\n\n    Environments: {\n        MultipleBaseUrls: (value: unknown): value is FernIr.dynamic.Environments.MultipleBaseUrls =>\n            is.MultipleBaseUrlsEnvironments(value) && \"type\" in value && value.type === \"multipleBaseUrls\",\n        SingleBaseUrl: (value: unknown): value is FernIr.dynamic.Environments.SingleBaseUrl =>\n            is.SingleBaseUrlEnvironments(value) && \"type\" in value && value.type === \"singleBaseUrl\"\n    },\n\n    FileUploadRequestBodyProperty: {\n        BodyProperty: (value: unknown): value is FernIr.dynamic.FileUploadRequestBodyProperty.BodyProperty =>\n            is.NamedParameter(value) && \"type\" in value && value.type === \"bodyProperty\",\n        FileArray: (value: unknown): value is FernIr.dynamic.FileUploadRequestBodyProperty.FileArray =>\n            is.NameAndWireValue(value) && \"type\" in value && value.type === \"fileArray\",\n        File_: (value: unknown): value is FernIr.dynamic.FileUploadRequestBodyProperty.File_ =>\n            is.NameAndWireValue(value) && \"type\" in value && value.type === \"file\"\n    },\n\n    InlinedRequestBody: {\n        FileUpload: (value: unknown): value is FernIr.dynamic.InlinedRequestBody.FileUpload =>\n            is.FileUploadRequestBody(value) && \"type\" in value && value.type === \"fileUpload\",\n        Referenced: (value: unknown): value is FernIr.dynamic.InlinedRequestBody.Referenced =>\n            is.ReferencedRequestBody(value) && \"type\" in value && value.type === \"referenced\"\n    },\n\n    AnyNamedType: (value: unknown): value is FernIr.dynamic.NamedType =>\n        is.NamedType.Alias(value) ||\n        is.NamedType.DiscriminatedUnion(value) ||\n        is.NamedType.Enum(value) ||\n        is.NamedType.Object_(value) ||\n        is.NamedType.UndiscriminatedUnion(value),\n\n    NamedType: {\n        Alias: (value: unknown): value is FernIr.dynamic.NamedType.Alias =>\n            is.AliasType(value) && \"type\" in value && value.type === \"alias\",\n        DiscriminatedUnion: (value: unknown): value is FernIr.dynamic.NamedType.DiscriminatedUnion =>\n            is.DiscriminatedUnionType(value) && \"type\" in value && value.type === \"discriminatedUnion\",\n        Enum: (value: unknown): value is FernIr.dynamic.NamedType.Enum =>\n            is.EnumType(value) && \"type\" in value && value.type === \"enum\",\n        Object_: (value: unknown): value is FernIr.dynamic.NamedType.Object_ =>\n            is.ObjectType(value) && \"type\" in value && value.type === \"object\",\n        UndiscriminatedUnion: (value: unknown): value is FernIr.dynamic.NamedType.UndiscriminatedUnion =>\n            is.UndiscriminatedUnionType(value) && \"type\" in value && value.type === \"undiscriminatedUnion\"\n    },\n\n    PublishInfo: {\n        Go: (value: unknown): value is FernIr.dynamic.PublishInfo.Go =>\n            is.GoPublishInfo(value) && \"type\" in value && value.type === \"go\",\n        Maven: (value: unknown): value is FernIr.dynamic.PublishInfo.Maven =>\n            is.MavenPublishInfo(value) && \"type\" in value && value.type === \"maven\",\n        Npm: (value: unknown): value is FernIr.dynamic.PublishInfo.Npm =>\n            is.NpmPublishInfo(value) && \"type\" in value && value.type === \"npm\",\n        Nuget: (value: unknown): value is FernIr.dynamic.PublishInfo.Nuget =>\n            is.NugetPublishInfo(value) && \"type\" in value && value.type === \"nuget\",\n        Pypi: (value: unknown): value is FernIr.dynamic.PublishInfo.Pypi =>\n            is.PypiPublishInfo(value) && \"type\" in value && value.type === \"pypi\",\n        Rubygems: (value: unknown): value is FernIr.dynamic.PublishInfo.Rubygems =>\n            is.RubyGemsPublishInfo(value) && \"type\" in value && value.type === \"rubygems\"\n    },\n\n    Request: {\n        Body: (value: unknown): value is FernIr.dynamic.Request.Body =>\n            is.BodyRequest(value) && \"type\" in value && value.type === \"body\",\n        Inlined: (value: unknown): value is FernIr.dynamic.Request.Inlined =>\n            is.InlinedRequest(value) && \"type\" in value && value.type === \"inlined\"\n    },\n\n    SingleDiscriminatedUnionType: {\n        NoProperties: (value: unknown): value is FernIr.dynamic.SingleDiscriminatedUnionType.NoProperties =>\n            is.SingleDiscriminatedUnionTypeNoProperties(value) && \"type\" in value && value.type === \"noProperties\",\n        SamePropertiesAsObject: (\n            value: unknown\n        ): value is FernIr.dynamic.SingleDiscriminatedUnionType.SamePropertiesAsObject =>\n            is.SingleDiscriminatedUnionTypeObject(value) && \"type\" in value && value.type === \"samePropertiesAsObject\",\n        SingleProperty: (value: unknown): value is FernIr.dynamic.SingleDiscriminatedUnionType.SingleProperty =>\n            is.SingleDiscriminatedUnionTypeSingleProperty(value) && \"type\" in value && value.type === \"singleProperty\"\n    },\n\n    TypeReference: {\n        Map: (value: unknown): value is FernIr.dynamic.TypeReference.Map =>\n            is.MapType(value) && \"type\" in value && value.type === \"map\"\n    }\n};\n","/**\n * TYPE GUARDS FOR @fern-fern/ir-sdk\n *\n * This file contains runtime type guards for validating objects from the core IR SDK.\n *\n * ============================================================================================\n * INSTRUCTIONS FOR UPDATING THIS FILE WHEN @fern-fern/ir-sdk PACKAGE IS UPDATED:\n * ============================================================================================\n *\n * 1. LOCATE INTERFACE DEFINITIONS:\n *    - All interfaces are in: node_modules/@fern-fern/ir-sdk/api/resources/\n *    - Key directories: commons, types, http, websocket, errors, examples, auth, etc.\n *    - Import types directly from \"@fern-fern/ir-sdk/api\" (NOT from /api/resources/...)\n *\n * 2. STANDARD INTERFACE TYPEGUARDS:\n *    - For each interface, create a typeguard that checks REQUIRED fields only\n *    - Use this structure:\n *      InterfaceName: (value: unknown): value is InterfaceName =>\n *          isObject(value) &&\n *          \"requiredProp1\" in value &&\n *          \"requiredProp2\" in value &&\n *          typeof value.requiredProp1 === \"string\" &&\n *          Array.isArray(value.requiredProp2)\n *\n * 3. CHECK ORDERING (IMPORTANT):\n *    - First: ALL property presence checks (\"prop\" in value)\n *    - Then: ALL type validation checks (typeof, Array.isArray, is.OtherType)\n *    - This ordering improves performance and readability\n *\n * 4. TYPE CHECKS TO USE:\n *    - Primitives: typeof value.prop === \"string\" | \"number\" | \"boolean\"\n *    - Arrays: Array.isArray(value.prop)\n *    - Records/Objects: isObject(value.prop)\n *    - Other interfaces: is.OtherInterface(value.prop)\n *\n * 5. DISCRIMINATED UNIONS:\n *    - Found in namespace declarations within interface files\n *    - Pattern: Interface extends ParentInterface and has a literal \"type\" property\n *    - Example from SDK:\n *        export declare namespace AuthScheme {\n *            interface Bearer extends BearerAuthScheme {\n *                type: \"bearer\";\n *            }\n *        }\n *    - Structure as nested objects (NOT flat strings):\n *      AuthScheme: {\n *          Bearer: (value: unknown): value is FernIr.AuthScheme.Bearer =>\n *              is.BearerAuthScheme(value) && \"type\" in value && value.type === \"bearer\",\n *          Basic: (value: unknown): value is FernIr.AuthScheme.Basic =>\n *              is.BasicAuthScheme(value) && \"type\" in value && value.type === \"basic\"\n *      }\n *\n * 6. PARENT INTERFACE VALIDATION:\n *    - For union variants, ALWAYS check the parent interface first\n *    - DO NOT check interfaces ending in \"_Utils\" - these only contain visitor patterns\n *    - Example: FernIr.AuthScheme.Bearer extends BearerAuthScheme, so check is.BearerAuthScheme(value)\n *\n * 7. OPTIMIZATION RULES:\n *    - For union variants: Use parent interface check (e.g., is.BearerAuthScheme(value))\n *    - DO NOT add redundant isObject(value) after a parent check\n *    - Parent checks already include isObject validation\n *    - This reduces unnecessary checks and improves performance\n *\n * 8. SPECIAL CASES TO EXCLUDE:\n *    - Skip \"_Utils\" interfaces (e.g., AuthScheme_Utils) - they only have _visit methods\n *    - Skip generatorExec types unless they're explicitly needed\n *    - Some types may have \"_\" suffix (e.g., Object_, File_) - keep the underscore\n *\n * 9. CATEGORIZATION:\n *    - Group typeguards logically:\n *      • Common/Base Types (Name, SafeAndUnsafeString, etc.)\n *      • Type Declarations (AliasTypeDeclaration, ObjectTypeDeclaration, etc.)\n *      • HTTP/Request/Response (HttpEndpoint, HttpRequest, HttpResponse, etc.)\n *      • Auth-Related (ApiAuth, AuthScheme, etc.)\n *      • WebSocket (WebSocketChannel, etc.)\n *      • Errors (ErrorDeclaration, etc.)\n *      • Examples (ExampleType, ExampleEndpointCall, etc.)\n *      • Environment (EnvironmentBaseUrlWithId, etc.)\n *      • Other categories as needed\n *      • Discriminated Unions (at the end, alphabetically sorted)\n *\n * 10. IMPORTS:\n *     - Import ALL types used in typeguards at the top\n *     - Use format:  *     - Keep imports alphabetically sorted for maintainability\n *\n * 11. VERIFICATION:\n *     - After updating, run linter to check for errors\n *     - Ensure all imported types are exported from @fern-fern/ir-sdk/api\n *     - Test that no TypeScript compilation errors occur\n *     - Check that union variants properly extend their parent interfaces\n *\n * 12. COMMON PITFALLS TO AVOID:\n *     - DON'T use flat string keys for union variants (e.g., \"FernIr.AuthScheme.Bearer\")\n *     - DON'T validate _Utils interfaces - they're not real data structures\n *     - DON'T include isObject() after a parent interface check in unions\n *     - DON'T mix up property presence checks and type checks - keep them separate\n *     - DON'T forget to check parent interface for union variants\n *\n * CURRENT STATS: 184 standard typeguards, 183 discriminated union variants (91 with parent validation)\n * ============================================================================================\n */\n\nimport { FernIr } from \"@fern-fern/ir-sdk\";\n\ntype AliasTypeDeclaration = FernIr.AliasTypeDeclaration;\ntype ApiAuth = FernIr.ApiAuth;\ntype ApiDefinitionSource = FernIr.ApiDefinitionSource;\nconst ApiDefinitionSource = FernIr.ApiDefinitionSource;\ntype ApiVersionScheme = FernIr.ApiVersionScheme;\nconst ApiVersionScheme = FernIr.ApiVersionScheme;\ntype AuthScheme = FernIr.AuthScheme;\nconst AuthScheme = FernIr.AuthScheme;\ntype AutogeneratedEndpointExample = FernIr.AutogeneratedEndpointExample;\ntype Availability = FernIr.Availability;\ntype Base64Type = FernIr.Base64Type;\ntype BaseAuthScheme = FernIr.BaseAuthScheme;\ntype BasicAuthScheme = FernIr.BasicAuthScheme;\ntype BasicAuthValues = FernIr.BasicAuthValues;\ntype BearerAuthScheme = FernIr.BearerAuthScheme;\ntype BearerAuthValues = FernIr.BearerAuthValues;\ntype BigIntegerType = FernIr.BigIntegerType;\ntype BooleanType = FernIr.BooleanType;\ntype BytesRequest = FernIr.BytesRequest;\ntype BytesResponse = FernIr.BytesResponse;\ntype Constants = FernIr.Constants;\ntype ContainerType = FernIr.ContainerType;\ntype CsharpProtobufFileOptions = FernIr.CsharpProtobufFileOptions;\ntype CursorPagination = FernIr.CursorPagination;\ntype CustomPagination = FernIr.CustomPagination;\ntype DateTimeType = FernIr.DateTimeType;\ntype DateType = FernIr.DateType;\ntype Declaration = FernIr.Declaration;\ntype DeclaredErrorName = FernIr.DeclaredErrorName;\ntype DeclaredServiceName = FernIr.DeclaredServiceName;\ntype DeclaredTypeName = FernIr.DeclaredTypeName;\ntype DoubleType = FernIr.DoubleType;\ntype DoubleValidationRules = FernIr.DoubleValidationRules;\ntype Encoding = FernIr.Encoding;\ntype EndpointReference = FernIr.EndpointReference;\ntype EnumTypeDeclaration = FernIr.EnumTypeDeclaration;\ntype EnumTypeReference = FernIr.EnumTypeReference;\ntype EnumValue = FernIr.EnumValue;\ntype Environments = FernIr.Environments;\ntype ErrorDeclaration = FernIr.ErrorDeclaration;\ntype ErrorDeclarationDiscriminantValue = FernIr.ErrorDeclarationDiscriminantValue;\ntype ErrorDiscriminationStrategy = FernIr.ErrorDiscriminationStrategy;\ntype EscapedString = FernIr.EscapedString;\ntype ExampleAliasType = FernIr.ExampleAliasType;\ntype ExampleCodeSample = FernIr.ExampleCodeSample;\ntype ExampleCodeSampleLanguage = FernIr.ExampleCodeSampleLanguage;\ntype ExampleCodeSampleSdk = FernIr.ExampleCodeSampleSdk;\ntype ExampleContainer = FernIr.ExampleContainer;\ntype ExampleDatetime = FernIr.ExampleDatetime;\ntype ExampleEndpointCall = FernIr.ExampleEndpointCall;\ntype ExampleEndpointErrorResponse = FernIr.ExampleEndpointErrorResponse;\ntype ExampleEndpointSuccessResponse = FernIr.ExampleEndpointSuccessResponse;\ntype ExampleEnumType = FernIr.ExampleEnumType;\ntype ExampleError = FernIr.ExampleError;\ntype ExampleHeader = FernIr.ExampleHeader;\ntype ExampleInlinedRequestBody = FernIr.ExampleInlinedRequestBody;\ntype ExampleInlinedRequestBodyProperty = FernIr.ExampleInlinedRequestBodyProperty;\ntype ExampleKeyValuePair = FernIr.ExampleKeyValuePair;\ntype ExampleListContainer = FernIr.ExampleListContainer;\ntype ExampleLiteralContainer = FernIr.ExampleLiteralContainer;\ntype ExampleMapContainer = FernIr.ExampleMapContainer;\ntype ExampleNamedType = FernIr.ExampleNamedType;\ntype ExampleNullableContainer = FernIr.ExampleNullableContainer;\ntype ExampleObjectProperty = FernIr.ExampleObjectProperty;\ntype ExampleObjectType = FernIr.ExampleObjectType;\ntype ExampleObjectTypeWithTypeId = FernIr.ExampleObjectTypeWithTypeId;\ntype ExampleOptionalContainer = FernIr.ExampleOptionalContainer;\ntype ExamplePathParameter = FernIr.ExamplePathParameter;\ntype ExamplePrimitive = FernIr.ExamplePrimitive;\ntype ExampleQueryParameter = FernIr.ExampleQueryParameter;\ntype ExampleQueryParameterShape = FernIr.ExampleQueryParameterShape;\ntype ExampleRequestBody = FernIr.ExampleRequestBody;\ntype ExampleResponse = FernIr.ExampleResponse;\ntype ExampleServerSideEvent = FernIr.ExampleServerSideEvent;\ntype ExampleSetContainer = FernIr.ExampleSetContainer;\ntype ExampleSingleUnionType = FernIr.ExampleSingleUnionType;\ntype ExampleSingleUnionTypeProperties = FernIr.ExampleSingleUnionTypeProperties;\ntype ExampleType = FernIr.ExampleType;\ntype ExampleTypeReference = FernIr.ExampleTypeReference;\ntype ExampleTypeReferenceShape = FernIr.ExampleTypeReferenceShape;\ntype ExampleTypeShape = FernIr.ExampleTypeShape;\ntype ExampleUndiscriminatedUnionType = FernIr.ExampleUndiscriminatedUnionType;\ntype ExampleUnionType = FernIr.ExampleUnionType;\ntype ExampleWebhookCall = FernIr.ExampleWebhookCall;\ntype ExampleWebSocketMessage = FernIr.ExampleWebSocketMessage;\ntype ExampleWebSocketMessageBody = FernIr.ExampleWebSocketMessageBody;\ntype ExampleWebSocketSession = FernIr.ExampleWebSocketSession;\ntype FernFilepath = FernIr.FernFilepath;\ntype FileDownloadResponse = FernIr.FileDownloadResponse;\ntype FileProperty = FernIr.FileProperty;\ntype FilePropertyArray = FernIr.FilePropertyArray;\ntype FilePropertySingle = FernIr.FilePropertySingle;\ntype Filesystem = FernIr.Filesystem;\ntype FileUploadBodyProperty = FernIr.FileUploadBodyProperty;\ntype FileUploadRequest = FernIr.FileUploadRequest;\ntype FileUploadRequestProperty = FernIr.FileUploadRequestProperty;\ntype FloatType = FernIr.FloatType;\ntype GrpcTransport = FernIr.GrpcTransport;\nconst generatorExec = FernIr.generatorExec;\ntype HeaderAuthScheme = FernIr.HeaderAuthScheme;\ntype HeaderAuthValues = FernIr.HeaderAuthValues;\ntype HttpEndpoint = FernIr.HttpEndpoint;\ntype HttpEndpointSource = FernIr.HttpEndpointSource;\ntype HttpHeader = FernIr.HttpHeader;\ntype HttpPath = FernIr.HttpPath;\ntype HttpPathPart = FernIr.HttpPathPart;\ntype HttpRequestBody = FernIr.HttpRequestBody;\ntype HttpRequestBodyReference = FernIr.HttpRequestBodyReference;\ntype HttpResponse = FernIr.HttpResponse;\ntype HttpResponseBody = FernIr.HttpResponseBody;\ntype HttpService = FernIr.HttpService;\ntype InferredAuthenticatedRequestHeader = FernIr.InferredAuthenticatedRequestHeader;\ntype InferredAuthScheme = FernIr.InferredAuthScheme;\ntype InferredAuthSchemeTokenEndpoint = FernIr.InferredAuthSchemeTokenEndpoint;\ntype InlinedRequestBody = FernIr.InlinedRequestBody;\ntype InlinedRequestBodyProperty = FernIr.InlinedRequestBodyProperty;\ntype InlinedWebhookPayload = FernIr.InlinedWebhookPayload;\ntype InlinedWebhookPayloadProperty = FernIr.InlinedWebhookPayloadProperty;\ntype InlinedWebSocketMessageBody = FernIr.InlinedWebSocketMessageBody;\ntype InlinedWebSocketMessageBodyProperty = FernIr.InlinedWebSocketMessageBodyProperty;\ntype IntegerType = FernIr.IntegerType;\ntype IntegerValidationRules = FernIr.IntegerValidationRules;\ntype IntermediateRepresentation = FernIr.IntermediateRepresentation;\ntype JsonEncoding = FernIr.JsonEncoding;\ntype JsonResponse = FernIr.JsonResponse;\ntype JsonResponseBody = FernIr.JsonResponseBody;\ntype JsonResponseBodyWithProperty = FernIr.JsonResponseBodyWithProperty;\ntype JsonStreamChunk = FernIr.JsonStreamChunk;\ntype Literal = FernIr.Literal;\ntype LongType = FernIr.LongType;\ntype MapType = FernIr.MapType;\ntype Name = FernIr.Name;\ntype NameAndWireValue = FernIr.NameAndWireValue;\ntype NamedType = FernIr.NamedType;\ntype NamedTypeDefault = FernIr.NamedTypeDefault;\ntype NonStreamHttpResponseBody = FernIr.NonStreamHttpResponseBody;\ntype OAuthAccessTokenRequestProperties = FernIr.OAuthAccessTokenRequestProperties;\ntype OAuthAccessTokenResponseProperties = FernIr.OAuthAccessTokenResponseProperties;\ntype OAuthClientCredentials = FernIr.OAuthClientCredentials;\ntype OAuthConfiguration = FernIr.OAuthConfiguration;\ntype OAuthRefreshEndpoint = FernIr.OAuthRefreshEndpoint;\ntype OAuthRefreshTokenRequestProperties = FernIr.OAuthRefreshTokenRequestProperties;\ntype OAuthScheme = FernIr.OAuthScheme;\ntype OAuthTokenEndpoint = FernIr.OAuthTokenEndpoint;\ntype OAuthValues = FernIr.OAuthValues;\ntype ObjectProperty = FernIr.ObjectProperty;\ntype ObjectTypeDeclaration = FernIr.ObjectTypeDeclaration;\ntype OffsetPagination = FernIr.OffsetPagination;\ntype Package = FernIr.Package;\ntype Pagination = FernIr.Pagination;\ntype PathParameter = FernIr.PathParameter;\ntype PrimitiveTypeV2 = FernIr.PrimitiveTypeV2;\ntype PropertyPathItem = FernIr.PropertyPathItem;\ntype ProtobufFile = FernIr.ProtobufFile;\ntype ProtobufFileOptions = FernIr.ProtobufFileOptions;\ntype ProtobufService = FernIr.ProtobufService;\ntype ProtobufType = FernIr.ProtobufType;\ntype ProtoEncoding = FernIr.ProtoEncoding;\ntype ProtoSource = FernIr.ProtoSource;\ntype ProtoSourceInfo = FernIr.ProtoSourceInfo;\ntype PublishingConfig = FernIr.PublishingConfig;\ntype PublishTarget = FernIr.PublishTarget;\ntype QueryParameter = FernIr.QueryParameter;\ntype ReadmeConfig = FernIr.ReadmeConfig;\ntype ReadmeCustomSection = FernIr.ReadmeCustomSection;\ntype RequestProperty = FernIr.RequestProperty;\ntype RequestPropertyValue = FernIr.RequestPropertyValue;\ntype ResolvedNamedType = FernIr.ResolvedNamedType;\ntype ResolvedTypeReference = FernIr.ResolvedTypeReference;\ntype ResponseError = FernIr.ResponseError;\ntype ResponseProperty = FernIr.ResponseProperty;\ntype SafeAndUnsafeString = FernIr.SafeAndUnsafeString;\ntype SdkConfig = FernIr.SdkConfig;\ntype SdkRequest = FernIr.SdkRequest;\ntype SdkRequestBodyType = FernIr.SdkRequestBodyType;\ntype SdkRequestShape = FernIr.SdkRequestShape;\ntype SdkRequestWrapper = FernIr.SdkRequestWrapper;\ntype ServiceTypeReferenceInfo = FernIr.ServiceTypeReferenceInfo;\ntype SingleUnionType = FernIr.SingleUnionType;\ntype SingleUnionTypeProperty = FernIr.SingleUnionTypeProperty;\ntype Source = FernIr.Source;\ntype SourceConfig = FernIr.SourceConfig;\ntype SseStreamChunk = FernIr.SseStreamChunk;\ntype StreamingResponse = FernIr.StreamingResponse;\ntype StreamParameterResponse = FernIr.StreamParameterResponse;\ntype StringType = FernIr.StringType;\ntype StringValidationRules = FernIr.StringValidationRules;\ntype Subpackage = FernIr.Subpackage;\ntype TextResponse = FernIr.TextResponse;\ntype TextStreamChunk = FernIr.TextStreamChunk;\ntype Transport = FernIr.Transport;\ntype Type = FernIr.Type;\ntype TypeDeclaration = FernIr.TypeDeclaration;\ntype TypeReference = FernIr.TypeReference;\ntype Uint64Type = FernIr.Uint64Type;\ntype UintType = FernIr.UintType;\ntype UndiscriminatedUnionMember = FernIr.UndiscriminatedUnionMember;\ntype UndiscriminatedUnionTypeDeclaration = FernIr.UndiscriminatedUnionTypeDeclaration;\ntype UnionTypeDeclaration = FernIr.UnionTypeDeclaration;\ntype UserAgent = FernIr.UserAgent;\ntype UserDefinedProtobufType = FernIr.UserDefinedProtobufType;\ntype UserSpecifiedEndpointExample = FernIr.UserSpecifiedEndpointExample;\ntype UuidType = FernIr.UuidType;\ntype V2AuthValues = FernIr.V2AuthValues;\ntype V2EndpointLocation = FernIr.V2EndpointLocation;\ntype V2HttpEndpointCodeSample = FernIr.V2HttpEndpointCodeSample;\ntype V2HttpEndpointExample = FernIr.V2HttpEndpointExample;\ntype V2HttpEndpointExamples = FernIr.V2HttpEndpointExamples;\ntype V2HttpEndpointRequest = FernIr.V2HttpEndpointRequest;\ntype V2HttpEndpointResponse = FernIr.V2HttpEndpointResponse;\ntype V2HttpEndpointResponseBody = FernIr.V2HttpEndpointResponseBody;\ntype V2HttpRequestBodies = FernIr.V2HttpRequestBodies;\ntype V2HttpResponses = FernIr.V2HttpResponses;\ntype V2SchemaExamples = FernIr.V2SchemaExamples;\ntype V2WebhookExample = FernIr.V2WebhookExample;\ntype V2WebhookExamples = FernIr.V2WebhookExamples;\ntype V2WebSocketEndpointLocation = FernIr.V2WebSocketEndpointLocation;\ntype V2WebSocketMessageExample = FernIr.V2WebSocketMessageExample;\ntype V2WebSocketSessionExample = FernIr.V2WebSocketSessionExample;\ntype V2WebSocketSessionExamples = FernIr.V2WebSocketSessionExamples;\ntype VariableDeclaration = FernIr.VariableDeclaration;\ntype Webhook = FernIr.Webhook;\ntype WebhookPayload = FernIr.WebhookPayload;\ntype WebhookPayloadReference = FernIr.WebhookPayloadReference;\ntype WebSocketChannel = FernIr.WebSocketChannel;\ntype WebSocketMessage = FernIr.WebSocketMessage;\ntype WebSocketMessageBody = FernIr.WebSocketMessageBody;\ntype WebSocketMessageBodyReference = FernIr.WebSocketMessageBodyReference;\ntype WellKnownProtobufType = FernIr.WellKnownProtobufType;\ntype WithContentType = FernIr.WithContentType;\ntype WithDocs = FernIr.WithDocs;\ntype WithDocsAndAvailability = FernIr.WithDocsAndAvailability;\ntype WithJsonExample = FernIr.WithJsonExample;\ntype WithV2Examples = FernIr.WithV2Examples;\n\nconst isObject = (value: unknown): value is object =>\n    value != null && typeof value === \"object\" && !Array.isArray(value);\n\nexport const is = {\n    // Base types with proper validation\n    SafeAndUnsafeString: (value: unknown): value is SafeAndUnsafeString =>\n        isObject(value) &&\n        \"safeName\" in value &&\n        \"unsafeName\" in value &&\n        typeof value.safeName === \"string\" &&\n        typeof value.unsafeName === \"string\",\n    Name: (value: unknown): value is Name =>\n        isObject(value) &&\n        \"originalName\" in value &&\n        \"pascalCase\" in value &&\n        \"camelCase\" in value &&\n        \"snakeCase\" in value &&\n        \"screamingSnakeCase\" in value &&\n        typeof value.originalName === \"string\" &&\n        is.SafeAndUnsafeString(value.pascalCase) &&\n        is.SafeAndUnsafeString(value.camelCase) &&\n        is.SafeAndUnsafeString(value.snakeCase) &&\n        is.SafeAndUnsafeString(value.screamingSnakeCase),\n    NameAndWireValue: (value: unknown): value is NameAndWireValue =>\n        isObject(value) &&\n        \"wireValue\" in value &&\n        \"name\" in value &&\n        typeof value.wireValue === \"string\" &&\n        is.Name(value.name),\n    // Type Declarations\n    TypeDeclaration: (value: unknown): value is TypeDeclaration =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"shape\" in value &&\n        \"autogeneratedExamples\" in value &&\n        \"userProvidedExamples\" in value &&\n        \"referencedTypes\" in value &&\n        \"inline\" in value &&\n        \"availability\" in value &&\n        Array.isArray(value.autogeneratedExamples) &&\n        Array.isArray(value.userProvidedExamples) &&\n        \"docs\" in value,\n    ObjectTypeDeclaration: (value: unknown): value is ObjectTypeDeclaration =>\n        isObject(value) &&\n        \"extends\" in value &&\n        \"properties\" in value &&\n        \"extraProperties\" in value &&\n        Array.isArray(value.extends) &&\n        Array.isArray(value.properties) &&\n        typeof value.extraProperties === \"boolean\",\n    EnumTypeDeclaration: (value: unknown): value is EnumTypeDeclaration =>\n        isObject(value) && \"values\" in value && Array.isArray(value.values),\n\n    UnionTypeDeclaration: (value: unknown): value is UnionTypeDeclaration =>\n        isObject(value) &&\n        \"discriminant\" in value &&\n        \"extends\" in value &&\n        \"types\" in value &&\n        \"baseProperties\" in value &&\n        is.NameAndWireValue(value.discriminant) &&\n        Array.isArray(value.extends) &&\n        Array.isArray(value.types) &&\n        Array.isArray(value.baseProperties),\n    AliasTypeDeclaration: (value: unknown): value is AliasTypeDeclaration =>\n        isObject(value) && \"aliasOf\" in value && \"resolvedType\" in value,\n\n    ObjectProperty: (value: unknown): value is ObjectProperty =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"valueType\" in value &&\n        \"availability\" in value &&\n        is.NameAndWireValue(value.name) &&\n        \"docs\" in value,\n    // HTTP Types\n    HttpEndpoint: (value: unknown): value is HttpEndpoint =>\n        isObject(value) &&\n        \"id\" in value &&\n        \"name\" in value &&\n        \"method\" in value &&\n        \"headers\" in value &&\n        \"path\" in value &&\n        \"fullPath\" in value &&\n        \"pathParameters\" in value &&\n        \"allPathParameters\" in value &&\n        \"queryParameters\" in value &&\n        \"errors\" in value &&\n        \"auth\" in value &&\n        \"idempotent\" in value &&\n        \"userSpecifiedExamples\" in value &&\n        \"autogeneratedExamples\" in value &&\n        \"availability\" in value &&\n        typeof value.id === \"string\" &&\n        typeof value.method === \"string\" &&\n        Array.isArray(value.headers) &&\n        Array.isArray(value.pathParameters) &&\n        Array.isArray(value.allPathParameters) &&\n        Array.isArray(value.queryParameters) &&\n        typeof value.auth === \"boolean\" &&\n        typeof value.idempotent === \"boolean\" &&\n        Array.isArray(value.userSpecifiedExamples) &&\n        Array.isArray(value.autogeneratedExamples) &&\n        \"docs\" in value,\n    HttpService: (value: unknown): value is HttpService =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"basePath\" in value &&\n        \"endpoints\" in value &&\n        \"headers\" in value &&\n        \"pathParameters\" in value &&\n        is.HttpPath(value.basePath) &&\n        Array.isArray(value.endpoints) &&\n        Array.isArray(value.headers) &&\n        Array.isArray(value.pathParameters),\n    HttpHeader: (value: unknown): value is HttpHeader =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"valueType\" in value &&\n        \"availability\" in value &&\n        is.NameAndWireValue(value.name) &&\n        \"docs\" in value,\n    HttpResponse: (value: unknown): value is HttpResponse => isObject(value),\n\n    HttpPath: (value: unknown): value is HttpPath =>\n        isObject(value) &&\n        \"head\" in value &&\n        \"parts\" in value &&\n        typeof value.head === \"string\" &&\n        Array.isArray(value.parts),\n    HttpPathPart: (value: unknown): value is HttpPathPart =>\n        isObject(value) &&\n        \"pathParameter\" in value &&\n        \"tail\" in value &&\n        typeof value.pathParameter === \"string\" &&\n        typeof value.tail === \"string\",\n    PathParameter: (value: unknown): value is PathParameter =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"valueType\" in value &&\n        \"location\" in value &&\n        is.Name(value.name) &&\n        typeof value.location === \"string\" &&\n        \"docs\" in value,\n    QueryParameter: (value: unknown): value is QueryParameter =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"valueType\" in value &&\n        \"allowMultiple\" in value &&\n        \"availability\" in value &&\n        is.NameAndWireValue(value.name) &&\n        typeof value.allowMultiple === \"boolean\" &&\n        \"docs\" in value,\n    InlinedRequestBody: (value: unknown): value is InlinedRequestBody =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"extends\" in value &&\n        \"properties\" in value &&\n        \"extraProperties\" in value &&\n        is.Name(value.name) &&\n        Array.isArray(value.extends) &&\n        Array.isArray(value.properties) &&\n        typeof value.extraProperties === \"boolean\" &&\n        \"docs\" in value,\n    InlinedRequestBodyProperty: (value: unknown): value is InlinedRequestBodyProperty =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"valueType\" in value &&\n        \"availability\" in value &&\n        is.NameAndWireValue(value.name) &&\n        \"docs\" in value,\n    SdkRequest: (value: unknown): value is SdkRequest =>\n        isObject(value) && \"requestParameterName\" in value && is.Name(value.requestParameterName) && \"shape\" in value,\n\n    // WebSocket Types\n    WebSocketChannel: (value: unknown): value is WebSocketChannel =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"path\" in value &&\n        \"auth\" in value &&\n        \"headers\" in value &&\n        \"queryParameters\" in value &&\n        \"pathParameters\" in value &&\n        \"messages\" in value &&\n        \"examples\" in value &&\n        \"availability\" in value &&\n        is.HttpPath(value.path) &&\n        typeof value.auth === \"boolean\" &&\n        Array.isArray(value.headers) &&\n        Array.isArray(value.queryParameters) &&\n        Array.isArray(value.pathParameters) &&\n        Array.isArray(value.messages) &&\n        Array.isArray(value.examples) &&\n        \"docs\" in value,\n    WebSocketMessage: (value: unknown): value is WebSocketMessage =>\n        isObject(value) &&\n        \"type\" in value &&\n        \"origin\" in value &&\n        \"body\" in value &&\n        \"availability\" in value &&\n        typeof value.type === \"string\" &&\n        typeof value.origin === \"string\" &&\n        \"docs\" in value,\n    // Example Types (Original)\n    ExampleType: (value: unknown): value is ExampleType =>\n        isObject(value) && \"shape\" in value && \"jsonExample\" in value && \"docs\" in value,\n\n    ExampleObjectType: (value: unknown): value is ExampleObjectType =>\n        isObject(value) && \"properties\" in value && Array.isArray(value.properties),\n\n    ExampleObjectProperty: (value: unknown): value is ExampleObjectProperty =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"value\" in value &&\n        is.NameAndWireValue(value.name) &&\n        is.ExampleTypeReference(value.value),\n    ExampleEndpointCall: (value: unknown): value is ExampleEndpointCall =>\n        isObject(value) &&\n        \"url\" in value &&\n        \"rootPathParameters\" in value &&\n        \"servicePathParameters\" in value &&\n        \"endpointPathParameters\" in value &&\n        \"serviceHeaders\" in value &&\n        \"endpointHeaders\" in value &&\n        \"queryParameters\" in value &&\n        \"response\" in value &&\n        typeof value.url === \"string\" &&\n        Array.isArray(value.rootPathParameters) &&\n        Array.isArray(value.servicePathParameters) &&\n        Array.isArray(value.endpointPathParameters) &&\n        Array.isArray(value.serviceHeaders) &&\n        Array.isArray(value.endpointHeaders) &&\n        Array.isArray(value.queryParameters) &&\n        \"docs\" in value,\n    ExampleHeader: (value: unknown): value is ExampleHeader =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"value\" in value &&\n        is.NameAndWireValue(value.name) &&\n        is.ExampleTypeReference(value.value),\n    ExamplePathParameter: (value: unknown): value is ExamplePathParameter =>\n        isObject(value) && \"name\" in value && is.Name(value.name) && \"value\" in value,\n\n    ExampleQueryParameter: (value: unknown): value is ExampleQueryParameter =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"value\" in value &&\n        is.NameAndWireValue(value.name) &&\n        is.ExampleTypeReference(value.value),\n    ExampleTypeReference: (value: unknown): value is ExampleTypeReference =>\n        isObject(value) && \"shape\" in value && \"jsonExample\" in value,\n\n    ExampleNamedType: (value: unknown): value is ExampleNamedType =>\n        isObject(value) && \"typeName\" in value && \"shape\" in value,\n\n    // Common/Base Types\n    WithDocs: (value: unknown): value is WithDocs => isObject(value) && \"docs\" in value,\n\n    WithDocsAndAvailability: (value: unknown): value is WithDocsAndAvailability =>\n        isObject(value) && \"docs\" in value && \"availability\" in value,\n\n    Declaration: (value: unknown): value is Declaration =>\n        isObject(value) && \"docs\" in value && \"availability\" in value,\n\n    Availability: (value: unknown): value is Availability =>\n        isObject(value) && \"status\" in value && typeof value.status === \"string\",\n\n    FernFilepath: (value: unknown): value is FernFilepath =>\n        isObject(value) &&\n        \"allParts\" in value &&\n        \"packagePath\" in value &&\n        Array.isArray(value.allParts) &&\n        Array.isArray(value.packagePath),\n    // Error Types\n    ErrorDeclaration: (value: unknown): value is ErrorDeclaration =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"discriminantValue\" in value &&\n        \"statusCode\" in value &&\n        \"examples\" in value &&\n        is.NameAndWireValue(value.discriminantValue) &&\n        typeof value.statusCode === \"number\" &&\n        Array.isArray(value.examples) &&\n        \"docs\" in value,\n    // Auth Types (Original)\n    BearerAuthScheme: (value: unknown): value is BearerAuthScheme =>\n        isObject(value) && \"token\" in value && is.Name(value.token) && \"docs\" in value && \"availability\" in value,\n\n    BasicAuthScheme: (value: unknown): value is BasicAuthScheme =>\n        isObject(value) &&\n        \"username\" in value &&\n        \"password\" in value &&\n        \"docs\" in value &&\n        is.Name(value.username) &&\n        is.Name(value.password) &&\n        \"availability\" in value,\n    HeaderAuthScheme: (value: unknown): value is HeaderAuthScheme =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"valueType\" in value &&\n        \"docs\" in value &&\n        is.NameAndWireValue(value.name) &&\n        \"availability\" in value,\n    OAuthScheme: (value: unknown): value is OAuthScheme =>\n        isObject(value) && \"configuration\" in value && \"docs\" in value && \"availability\" in value,\n\n    // Webhook Types\n    Webhook: (value: unknown): value is Webhook =>\n        isObject(value) &&\n        \"id\" in value &&\n        \"name\" in value &&\n        \"method\" in value &&\n        \"headers\" in value &&\n        \"payload\" in value &&\n        \"availability\" in value &&\n        typeof value.id === \"string\" &&\n        typeof value.method === \"string\" &&\n        Array.isArray(value.headers) &&\n        \"docs\" in value,\n    InlinedWebhookPayload: (value: unknown): value is InlinedWebhookPayload =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"extends\" in value &&\n        \"properties\" in value &&\n        is.Name(value.name) &&\n        Array.isArray(value.extends) &&\n        Array.isArray(value.properties),\n    // Variable Types\n    VariableDeclaration: (value: unknown): value is VariableDeclaration =>\n        isObject(value) &&\n        \"id\" in value &&\n        \"name\" in value &&\n        \"type\" in value &&\n        typeof value.id === \"string\" &&\n        is.Name(value.name) &&\n        \"docs\" in value,\n    // Additional IR Configuration Types\n    ApiAuth: (value: unknown): value is ApiAuth =>\n        isObject(value) &&\n        \"requirement\" in value &&\n        \"schemes\" in value &&\n        typeof value.requirement === \"string\" &&\n        Array.isArray(value.schemes) &&\n        \"docs\" in value,\n    ReadmeConfig: (value: unknown): value is ReadmeConfig => isObject(value),\n\n    ReadmeCustomSection: (value: unknown): value is ReadmeCustomSection =>\n        isObject(value) &&\n        \"title\" in value &&\n        \"language\" in value &&\n        \"content\" in value &&\n        typeof value.title === \"string\" &&\n        typeof value.language === \"string\" &&\n        typeof value.content === \"string\",\n    SourceConfig: (value: unknown): value is SourceConfig =>\n        isObject(value) && \"sources\" in value && Array.isArray(value.sources),\n\n    ServiceTypeReferenceInfo: (value: unknown): value is ServiceTypeReferenceInfo =>\n        isObject(value) &&\n        \"typesReferencedOnlyByService\" in value &&\n        \"sharedTypes\" in value &&\n        isObject(value.typesReferencedOnlyByService) &&\n        Array.isArray(value.sharedTypes),\n    UserAgent: (value: unknown): value is UserAgent =>\n        isObject(value) &&\n        \"header\" in value &&\n        \"value\" in value &&\n        typeof value.header === \"string\" &&\n        typeof value.value === \"string\",\n    // Primitive Type Declarations\n    StringType: (value: unknown): value is StringType => isObject(value),\n    IntegerType: (value: unknown): value is IntegerType => isObject(value),\n    LongType: (value: unknown): value is LongType => isObject(value),\n    DoubleType: (value: unknown): value is DoubleType => isObject(value),\n    FloatType: (value: unknown): value is FloatType => isObject(value),\n    BooleanType: (value: unknown): value is BooleanType => isObject(value),\n    DateTimeType: (value: unknown): value is DateTimeType => isObject(value),\n    DateType: (value: unknown): value is DateType => isObject(value),\n    UuidType: (value: unknown): value is UuidType => isObject(value),\n    Base64Type: (value: unknown): value is Base64Type => isObject(value),\n    BigIntegerType: (value: unknown): value is BigIntegerType => isObject(value),\n    UintType: (value: unknown): value is UintType => isObject(value),\n    Uint64Type: (value: unknown): value is Uint64Type => isObject(value),\n\n    MapType: (value: unknown): value is MapType => isObject(value) && \"keyType\" in value && \"valueType\" in value,\n\n    // Validation Rules\n    StringValidationRules: (value: unknown): value is StringValidationRules => isObject(value),\n    IntegerValidationRules: (value: unknown): value is IntegerValidationRules => isObject(value),\n    DoubleValidationRules: (value: unknown): value is DoubleValidationRules => isObject(value),\n\n    // Response Body Types\n    JsonResponseBody: (value: unknown): value is JsonResponseBody =>\n        isObject(value) && \"responseBodyType\" in value && \"docs\" in value,\n\n    JsonResponseBodyWithProperty: (value: unknown): value is JsonResponseBodyWithProperty =>\n        isObject(value) && \"responseBodyType\" in value && \"docs\" in value,\n\n    TextResponse: (value: unknown): value is TextResponse => isObject(value) && \"docs\" in value,\n\n    BytesResponse: (value: unknown): value is BytesResponse => isObject(value) && \"docs\" in value,\n\n    // Streaming Types\n    JsonStreamChunk: (value: unknown): value is JsonStreamChunk =>\n        isObject(value) && \"payload\" in value && \"docs\" in value,\n\n    SseStreamChunk: (value: unknown): value is SseStreamChunk =>\n        isObject(value) && \"payload\" in value && \"docs\" in value,\n\n    TextStreamChunk: (value: unknown): value is TextStreamChunk => isObject(value) && \"docs\" in value,\n\n    StreamParameterResponse: (value: unknown): value is StreamParameterResponse =>\n        isObject(value) && \"nonStreamResponse\" in value && \"streamResponse\" in value,\n\n    // Pagination Types\n    CursorPagination: (value: unknown): value is CursorPagination =>\n        isObject(value) &&\n        \"page\" in value &&\n        \"next\" in value &&\n        \"results\" in value &&\n        is.RequestProperty(value.page) &&\n        is.ResponseProperty(value.next) &&\n        is.ResponseProperty(value.results),\n    OffsetPagination: (value: unknown): value is OffsetPagination =>\n        isObject(value) &&\n        \"page\" in value &&\n        \"results\" in value &&\n        is.RequestProperty(value.page) &&\n        is.ResponseProperty(value.results),\n    CustomPagination: (value: unknown): value is CustomPagination =>\n        isObject(value) && \"results\" in value && is.ResponseProperty(value.results),\n\n    RequestProperty: (value: unknown): value is RequestProperty => isObject(value) && \"property\" in value,\n\n    ResponseProperty: (value: unknown): value is ResponseProperty => isObject(value) && \"property\" in value,\n\n    // OAuth Types\n    OAuthAccessTokenRequestProperties: (value: unknown): value is OAuthAccessTokenRequestProperties =>\n        isObject(value) &&\n        \"clientId\" in value &&\n        \"clientSecret\" in value &&\n        is.RequestProperty(value.clientId) &&\n        is.RequestProperty(value.clientSecret),\n    OAuthClientCredentials: (value: unknown): value is OAuthClientCredentials =>\n        isObject(value) && \"tokenEndpoint\" in value && is.OAuthTokenEndpoint(value.tokenEndpoint),\n\n    // Additional Auth Types\n    BaseAuthScheme: (value: unknown): value is BaseAuthScheme =>\n        isObject(value) && \"key\" in value && typeof value.key === \"string\" && \"docs\" in value,\n\n    InferredAuthScheme: (value: unknown): value is InferredAuthScheme =>\n        isObject(value) &&\n        \"tokenEndpoint\" in value &&\n        \"docs\" in value &&\n        is.InferredAuthSchemeTokenEndpoint(value.tokenEndpoint) &&\n        \"availability\" in value,\n    // Additional Common Types\n    PropertyPathItem: (value: unknown): value is PropertyPathItem =>\n        isObject(value) && \"name\" in value && is.Name(value.name) && \"type\" in value,\n\n    WithJsonExample: (value: unknown): value is WithJsonExample => isObject(value) && \"jsonExample\" in value,\n\n    WithContentType: (value: unknown): value is WithContentType => isObject(value) && \"contentType\" in value,\n\n    WithV2Examples: (value: unknown): value is WithV2Examples => isObject(value) && \"v2Examples\" in value,\n\n    EscapedString: (value: unknown): value is EscapedString =>\n        isObject(value) && \"original\" in value && typeof value.original === \"string\",\n\n    // Additional Type-Related Interfaces\n    EnumValue: (value: unknown): value is EnumValue =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"availability\" in value &&\n        is.NameAndWireValue(value.name) &&\n        \"docs\" in value,\n    SingleUnionType: (value: unknown): value is SingleUnionType =>\n        isObject(value) &&\n        \"discriminantValue\" in value &&\n        \"shape\" in value &&\n        is.NameAndWireValue(value.discriminantValue) &&\n        \"docs\" in value,\n    SingleUnionTypeProperty: (value: unknown): value is SingleUnionTypeProperty =>\n        isObject(value) && \"name\" in value && is.NameAndWireValue(value.name) && \"type\" in value,\n\n    UndiscriminatedUnionTypeDeclaration: (value: unknown): value is UndiscriminatedUnionTypeDeclaration =>\n        isObject(value) && \"members\" in value && Array.isArray(value.members),\n\n    UndiscriminatedUnionMember: (value: unknown): value is UndiscriminatedUnionMember =>\n        isObject(value) && \"type\" in value && \"docs\" in value,\n\n    // Declared Names\n    DeclaredTypeName: (value: unknown): value is DeclaredTypeName =>\n        isObject(value) &&\n        \"typeId\" in value &&\n        \"fernFilepath\" in value &&\n        \"name\" in value &&\n        typeof value.typeId === \"string\" &&\n        is.FernFilepath(value.fernFilepath) &&\n        is.Name(value.name),\n    DeclaredServiceName: (value: unknown): value is DeclaredServiceName =>\n        isObject(value) && \"fernFilepath\" in value && is.FernFilepath(value.fernFilepath),\n\n    DeclaredErrorName: (value: unknown): value is DeclaredErrorName =>\n        isObject(value) &&\n        \"errorId\" in value &&\n        \"fernFilepath\" in value &&\n        \"name\" in value &&\n        typeof value.errorId === \"string\" &&\n        is.FernFilepath(value.fernFilepath) &&\n        is.Name(value.name),\n    // File Upload/Download\n    FileUploadRequest: (value: unknown): value is FileUploadRequest =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"properties\" in value &&\n        is.Name(value.name) &&\n        Array.isArray(value.properties) &&\n        \"docs\" in value,\n    FileDownloadResponse: (value: unknown): value is FileDownloadResponse => isObject(value) && \"docs\" in value,\n\n    SdkRequestWrapper: (value: unknown): value is SdkRequestWrapper =>\n        isObject(value) &&\n        \"wrapperName\" in value &&\n        \"bodyKey\" in value &&\n        is.Name(value.wrapperName) &&\n        is.Name(value.bodyKey),\n    BytesRequest: (value: unknown): value is BytesRequest =>\n        isObject(value) && \"isOptional\" in value && typeof value.isOptional === \"boolean\" && \"docs\" in value,\n\n    NamedType: (value: unknown): value is NamedType =>\n        isObject(value) &&\n        \"typeId\" in value &&\n        \"fernFilepath\" in value &&\n        \"name\" in value &&\n        typeof value.typeId === \"string\" &&\n        is.FernFilepath(value.fernFilepath) &&\n        is.Name(value.name),\n    ResolvedNamedType: (value: unknown): value is ResolvedNamedType =>\n        isObject(value) && \"name\" in value && \"shape\" in value,\n\n    FileUploadBodyProperty: (value: unknown): value is FileUploadBodyProperty =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"valueType\" in value &&\n        \"availability\" in value &&\n        is.NameAndWireValue(value.name) &&\n        \"docs\" in value,\n    // IR Types\n    IntermediateRepresentation: (value: unknown): value is IntermediateRepresentation =>\n        isObject(value) &&\n        \"apiName\" in value &&\n        \"auth\" in value &&\n        \"types\" in value &&\n        \"headers\" in value &&\n        \"idempotencyHeaders\" in value &&\n        \"services\" in value &&\n        \"webhookGroups\" in value &&\n        \"errors\" in value &&\n        \"subpackages\" in value &&\n        \"rootPackage\" in value &&\n        \"constants\" in value &&\n        \"pathParameters\" in value &&\n        \"errorDiscriminationStrategy\" in value &&\n        \"sdkConfig\" in value &&\n        \"variables\" in value &&\n        \"serviceTypeReferenceInfo\" in value &&\n        is.Name(value.apiName) &&\n        isObject(value.types) &&\n        Array.isArray(value.headers) &&\n        Array.isArray(value.idempotencyHeaders) &&\n        isObject(value.services) &&\n        isObject(value.webhookGroups) &&\n        isObject(value.errors) &&\n        isObject(value.subpackages) &&\n        is.Package(value.rootPackage) &&\n        is.Constants(value.constants) &&\n        Array.isArray(value.pathParameters) &&\n        is.SdkConfig(value.sdkConfig) &&\n        Array.isArray(value.variables) &&\n        is.ServiceTypeReferenceInfo(value.serviceTypeReferenceInfo),\n    Package: (value: unknown): value is Package =>\n        isObject(value) &&\n        \"fernFilepath\" in value &&\n        \"types\" in value &&\n        \"errors\" in value &&\n        \"subpackages\" in value &&\n        \"hasEndpointsInTree\" in value &&\n        is.FernFilepath(value.fernFilepath) &&\n        Array.isArray(value.types) &&\n        Array.isArray(value.errors) &&\n        Array.isArray(value.subpackages) &&\n        typeof value.hasEndpointsInTree === \"boolean\" &&\n        \"docs\" in value,\n    Subpackage: (value: unknown): value is Subpackage =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"fernFilepath\" in value &&\n        \"types\" in value &&\n        \"errors\" in value &&\n        \"subpackages\" in value &&\n        \"hasEndpointsInTree\" in value &&\n        is.Name(value.name) &&\n        is.FernFilepath(value.fernFilepath) &&\n        Array.isArray(value.types) &&\n        Array.isArray(value.errors) &&\n        Array.isArray(value.subpackages) &&\n        typeof value.hasEndpointsInTree === \"boolean\" &&\n        \"docs\" in value,\n    Constants: (value: unknown): value is Constants =>\n        isObject(value) && \"errorInstanceIdKey\" in value && is.NameAndWireValue(value.errorInstanceIdKey),\n\n    SdkConfig: (value: unknown): value is SdkConfig =>\n        isObject(value) &&\n        \"isAuthMandatory\" in value &&\n        \"hasStreamingEndpoints\" in value &&\n        \"hasPaginatedEndpoints\" in value &&\n        \"hasFileDownloadEndpoints\" in value &&\n        typeof value.isAuthMandatory === \"boolean\" &&\n        typeof value.hasStreamingEndpoints === \"boolean\" &&\n        typeof value.hasPaginatedEndpoints === \"boolean\" &&\n        typeof value.hasFileDownloadEndpoints === \"boolean\" &&\n        \"platformHeaders\" in value,\n    // Generator Config Types\n    GeneratorConfig: (value: unknown): value is FernIr.generatorExec.GeneratorConfig =>\n        isObject(value) &&\n        \"dryRun\" in value &&\n        \"irFilepath\" in value &&\n        \"output\" in value &&\n        \"workspaceName\" in value &&\n        \"organization\" in value &&\n        \"customConfig\" in value &&\n        \"environment\" in value &&\n        \"whitelabel\" in value &&\n        \"writeUnitTests\" in value &&\n        \"generateOauthClients\" in value &&\n        typeof value.dryRun === \"boolean\" &&\n        typeof value.irFilepath === \"string\" &&\n        typeof value.workspaceName === \"string\" &&\n        typeof value.organization === \"string\" &&\n        typeof value.whitelabel === \"boolean\" &&\n        typeof value.writeUnitTests === \"boolean\" &&\n        typeof value.generateOauthClients === \"boolean\",\n    // ===== NEW ADDITIONS FROM 6 CATEGORIES =====\n\n    // Example-Related Types (36 interfaces)\n    AutogeneratedEndpointExample: (value: unknown): value is AutogeneratedEndpointExample =>\n        isObject(value) && \"example\" in value && is.ExampleEndpointCall(value.example),\n\n    UserSpecifiedEndpointExample: (value: unknown): value is UserSpecifiedEndpointExample => isObject(value),\n\n    ExampleAliasType: (value: unknown): value is ExampleAliasType =>\n        isObject(value) && \"value\" in value && is.ExampleTypeReference(value.value),\n\n    ExampleEnumType: (value: unknown): value is ExampleEnumType =>\n        isObject(value) && \"value\" in value && is.NameAndWireValue(value.value),\n\n    ExampleUnionType: (value: unknown): value is ExampleUnionType =>\n        isObject(value) &&\n        \"discriminant\" in value &&\n        is.NameAndWireValue(value.discriminant) &&\n        \"singleUnionType\" in value,\n    ExampleSingleUnionType: (value: unknown): value is ExampleSingleUnionType => isObject(value) && \"shape\" in value,\n\n    ExampleUndiscriminatedUnionType: (value: unknown): value is ExampleUndiscriminatedUnionType =>\n        isObject(value) && \"singleUnionType\" in value,\n\n    ExampleObjectTypeWithTypeId: (value: unknown): value is ExampleObjectTypeWithTypeId =>\n        isObject(value) &&\n        \"typeId\" in value &&\n        \"object\" in value &&\n        typeof value.typeId === \"string\" &&\n        is.ExampleObjectType(value.object),\n    ExampleListContainer: (value: unknown): value is ExampleListContainer =>\n        isObject(value) && \"list\" in value && Array.isArray(value.list),\n\n    ExampleSetContainer: (value: unknown): value is ExampleSetContainer =>\n        isObject(value) && \"set\" in value && Array.isArray(value.set),\n\n    ExampleMapContainer: (value: unknown): value is ExampleMapContainer =>\n        isObject(value) && \"map\" in value && Array.isArray(value.map),\n\n    ExampleOptionalContainer: (value: unknown): value is ExampleOptionalContainer =>\n        isObject(value) && \"optional\" in value,\n\n    ExampleNullableContainer: (value: unknown): value is ExampleNullableContainer =>\n        isObject(value) && \"nullable\" in value,\n\n    ExampleLiteralContainer: (value: unknown): value is ExampleLiteralContainer =>\n        isObject(value) && \"literal\" in value,\n\n    ExampleKeyValuePair: (value: unknown): value is ExampleKeyValuePair =>\n        isObject(value) &&\n        \"key\" in value &&\n        \"value\" in value &&\n        is.ExampleTypeReference(value.key) &&\n        is.ExampleTypeReference(value.value),\n    ExampleError: (value: unknown): value is ExampleError => isObject(value) && \"name\" in value && \"body\" in value,\n\n    ExampleEndpointErrorResponse: (value: unknown): value is ExampleEndpointErrorResponse =>\n        isObject(value) && \"error\" in value,\n\n    ExampleDatetime: (value: unknown): value is ExampleDatetime =>\n        isObject(value) && \"datetime\" in value && typeof value.datetime === \"string\",\n\n    ExampleInlinedRequestBody: (value: unknown): value is ExampleInlinedRequestBody =>\n        isObject(value) && \"properties\" in value && Array.isArray(value.properties),\n\n    ExampleInlinedRequestBodyProperty: (value: unknown): value is ExampleInlinedRequestBodyProperty =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"value\" in value &&\n        is.NameAndWireValue(value.name) &&\n        is.ExampleTypeReference(value.value),\n    ExampleWebhookCall: (value: unknown): value is ExampleWebhookCall => isObject(value) && \"payload\" in value,\n\n    ExampleWebSocketMessage: (value: unknown): value is ExampleWebSocketMessage =>\n        isObject(value) && \"type\" in value && typeof value.type === \"string\" && \"body\" in value,\n\n    ExampleWebSocketSession: (value: unknown): value is ExampleWebSocketSession =>\n        isObject(value) && \"messages\" in value && Array.isArray(value.messages),\n\n    ExampleServerSideEvent: (value: unknown): value is ExampleServerSideEvent =>\n        isObject(value) && \"event\" in value && typeof value.event === \"string\" && \"data\" in value,\n\n    ExampleCodeSampleLanguage: (value: unknown): value is ExampleCodeSampleLanguage =>\n        isObject(value) &&\n        \"language\" in value &&\n        \"code\" in value &&\n        typeof value.language === \"string\" &&\n        typeof value.code === \"string\",\n    ExampleCodeSampleSdk: (value: unknown): value is ExampleCodeSampleSdk =>\n        isObject(value) &&\n        \"sdk\" in value &&\n        \"code\" in value &&\n        typeof value.sdk === \"string\" &&\n        typeof value.code === \"string\",\n    V2HttpEndpointExample: (value: unknown): value is V2HttpEndpointExample =>\n        isObject(value) && \"id\" in value && typeof value.id === \"string\",\n\n    V2HttpEndpointExamples: (value: unknown): value is V2HttpEndpointExamples =>\n        isObject(value) && \"examples\" in value && Array.isArray(value.examples),\n\n    V2HttpEndpointRequest: (value: unknown): value is V2HttpEndpointRequest => isObject(value),\n\n    V2HttpEndpointResponse: (value: unknown): value is V2HttpEndpointResponse => isObject(value),\n\n    V2HttpEndpointCodeSample: (value: unknown): value is V2HttpEndpointCodeSample =>\n        isObject(value) &&\n        \"language\" in value &&\n        \"code\" in value &&\n        typeof value.language === \"string\" &&\n        typeof value.code === \"string\",\n    V2SchemaExamples: (value: unknown): value is V2SchemaExamples => isObject(value),\n\n    V2WebSocketMessageExample: (value: unknown): value is V2WebSocketMessageExample =>\n        isObject(value) && \"type\" in value && typeof value.type === \"string\",\n\n    V2WebSocketSessionExample: (value: unknown): value is V2WebSocketSessionExample =>\n        isObject(value) && \"messages\" in value && Array.isArray(value.messages),\n\n    V2WebSocketSessionExamples: (value: unknown): value is V2WebSocketSessionExamples =>\n        isObject(value) && \"examples\" in value && Array.isArray(value.examples),\n\n    V2WebhookExample: (value: unknown): value is V2WebhookExample => isObject(value) && \"payload\" in value,\n\n    V2WebhookExamples: (value: unknown): value is V2WebhookExamples =>\n        isObject(value) && \"examples\" in value && Array.isArray(value.examples),\n\n    // Auth-Related Types (9 interfaces)\n    BasicAuthValues: (value: unknown): value is BasicAuthValues =>\n        isObject(value) &&\n        \"username\" in value &&\n        \"password\" in value &&\n        typeof value.username === \"string\" &&\n        typeof value.password === \"string\",\n    BearerAuthValues: (value: unknown): value is BearerAuthValues =>\n        isObject(value) && \"token\" in value && typeof value.token === \"string\",\n\n    HeaderAuthValues: (value: unknown): value is HeaderAuthValues =>\n        isObject(value) && \"header\" in value && typeof value.header === \"string\",\n\n    OAuthValues: (value: unknown): value is OAuthValues =>\n        isObject(value) && \"accessToken\" in value && typeof value.accessToken === \"string\",\n\n    InferredAuthSchemeTokenEndpoint: (value: unknown): value is InferredAuthSchemeTokenEndpoint =>\n        isObject(value) &&\n        \"endpoint\" in value &&\n        \"authenticatedRequestHeaders\" in value &&\n        is.EndpointReference(value.endpoint) &&\n        Array.isArray(value.authenticatedRequestHeaders),\n    InferredAuthenticatedRequestHeader: (value: unknown): value is InferredAuthenticatedRequestHeader =>\n        isObject(value) && \"header\" in value,\n\n    OAuthAccessTokenResponseProperties: (value: unknown): value is OAuthAccessTokenResponseProperties =>\n        isObject(value) && \"accessToken\" in value && is.ResponseProperty(value.accessToken),\n\n    OAuthRefreshEndpoint: (value: unknown): value is OAuthRefreshEndpoint =>\n        isObject(value) && \"endpointReference\" in value && is.EndpointReference(value.endpointReference),\n\n    OAuthRefreshTokenRequestProperties: (value: unknown): value is OAuthRefreshTokenRequestProperties =>\n        isObject(value) && \"refreshToken\" in value && is.RequestProperty(value.refreshToken),\n\n    OAuthTokenEndpoint: (value: unknown): value is OAuthTokenEndpoint =>\n        isObject(value) &&\n        \"endpointReference\" in value &&\n        \"requestProperties\" in value &&\n        \"responseProperties\" in value &&\n        is.EndpointReference(value.endpointReference) &&\n        is.OAuthAccessTokenRequestProperties(value.requestProperties) &&\n        is.OAuthAccessTokenResponseProperties(value.responseProperties),\n    // Encoding/Streaming Types (4 interfaces)\n    Encoding: (value: unknown): value is Encoding => isObject(value),\n    JsonEncoding: (value: unknown): value is JsonEncoding => isObject(value),\n    ProtoEncoding: (value: unknown): value is ProtoEncoding => isObject(value),\n\n    // File/WebSocket/Webhook Types (9 interfaces)\n    FilePropertyArray: (value: unknown): value is FilePropertyArray =>\n        isObject(value) && \"key\" in value && is.NameAndWireValue(value.key),\n\n    FilePropertySingle: (value: unknown): value is FilePropertySingle =>\n        isObject(value) && \"key\" in value && is.NameAndWireValue(value.key),\n\n    Filesystem: (value: unknown): value is Filesystem =>\n        isObject(value) && \"name\" in value && typeof value.name === \"string\",\n\n    InlinedWebSocketMessageBody: (value: unknown): value is InlinedWebSocketMessageBody =>\n        isObject(value) && \"properties\" in value && Array.isArray(value.properties),\n\n    InlinedWebSocketMessageBodyProperty: (value: unknown): value is InlinedWebSocketMessageBodyProperty =>\n        isObject(value) && \"name\" in value && is.NameAndWireValue(value.name) && \"valueType\" in value,\n\n    InlinedWebhookPayloadProperty: (value: unknown): value is InlinedWebhookPayloadProperty =>\n        isObject(value) && \"name\" in value && is.NameAndWireValue(value.name) && \"valueType\" in value,\n\n    WebSocketMessageBodyReference: (value: unknown): value is WebSocketMessageBodyReference =>\n        isObject(value) && \"bodyType\" in value,\n\n    WebhookPayloadReference: (value: unknown): value is WebhookPayloadReference =>\n        isObject(value) && \"payloadType\" in value,\n\n    // HTTP/Request/Response Types (7 interfaces)\n    HttpRequestBodyReference: (value: unknown): value is HttpRequestBodyReference =>\n        isObject(value) && \"requestBodyType\" in value,\n\n    ResponseError: (value: unknown): value is ResponseError => isObject(value) && \"error\" in value,\n\n    V2EndpointLocation: (value: unknown): value is V2EndpointLocation =>\n        isObject(value) &&\n        \"method\" in value &&\n        \"path\" in value &&\n        typeof value.method === \"string\" &&\n        typeof value.path === \"string\",\n    V2WebSocketEndpointLocation: (value: unknown): value is V2WebSocketEndpointLocation =>\n        isObject(value) && \"path\" in value && typeof value.path === \"string\",\n\n    V2HttpRequestBodies: (value: unknown): value is V2HttpRequestBodies => isObject(value),\n\n    V2HttpResponses: (value: unknown): value is V2HttpResponses => isObject(value),\n\n    EndpointReference: (value: unknown): value is EndpointReference =>\n        isObject(value) &&\n        \"endpointId\" in value &&\n        \"serviceId\" in value &&\n        typeof value.endpointId === \"string\" &&\n        typeof value.serviceId === \"string\",\n    EnumTypeReference: (value: unknown): value is EnumTypeReference =>\n        isObject(value) && \"enumTypeId\" in value && typeof value.enumTypeId === \"string\",\n\n    // Protobuf/GRPC Types (9 interfaces)\n    CsharpProtobufFileOptions: (value: unknown): value is CsharpProtobufFileOptions =>\n        isObject(value) && \"namespace\" in value && typeof value.namespace === \"string\",\n\n    GrpcTransport: (value: unknown): value is GrpcTransport =>\n        isObject(value) && \"service\" in value && is.ProtobufService(value.service),\n\n    ProtoSource: (value: unknown): value is ProtoSource =>\n        isObject(value) && \"file\" in value && is.ProtobufFile(value.file),\n\n    ProtoSourceInfo: (value: unknown): value is ProtoSourceInfo => isObject(value),\n\n    ProtobufFile: (value: unknown): value is ProtobufFile =>\n        isObject(value) && \"filepath\" in value && typeof value.filepath === \"string\",\n\n    ProtobufFileOptions: (value: unknown): value is ProtobufFileOptions => isObject(value),\n\n    ProtobufService: (value: unknown): value is ProtobufService =>\n        isObject(value) &&\n        \"name\" in value &&\n        \"file\" in value &&\n        typeof value.name === \"string\" &&\n        is.ProtobufFile(value.file),\n    UserDefinedProtobufType: (value: unknown): value is UserDefinedProtobufType =>\n        isObject(value) &&\n        \"typeName\" in value &&\n        \"file\" in value &&\n        typeof value.typeName === \"string\" &&\n        is.ProtobufFile(value.file),\n    // Discriminated Union Variants\n\n    // AuthScheme\n    AuthScheme: {\n        Bearer: (value: unknown): value is FernIr.AuthScheme.Bearer =>\n            is.BearerAuthScheme(value) && \"type\" in value && value.type === \"bearer\",\n        Basic: (value: unknown): value is FernIr.AuthScheme.Basic =>\n            is.BasicAuthScheme(value) && \"type\" in value && value.type === \"basic\",\n        Header: (value: unknown): value is FernIr.AuthScheme.Header =>\n            is.HeaderAuthScheme(value) && \"type\" in value && value.type === \"header\",\n        Oauth: (value: unknown): value is FernIr.AuthScheme.Oauth =>\n            is.OAuthScheme(value) && \"type\" in value && value.type === \"oauth\",\n        Inferred: (value: unknown): value is FernIr.AuthScheme.Inferred =>\n            is.InferredAuthScheme(value) && \"type\" in value && value.type === \"inferred\"\n    },\n\n    // OAuthConfiguration\n    OAuthConfiguration: {\n        ClientCredentials: (value: unknown): value is FernIr.OAuthConfiguration.ClientCredentials =>\n            is.OAuthClientCredentials(value) && \"type\" in value && value.type === \"clientCredentials\"\n    },\n\n    // Environments\n    Environments: {\n        SingleBaseUrl: (value: unknown): value is FernIr.Environments.SingleBaseUrl =>\n            isObject(value) && \"type\" in value && value.type === \"singleBaseUrl\",\n        MultipleBaseUrls: (value: unknown): value is FernIr.Environments.MultipleBaseUrls =>\n            isObject(value) && \"type\" in value && value.type === \"multipleBaseUrls\"\n    },\n\n    // ErrorDeclarationDiscriminantValue\n    ErrorDeclarationDiscriminantValue: {\n        Property: (value: unknown): value is FernIr.ErrorDeclarationDiscriminantValue.Property =>\n            is.NameAndWireValue(value) && \"type\" in value && value.type === \"property\",\n        StatusCode: (value: unknown): value is FernIr.ErrorDeclarationDiscriminantValue.StatusCode =>\n            isObject(value) && \"type\" in value && value.type === \"statusCode\"\n    },\n\n    // V2AuthValues\n    V2AuthValues: {\n        Basic: (value: unknown): value is FernIr.V2AuthValues.Basic =>\n            is.BasicAuthValues(value) && \"type\" in value && value.type === \"basic\",\n        Bearer: (value: unknown): value is FernIr.V2AuthValues.Bearer =>\n            is.BearerAuthValues(value) && \"type\" in value && value.type === \"bearer\",\n        Header: (value: unknown): value is FernIr.V2AuthValues.Header =>\n            is.HeaderAuthValues(value) && \"type\" in value && value.type === \"header\",\n        Oauth: (value: unknown): value is FernIr.V2AuthValues.Oauth =>\n            is.OAuthValues(value) && \"type\" in value && value.type === \"oauth\"\n    },\n\n    // V2HttpEndpointResponseBody\n    V2HttpEndpointResponseBody: {\n        Error_: (value: unknown): value is FernIr.V2HttpEndpointResponseBody.Error_ =>\n            isObject(value) && \"type\" in value && value.type === \"error\",\n        Json: (value: unknown): value is FernIr.V2HttpEndpointResponseBody.Json =>\n            isObject(value) && \"type\" in value && value.type === \"json\",\n        Stream: (value: unknown): value is FernIr.V2HttpEndpointResponseBody.Stream =>\n            isObject(value) && \"type\" in value && value.type === \"stream\"\n    },\n\n    // ExampleCodeSample\n    ExampleCodeSample: {\n        Language: (value: unknown): value is FernIr.ExampleCodeSample.Language =>\n            is.ExampleCodeSampleLanguage(value) && \"type\" in value && value.type === \"language\",\n        Sdk: (value: unknown): value is FernIr.ExampleCodeSample.Sdk =>\n            is.ExampleCodeSampleSdk(value) && \"type\" in value && value.type === \"sdk\"\n    },\n\n    // ExampleEndpointSuccessResponse\n    ExampleEndpointSuccessResponse: {\n        Body: (value: unknown): value is FernIr.ExampleEndpointSuccessResponse.Body =>\n            isObject(value) && \"type\" in value && value.type === \"body\",\n        Stream: (value: unknown): value is FernIr.ExampleEndpointSuccessResponse.Stream =>\n            isObject(value) && \"type\" in value && value.type === \"stream\",\n        Sse: (value: unknown): value is FernIr.ExampleEndpointSuccessResponse.Sse =>\n            isObject(value) && \"type\" in value && value.type === \"sse\"\n    },\n\n    // ExampleQueryParameterShape\n    ExampleQueryParameterShape: {\n        Single: (value: unknown): value is FernIr.ExampleQueryParameterShape.Single =>\n            isObject(value) && \"type\" in value && value.type === \"single\",\n        Exploded: (value: unknown): value is FernIr.ExampleQueryParameterShape.Exploded =>\n            isObject(value) && \"type\" in value && value.type === \"exploded\",\n        CommaSeparated: (value: unknown): value is FernIr.ExampleQueryParameterShape.CommaSeparated =>\n            isObject(value) && \"type\" in value && value.type === \"commaSeparated\"\n    },\n\n    // ExampleRequestBody\n    ExampleRequestBody: {\n        InlinedRequestBody: (value: unknown): value is FernIr.ExampleRequestBody.InlinedRequestBody =>\n            is.ExampleInlinedRequestBody(value) && \"type\" in value && value.type === \"inlinedRequestBody\",\n        Reference: (value: unknown): value is FernIr.ExampleRequestBody.Reference =>\n            is.ExampleTypeReference(value) && \"type\" in value && value.type === \"reference\"\n    },\n\n    // ExampleResponse\n    ExampleResponse: {\n        Ok: (value: unknown): value is FernIr.ExampleResponse.Ok =>\n            isObject(value) && \"type\" in value && value.type === \"ok\",\n        Error_: (value: unknown): value is FernIr.ExampleResponse.Error_ =>\n            is.ExampleEndpointErrorResponse(value) && \"type\" in value && value.type === \"error\"\n    },\n\n    // FileProperty\n    FileProperty: {\n        File_: (value: unknown): value is FernIr.FileProperty.File_ =>\n            is.FilePropertySingle(value) && \"type\" in value && value.type === \"file\",\n        FileArray: (value: unknown): value is FernIr.FileProperty.FileArray =>\n            is.FilePropertyArray(value) && \"type\" in value && value.type === \"fileArray\"\n    },\n\n    // FileUploadRequestProperty\n    FileUploadRequestProperty: {\n        File_: (value: unknown): value is FernIr.FileUploadRequestProperty.File_ =>\n            isObject(value) && \"type\" in value && value.type === \"file\",\n        BodyProperty: (value: unknown): value is FernIr.FileUploadRequestProperty.BodyProperty =>\n            is.FileUploadBodyProperty(value) && \"type\" in value && value.type === \"bodyProperty\"\n    },\n\n    // HttpEndpointSource\n    HttpEndpointSource: {\n        Proto: (value: unknown): value is FernIr.HttpEndpointSource.Proto =>\n            is.ProtoSourceInfo(value) && \"type\" in value && value.type === \"proto\",\n        Openapi: (value: unknown): value is FernIr.HttpEndpointSource.Openapi =>\n            isObject(value) && \"type\" in value && value.type === \"openapi\",\n        Openrpc: (value: unknown): value is FernIr.HttpEndpointSource.Openrpc =>\n            isObject(value) && \"type\" in value && value.type === \"openrpc\"\n    },\n\n    // HttpRequestBody\n    HttpRequestBody: {\n        InlinedRequestBody: (value: unknown): value is FernIr.HttpRequestBody.InlinedRequestBody =>\n            is.InlinedRequestBody(value) && \"type\" in value && value.type === \"inlinedRequestBody\",\n        Reference: (value: unknown): value is FernIr.HttpRequestBody.Reference =>\n            is.HttpRequestBodyReference(value) && \"type\" in value && value.type === \"reference\",\n        FileUpload: (value: unknown): value is FernIr.HttpRequestBody.FileUpload =>\n            is.FileUploadRequest(value) && \"type\" in value && value.type === \"fileUpload\",\n        Bytes: (value: unknown): value is FernIr.HttpRequestBody.Bytes =>\n            is.BytesRequest(value) && \"type\" in value && value.type === \"bytes\"\n    },\n\n    // HttpResponseBody\n    HttpResponseBody: {\n        Json: (value: unknown): value is FernIr.HttpResponseBody.Json =>\n            isObject(value) && \"type\" in value && value.type === \"json\",\n        FileDownload: (value: unknown): value is FernIr.HttpResponseBody.FileDownload =>\n            is.FileDownloadResponse(value) && \"type\" in value && value.type === \"fileDownload\",\n        Text: (value: unknown): value is FernIr.HttpResponseBody.Text =>\n            is.TextResponse(value) && \"type\" in value && value.type === \"text\",\n        Bytes: (value: unknown): value is FernIr.HttpResponseBody.Bytes =>\n            is.BytesResponse(value) && \"type\" in value && value.type === \"bytes\",\n        Streaming: (value: unknown): value is FernIr.HttpResponseBody.Streaming =>\n            isObject(value) && \"type\" in value && value.type === \"streaming\",\n        StreamParameter: (value: unknown): value is FernIr.HttpResponseBody.StreamParameter =>\n            is.StreamParameterResponse(value) && \"type\" in value && value.type === \"streamParameter\"\n    },\n\n    // JsonResponse\n    JsonResponse: {\n        Response: (value: unknown): value is FernIr.JsonResponse.Response =>\n            is.JsonResponseBody(value) && \"type\" in value && value.type === \"response\",\n        NestedPropertyAsResponse: (value: unknown): value is FernIr.JsonResponse.NestedPropertyAsResponse =>\n            is.JsonResponseBodyWithProperty(value) && \"type\" in value && value.type === \"nestedPropertyAsResponse\"\n    },\n\n    // NonStreamHttpResponseBody\n    NonStreamHttpResponseBody: {\n        Json: (value: unknown): value is FernIr.NonStreamHttpResponseBody.Json =>\n            isObject(value) && \"type\" in value && value.type === \"json\",\n        FileDownload: (value: unknown): value is FernIr.NonStreamHttpResponseBody.FileDownload =>\n            is.FileDownloadResponse(value) && \"type\" in value && value.type === \"fileDownload\",\n        Text: (value: unknown): value is FernIr.NonStreamHttpResponseBody.Text =>\n            is.TextResponse(value) && \"type\" in value && value.type === \"text\",\n        Bytes: (value: unknown): value is FernIr.NonStreamHttpResponseBody.Bytes =>\n            is.BytesResponse(value) && \"type\" in value && value.type === \"bytes\"\n    },\n\n    // Pagination\n    Pagination: {\n        Cursor: (value: unknown): value is FernIr.Pagination.Cursor =>\n            is.CursorPagination(value) && \"type\" in value && value.type === \"cursor\",\n        Offset: (value: unknown): value is FernIr.Pagination.Offset =>\n            is.OffsetPagination(value) && \"type\" in value && value.type === \"offset\",\n        Custom: (value: unknown): value is FernIr.Pagination.Custom =>\n            is.CustomPagination(value) && \"type\" in value && value.type === \"custom\"\n    },\n\n    // RequestPropertyValue\n    RequestPropertyValue: {\n        Query: (value: unknown): value is FernIr.RequestPropertyValue.Query =>\n            is.QueryParameter(value) && \"type\" in value && value.type === \"query\",\n        Body: (value: unknown): value is FernIr.RequestPropertyValue.Body =>\n            is.ObjectProperty(value) && \"type\" in value && value.type === \"body\"\n    },\n\n    // SdkRequestBodyType\n    SdkRequestBodyType: {\n        TypeReference: (value: unknown): value is FernIr.SdkRequestBodyType.TypeReference =>\n            is.HttpRequestBodyReference(value) && \"type\" in value && value.type === \"typeReference\",\n        Bytes: (value: unknown): value is FernIr.SdkRequestBodyType.Bytes =>\n            is.BytesRequest(value) && \"type\" in value && value.type === \"bytes\"\n    },\n\n    // SdkRequestShape\n    SdkRequestShape: {\n        JustRequestBody: (value: unknown): value is FernIr.SdkRequestShape.JustRequestBody =>\n            isObject(value) && \"type\" in value && value.type === \"justRequestBody\",\n        Wrapper: (value: unknown): value is FernIr.SdkRequestShape.Wrapper =>\n            is.SdkRequestWrapper(value) && \"type\" in value && value.type === \"wrapper\"\n    },\n\n    // StreamingResponse\n    StreamingResponse: {\n        Json: (value: unknown): value is FernIr.StreamingResponse.Json =>\n            is.JsonStreamChunk(value) && \"type\" in value && value.type === \"json\",\n        Text: (value: unknown): value is FernIr.StreamingResponse.Text =>\n            is.TextStreamChunk(value) && \"type\" in value && value.type === \"text\",\n        Sse: (value: unknown): value is FernIr.StreamingResponse.Sse =>\n            is.SseStreamChunk(value) && \"type\" in value && value.type === \"sse\"\n    },\n\n    // Transport\n    Transport: {\n        Http: (value: unknown): value is FernIr.Transport.Http =>\n            isObject(value) && \"type\" in value && value.type === \"http\",\n        Grpc: (value: unknown): value is FernIr.Transport.Grpc =>\n            is.GrpcTransport(value) && \"type\" in value && value.type === \"grpc\"\n    },\n\n    // ApiDefinitionSource\n    ApiDefinitionSource: {\n        Proto: (value: unknown): value is FernIr.ApiDefinitionSource.Proto =>\n            is.ProtoSource(value) && \"type\" in value && value.type === \"proto\",\n        Openapi: (value: unknown): value is FernIr.ApiDefinitionSource.Openapi =>\n            isObject(value) && \"type\" in value && value.type === \"openapi\"\n    },\n\n    // ApiVersionScheme\n    ApiVersionScheme: {\n        Header: (value: unknown): value is FernIr.ApiVersionScheme.Header =>\n            isObject(value) && \"type\" in value && value.type === \"header\"\n    },\n\n    // ErrorDiscriminationStrategy\n    ErrorDiscriminationStrategy: {\n        StatusCode: (value: unknown): value is FernIr.ErrorDiscriminationStrategy.StatusCode =>\n            isObject(value) && \"type\" in value && value.type === \"statusCode\",\n        Property: (value: unknown): value is FernIr.ErrorDiscriminationStrategy.Property =>\n            isObject(value) && \"type\" in value && value.type === \"property\"\n    },\n\n    // ProtobufType\n    ProtobufType: {\n        WellKnown: (value: unknown): value is FernIr.ProtobufType.WellKnown =>\n            isObject(value) && \"type\" in value && value.type === \"wellKnown\",\n        UserDefined: (value: unknown): value is FernIr.ProtobufType.UserDefined =>\n            is.UserDefinedProtobufType(value) && \"type\" in value && value.type === \"userDefined\"\n    },\n\n    // WellKnownProtobufType\n    WellKnownProtobufType: {\n        Any: (value: unknown): value is FernIr.WellKnownProtobufType.Any =>\n            isObject(value) && \"type\" in value && value.type === \"any\",\n        Api: (value: unknown): value is FernIr.WellKnownProtobufType.Api =>\n            isObject(value) && \"type\" in value && value.type === \"api\",\n        BoolValue: (value: unknown): value is FernIr.WellKnownProtobufType.BoolValue =>\n            isObject(value) && \"type\" in value && value.type === \"boolValue\",\n        BytesValue: (value: unknown): value is FernIr.WellKnownProtobufType.BytesValue =>\n            isObject(value) && \"type\" in value && value.type === \"bytesValue\",\n        DoubleValue: (value: unknown): value is FernIr.WellKnownProtobufType.DoubleValue =>\n            isObject(value) && \"type\" in value && value.type === \"doubleValue\",\n        Duration: (value: unknown): value is FernIr.WellKnownProtobufType.Duration =>\n            isObject(value) && \"type\" in value && value.type === \"duration\",\n        Empty: (value: unknown): value is FernIr.WellKnownProtobufType.Empty =>\n            isObject(value) && \"type\" in value && value.type === \"empty\",\n        Enum: (value: unknown): value is FernIr.WellKnownProtobufType.Enum =>\n            isObject(value) && \"type\" in value && value.type === \"enum\",\n        EnumValue: (value: unknown): value is FernIr.WellKnownProtobufType.EnumValue =>\n            isObject(value) && \"type\" in value && value.type === \"enumValue\",\n        Field: (value: unknown): value is FernIr.WellKnownProtobufType.Field =>\n            isObject(value) && \"type\" in value && value.type === \"field\",\n        FieldCardinality: (value: unknown): value is FernIr.WellKnownProtobufType.FieldCardinality =>\n            isObject(value) && \"type\" in value && value.type === \"fieldCardinality\",\n        FieldKind: (value: unknown): value is FernIr.WellKnownProtobufType.FieldKind =>\n            isObject(value) && \"type\" in value && value.type === \"fieldKind\",\n        FieldMask: (value: unknown): value is FernIr.WellKnownProtobufType.FieldMask =>\n            isObject(value) && \"type\" in value && value.type === \"fieldMask\",\n        FloatValue: (value: unknown): value is FernIr.WellKnownProtobufType.FloatValue =>\n            isObject(value) && \"type\" in value && value.type === \"floatValue\",\n        Int32Value: (value: unknown): value is FernIr.WellKnownProtobufType.Int32Value =>\n            isObject(value) && \"type\" in value && value.type === \"int32Value\",\n        Int64Value: (value: unknown): value is FernIr.WellKnownProtobufType.Int64Value =>\n            isObject(value) && \"type\" in value && value.type === \"int64Value\",\n        ListValue: (value: unknown): value is FernIr.WellKnownProtobufType.ListValue =>\n            isObject(value) && \"type\" in value && value.type === \"listValue\",\n        Method: (value: unknown): value is FernIr.WellKnownProtobufType.Method =>\n            isObject(value) && \"type\" in value && value.type === \"method\",\n        Mixin: (value: unknown): value is FernIr.WellKnownProtobufType.Mixin =>\n            isObject(value) && \"type\" in value && value.type === \"mixin\",\n        NullValue: (value: unknown): value is FernIr.WellKnownProtobufType.NullValue =>\n            isObject(value) && \"type\" in value && value.type === \"nullValue\",\n        Option: (value: unknown): value is FernIr.WellKnownProtobufType.Option =>\n            isObject(value) && \"type\" in value && value.type === \"option\",\n        SourceContext: (value: unknown): value is FernIr.WellKnownProtobufType.SourceContext =>\n            isObject(value) && \"type\" in value && value.type === \"sourceContext\",\n        StringValue: (value: unknown): value is FernIr.WellKnownProtobufType.StringValue =>\n            isObject(value) && \"type\" in value && value.type === \"stringValue\",\n        Struct: (value: unknown): value is FernIr.WellKnownProtobufType.Struct =>\n            isObject(value) && \"type\" in value && value.type === \"struct\",\n        Syntax: (value: unknown): value is FernIr.WellKnownProtobufType.Syntax =>\n            isObject(value) && \"type\" in value && value.type === \"syntax\",\n        Timestamp: (value: unknown): value is FernIr.WellKnownProtobufType.Timestamp =>\n            isObject(value) && \"type\" in value && value.type === \"timestamp\",\n        Type: (value: unknown): value is FernIr.WellKnownProtobufType.Type =>\n            isObject(value) && \"type\" in value && value.type === \"type\",\n        Uint32Value: (value: unknown): value is FernIr.WellKnownProtobufType.Uint32Value =>\n            isObject(value) && \"type\" in value && value.type === \"uint32Value\",\n        Uint64Value: (value: unknown): value is FernIr.WellKnownProtobufType.Uint64Value =>\n            isObject(value) && \"type\" in value && value.type === \"uint64Value\",\n        Value: (value: unknown): value is FernIr.WellKnownProtobufType.Value =>\n            isObject(value) && \"type\" in value && value.type === \"value\"\n    },\n\n    // PublishTarget\n    PublishTarget: {\n        Postman: (value: unknown): value is FernIr.PublishTarget.Postman =>\n            isObject(value) && \"type\" in value && value.type === \"postman\",\n        Npm: (value: unknown): value is FernIr.PublishTarget.Npm =>\n            isObject(value) && \"type\" in value && value.type === \"npm\",\n        Maven: (value: unknown): value is FernIr.PublishTarget.Maven =>\n            isObject(value) && \"type\" in value && value.type === \"maven\",\n        Pypi: (value: unknown): value is FernIr.PublishTarget.Pypi =>\n            isObject(value) && \"type\" in value && value.type === \"pypi\"\n    },\n\n    // PublishingConfig\n    PublishingConfig: {\n        Github: (value: unknown): value is FernIr.PublishingConfig.Github =>\n            isObject(value) && \"type\" in value && value.type === \"github\",\n        Direct: (value: unknown): value is FernIr.PublishingConfig.Direct =>\n            isObject(value) && \"type\" in value && value.type === \"direct\",\n        Filesystem: (value: unknown): value is FernIr.PublishingConfig.Filesystem =>\n            is.Filesystem(value) && \"type\" in value && value.type === \"filesystem\"\n    },\n\n    // ContainerType\n    ContainerType: {\n        List: (value: unknown): value is FernIr.ContainerType.List =>\n            isObject(value) && \"type\" in value && value.type === \"list\",\n        Map: (value: unknown): value is FernIr.ContainerType.Map =>\n            is.MapType(value) && \"type\" in value && value.type === \"map\",\n        Nullable: (value: unknown): value is FernIr.ContainerType.Nullable =>\n            isObject(value) && \"type\" in value && value.type === \"nullable\",\n        Optional: (value: unknown): value is FernIr.ContainerType.Optional =>\n            isObject(value) && \"type\" in value && value.type === \"optional\",\n        Set: (value: unknown): value is FernIr.ContainerType.Set =>\n            isObject(value) && \"type\" in value && value.type === \"set\",\n        Literal: (value: unknown): value is FernIr.ContainerType.Literal =>\n            isObject(value) && \"type\" in value && value.type === \"literal\"\n    },\n\n    // ExampleContainer\n    ExampleContainer: {\n        List: (value: unknown): value is FernIr.ExampleContainer.List =>\n            is.ExampleListContainer(value) && \"type\" in value && value.type === \"list\",\n        Set: (value: unknown): value is FernIr.ExampleContainer.Set =>\n            is.ExampleSetContainer(value) && \"type\" in value && value.type === \"set\",\n        Optional: (value: unknown): value is FernIr.ExampleContainer.Optional =>\n            is.ExampleOptionalContainer(value) && \"type\" in value && value.type === \"optional\",\n        Nullable: (value: unknown): value is FernIr.ExampleContainer.Nullable =>\n            is.ExampleNullableContainer(value) && \"type\" in value && value.type === \"nullable\",\n        Map: (value: unknown): value is FernIr.ExampleContainer.Map =>\n            is.ExampleMapContainer(value) && \"type\" in value && value.type === \"map\",\n        Literal: (value: unknown): value is FernIr.ExampleContainer.Literal =>\n            is.ExampleLiteralContainer(value) && \"type\" in value && value.type === \"literal\"\n    },\n\n    // ExamplePrimitive\n    ExamplePrimitive: {\n        Integer: (value: unknown): value is FernIr.ExamplePrimitive.Integer =>\n            isObject(value) && \"type\" in value && value.type === \"integer\",\n        Long: (value: unknown): value is FernIr.ExamplePrimitive.Long =>\n            isObject(value) && \"type\" in value && value.type === \"long\",\n        Uint: (value: unknown): value is FernIr.ExamplePrimitive.Uint =>\n            isObject(value) && \"type\" in value && value.type === \"uint\",\n        Uint64: (value: unknown): value is FernIr.ExamplePrimitive.Uint64 =>\n            isObject(value) && \"type\" in value && value.type === \"uint64\",\n        Float: (value: unknown): value is FernIr.ExamplePrimitive.Float =>\n            isObject(value) && \"type\" in value && value.type === \"float\",\n        Double: (value: unknown): value is FernIr.ExamplePrimitive.Double =>\n            isObject(value) && \"type\" in value && value.type === \"double\",\n        Boolean: (value: unknown): value is FernIr.ExamplePrimitive.Boolean =>\n            isObject(value) && \"type\" in value && value.type === \"boolean\",\n        String: (value: unknown): value is FernIr.ExamplePrimitive.String =>\n            isObject(value) && \"type\" in value && value.type === \"string\",\n        Date_: (value: unknown): value is FernIr.ExamplePrimitive.Date_ =>\n            isObject(value) && \"type\" in value && value.type === \"date\",\n        Datetime: (value: unknown): value is FernIr.ExamplePrimitive.Datetime =>\n            is.ExampleDatetime(value) && \"type\" in value && value.type === \"datetime\",\n        Uuid: (value: unknown): value is FernIr.ExamplePrimitive.Uuid =>\n            isObject(value) && \"type\" in value && value.type === \"uuid\",\n        Base64: (value: unknown): value is FernIr.ExamplePrimitive.Base64 =>\n            isObject(value) && \"type\" in value && value.type === \"base64\",\n        BigInteger: (value: unknown): value is FernIr.ExamplePrimitive.BigInteger =>\n            isObject(value) && \"type\" in value && value.type === \"bigInteger\"\n    },\n\n    // FernIr.ExampleSingleUnionTypeProperties\n    ExampleSingleUnionTypeProperties: {\n        SamePropertiesAsObject: (\n            value: unknown\n        ): value is FernIr.ExampleSingleUnionTypeProperties.SamePropertiesAsObject =>\n            is.ExampleObjectTypeWithTypeId(value) && \"type\" in value && value.type === \"samePropertiesAsObject\",\n        SingleProperty: (value: unknown): value is FernIr.ExampleSingleUnionTypeProperties.SingleProperty =>\n            is.ExampleTypeReference(value) && \"type\" in value && value.type === \"singleProperty\",\n        NoProperties: (value: unknown): value is FernIr.ExampleSingleUnionTypeProperties.NoProperties =>\n            isObject(value) && \"type\" in value && value.type === \"noProperties\"\n    },\n\n    // ExampleTypeReferenceShape\n    ExampleTypeReferenceShape: {\n        Primitive: (value: unknown): value is FernIr.ExampleTypeReferenceShape.Primitive =>\n            isObject(value) && \"type\" in value && value.type === \"primitive\",\n        Container: (value: unknown): value is FernIr.ExampleTypeReferenceShape.Container =>\n            isObject(value) && \"type\" in value && value.type === \"container\",\n        Unknown: (value: unknown): value is FernIr.ExampleTypeReferenceShape.Unknown =>\n            isObject(value) && \"type\" in value && value.type === \"unknown\",\n        Named: (value: unknown): value is FernIr.ExampleTypeReferenceShape.Named =>\n            is.ExampleNamedType(value) && \"type\" in value && value.type === \"named\"\n    },\n\n    // ExampleTypeShape\n    ExampleTypeShape: {\n        Alias: (value: unknown): value is FernIr.ExampleTypeShape.Alias =>\n            is.ExampleAliasType(value) && \"type\" in value && value.type === \"alias\",\n        Enum: (value: unknown): value is FernIr.ExampleTypeShape.Enum =>\n            is.ExampleEnumType(value) && \"type\" in value && value.type === \"enum\",\n        Object_: (value: unknown): value is FernIr.ExampleTypeShape.Object_ =>\n            is.ExampleObjectType(value) && \"type\" in value && value.type === \"object\",\n        Union: (value: unknown): value is FernIr.ExampleTypeShape.Union =>\n            is.ExampleUnionType(value) && \"type\" in value && value.type === \"union\",\n        UndiscriminatedUnion: (value: unknown): value is FernIr.ExampleTypeShape.UndiscriminatedUnion =>\n            is.ExampleUndiscriminatedUnionType(value) && \"type\" in value && value.type === \"undiscriminatedUnion\"\n    },\n\n    // Literal\n    Literal: {\n        String: (value: unknown): value is FernIr.Literal.String =>\n            isObject(value) && \"type\" in value && value.type === \"string\",\n        Boolean: (value: unknown): value is FernIr.Literal.Boolean =>\n            isObject(value) && \"type\" in value && value.type === \"boolean\"\n    },\n\n    // NamedTypeDefault\n    NamedTypeDefault: {\n        Enum: (value: unknown): value is FernIr.NamedTypeDefault.Enum =>\n            is.EnumValue(value) && \"type\" in value && value.type === \"enum\"\n    },\n\n    // PrimitiveTypeV2\n    PrimitiveTypeV2: {\n        Integer: (value: unknown): value is FernIr.PrimitiveTypeV2.Integer =>\n            is.IntegerType(value) && \"type\" in value && value.type === \"integer\",\n        Long: (value: unknown): value is FernIr.PrimitiveTypeV2.Long =>\n            is.LongType(value) && \"type\" in value && value.type === \"long\",\n        Uint: (value: unknown): value is FernIr.PrimitiveTypeV2.Uint =>\n            is.UintType(value) && \"type\" in value && value.type === \"uint\",\n        Uint64: (value: unknown): value is FernIr.PrimitiveTypeV2.Uint64 =>\n            is.Uint64Type(value) && \"type\" in value && value.type === \"uint64\",\n        Float: (value: unknown): value is FernIr.PrimitiveTypeV2.Float =>\n            is.FloatType(value) && \"type\" in value && value.type === \"float\",\n        Double: (value: unknown): value is FernIr.PrimitiveTypeV2.Double =>\n            is.DoubleType(value) && \"type\" in value && value.type === \"double\",\n        Boolean: (value: unknown): value is FernIr.PrimitiveTypeV2.Boolean =>\n            is.BooleanType(value) && \"type\" in value && value.type === \"boolean\",\n        String: (value: unknown): value is FernIr.PrimitiveTypeV2.String =>\n            is.StringType(value) && \"type\" in value && value.type === \"string\",\n        Date_: (value: unknown): value is FernIr.PrimitiveTypeV2.Date_ =>\n            is.DateType(value) && \"type\" in value && value.type === \"date\",\n        DateTime: (value: unknown): value is FernIr.PrimitiveTypeV2.DateTime =>\n            is.DateTimeType(value) && \"type\" in value && value.type === \"dateTime\",\n        Uuid: (value: unknown): value is FernIr.PrimitiveTypeV2.Uuid =>\n            is.UuidType(value) && \"type\" in value && value.type === \"uuid\",\n        Base64: (value: unknown): value is FernIr.PrimitiveTypeV2.Base64 =>\n            is.Base64Type(value) && \"type\" in value && value.type === \"base64\",\n        BigInteger: (value: unknown): value is FernIr.PrimitiveTypeV2.BigInteger =>\n            is.BigIntegerType(value) && \"type\" in value && value.type === \"bigInteger\"\n    },\n\n    // ResolvedTypeReference\n    ResolvedTypeReference: {\n        Container: (value: unknown): value is FernIr.ResolvedTypeReference.Container =>\n            isObject(value) && \"type\" in value && value.type === \"container\",\n        Named: (value: unknown): value is FernIr.ResolvedTypeReference.Named =>\n            is.ResolvedNamedType(value) && \"type\" in value && value.type === \"named\",\n        Primitive: (value: unknown): value is FernIr.ResolvedTypeReference.Primitive =>\n            isObject(value) && \"type\" in value && value.type === \"primitive\",\n        Unknown: (value: unknown): value is FernIr.ResolvedTypeReference.Unknown =>\n            isObject(value) && \"type\" in value && value.type === \"unknown\"\n    },\n\n    // Source\n    Source: {\n        Proto: (value: unknown): value is FernIr.Source.Proto =>\n            isObject(value) && \"type\" in value && value.type === \"proto\"\n    },\n\n    // Type\n    Type: {\n        Alias: (value: unknown): value is FernIr.Type.Alias =>\n            is.AliasTypeDeclaration(value) && \"type\" in value && value.type === \"alias\",\n        Enum: (value: unknown): value is FernIr.Type.Enum =>\n            is.EnumTypeDeclaration(value) && \"type\" in value && value.type === \"enum\",\n        Object_: (value: unknown): value is FernIr.Type.Object_ =>\n            is.ObjectTypeDeclaration(value) && \"type\" in value && value.type === \"object\",\n        Union: (value: unknown): value is FernIr.Type.Union =>\n            is.UnionTypeDeclaration(value) && \"type\" in value && value.type === \"union\",\n        UndiscriminatedUnion: (value: unknown): value is FernIr.Type.UndiscriminatedUnion =>\n            is.UndiscriminatedUnionTypeDeclaration(value) && \"type\" in value && value.type === \"undiscriminatedUnion\"\n    },\n\n    // TypeReference\n    TypeReference: {\n        Container: (value: unknown): value is FernIr.TypeReference.Container =>\n            isObject(value) && \"type\" in value && value.type === \"container\",\n        Named: (value: unknown): value is FernIr.TypeReference.Named =>\n            is.NamedType(value) && \"type\" in value && value.type === \"named\",\n        Primitive: (value: unknown): value is FernIr.TypeReference.Primitive =>\n            isObject(value) && \"type\" in value && value.type === \"primitive\",\n        Unknown: (value: unknown): value is FernIr.TypeReference.Unknown =>\n            isObject(value) && \"type\" in value && value.type === \"unknown\"\n    },\n\n    // WebhookPayload\n    WebhookPayload: {\n        InlinedPayload: (value: unknown): value is FernIr.WebhookPayload.InlinedPayload =>\n            is.InlinedWebhookPayload(value) && \"type\" in value && value.type === \"inlinedPayload\",\n        Reference: (value: unknown): value is FernIr.WebhookPayload.Reference =>\n            is.WebhookPayloadReference(value) && \"type\" in value && value.type === \"reference\"\n    },\n\n    // ExampleWebSocketMessageBody\n    ExampleWebSocketMessageBody: {\n        InlinedBody: (value: unknown): value is FernIr.ExampleWebSocketMessageBody.InlinedBody =>\n            is.ExampleInlinedRequestBody(value) && \"type\" in value && value.type === \"inlinedBody\",\n        Reference: (value: unknown): value is FernIr.ExampleWebSocketMessageBody.Reference =>\n            is.ExampleTypeReference(value) && \"type\" in value && value.type === \"reference\"\n    },\n\n    // WebSocketMessageBody\n    WebSocketMessageBody: {\n        InlinedBody: (value: unknown): value is FernIr.WebSocketMessageBody.InlinedBody =>\n            is.InlinedWebSocketMessageBody(value) && \"type\" in value && value.type === \"inlinedBody\",\n        Reference: (value: unknown): value is FernIr.WebSocketMessageBody.Reference =>\n            is.WebSocketMessageBodyReference(value) && \"type\" in value && value.type === \"reference\"\n    }\n};\n","import { CodeBlock as CommonCodeBlock } from \"@fern-api/browser-compatible-base-generator\";\nimport { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { type Writer } from \"../core/Writer.js\";\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg = CommonCodeBlock.Arg<Writer>;\n}\n\nexport class CodeBlock extends AstNode {\n    private arg: CodeBlock.Arg;\n\n    public constructor(arg: CodeBlock.Arg, generation: Generation) {\n        super(generation);\n        this.arg = arg;\n    }\n\n    public write(writer: Writer): void {\n        const commonCodeBlock = new CommonCodeBlock(this.arg);\n        return commonCodeBlock.write(writer);\n    }\n}\n","import {\n    AbstractAstNode,\n    Arguments,\n    hasNamedArgument,\n    isNamedArgument\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { type ClassReference } from \"../types/ClassReference.js\";\n\nexport declare namespace ClassInstantiation {\n    interface Args {\n        classReference: ClassReference;\n        // A map of the field for the class and the value to be assigned to it.\n        arguments_: Arguments | ClassInstantiation[];\n        /**\n         * Lets you use constructor (rather than object initializer syntax) even if you pass in named arguments\n         * @deprecated Use properties instead\n         * @see properties\n         */\n        forceUseConstructor?: boolean;\n        properties?: Property[];\n        // Write the instantiation across multiple lines\n        multiline?: boolean;\n    }\n    interface Property {\n        name: AbstractAstNode | string;\n        value: AbstractAstNode | string;\n    }\n}\n\nexport class ClassInstantiation extends AstNode {\n    public readonly classReference: ClassReference;\n    public readonly arguments_: Arguments | ClassInstantiation[];\n    private readonly forceUseConstructor: boolean;\n    private readonly properties: ClassInstantiation.Property[];\n    public readonly multiline: boolean;\n\n    /* eslint-disable deprecation/deprecation */\n    constructor(\n        { classReference, arguments_, forceUseConstructor, properties, multiline }: ClassInstantiation.Args,\n        generation: Generation\n    ) {\n        super(generation);\n        this.classReference = classReference;\n        this.arguments_ = arguments_;\n        this.forceUseConstructor = forceUseConstructor ?? false;\n        this.properties = properties ?? [];\n        this.multiline = multiline ?? false;\n    }\n\n    public write(writer: Writer): void {\n        if (this.classReference.namespaceAlias != null) {\n            writer.write(`new ${this.classReference.namespaceAlias}.${this.classReference.name}`);\n        } else {\n            writer.write(\"new \");\n            writer.writeNode(this.classReference);\n        }\n\n        const hasNamedArguments = hasNamedArgument(this.arguments_);\n        if (hasNamedArguments && !this.forceUseConstructor) {\n            writer.write(\" {\");\n        } else {\n            writer.write(\"(\");\n        }\n\n        if (this.arguments_.length === 0) {\n            this.writeEnd({ writer, hasNamedArguments });\n            return;\n        }\n\n        if (this.multiline) {\n            writer.newLine();\n        }\n\n        writer.indent();\n        this.arguments_.forEach((argument, idx) => {\n            if (isNamedArgument(argument)) {\n                writer.write(`${argument.name}`);\n                if (this.forceUseConstructor) {\n                    writer.write(\": \");\n                } else {\n                    writer.write(\" = \");\n                }\n                writer.write(argument.assignment);\n            } else {\n                argument.write(writer);\n            }\n            if (idx < this.arguments_.length - 1) {\n                writer.write(\",\");\n                if (!this.multiline) {\n                    writer.write(\" \");\n                }\n            }\n            if (this.multiline) {\n                writer.newLine();\n            }\n        });\n        writer.dedent();\n\n        this.writeEnd({ writer, hasNamedArguments });\n    }\n\n    private writeEnd({ writer, hasNamedArguments }: { writer: Writer; hasNamedArguments: boolean }): void {\n        if (hasNamedArguments && !this.forceUseConstructor) {\n            writer.write(\"}\");\n        } else {\n            writer.write(\")\");\n        }\n        if (this.properties.length > 0) {\n            writer.write(\"{\");\n            if (this.multiline) {\n                writer.newLine();\n                writer.indent();\n            } else {\n                writer.write(\" \");\n            }\n            this.properties.forEach((property, idx) => {\n                writer.write(property.name, \" = \", property.value);\n                if (idx < this.properties.length - 1) {\n                    writer.write(\",\");\n                    if (this.multiline) {\n                        writer.newLine();\n                    } else {\n                        writer.write(\" \");\n                    }\n                }\n            });\n            if (this.multiline) {\n                writer.dedent();\n                writer.newLine();\n            }\n            writer.write(\"}\");\n        }\n    }\n}\n","import { UnnamedArgument } from \"@fern-api/browser-compatible-base-generator\";\nimport { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { Type } from \"../types/IType.js\";\n\nexport declare namespace Dictionary {\n    interface Args {\n        keyType: Type;\n        valueType: Type;\n        values: Values | undefined;\n    }\n\n    interface MapEntry {\n        key: AstNode;\n        value: AstNode;\n    }\n\n    type Values = MapEntryValues | UnnamedArgumentValues;\n\n    interface MapEntryValues {\n        type: \"entries\";\n        entries: MapEntry[];\n    }\n\n    interface UnnamedArgumentValues {\n        type: \"argument\";\n        argument: UnnamedArgument;\n    }\n}\n\nexport class Dictionary extends AstNode {\n    private keyType: Type;\n    private valueType: Type;\n    private values: Dictionary.Values | undefined;\n\n    constructor({ keyType, valueType, values }: Dictionary.Args, generation: Generation) {\n        super(generation);\n        this.keyType = keyType;\n        this.valueType = valueType;\n        this.values = values;\n    }\n\n    public write(writer: Writer): void {\n        if (this.values == null) {\n            writer.write(this.System.Collections.Generic.Dictionary(this.keyType, this.valueType).new());\n            return;\n        }\n        if (this.values.type === \"argument\") {\n            writer.write(\n                this.System.Collections.Generic.Dictionary(this.keyType, this.valueType).new({\n                    arguments_: [this.values.argument]\n                })\n            );\n            return;\n        }\n        writer.write(this.System.Collections.Generic.Dictionary(this.keyType, this.valueType).new());\n        writer.pushScope();\n        for (const { key, value } of this.values.entries) {\n            writer.writeLine(\"{ \", key, \", \", value, \" },\");\n        }\n        writer.popScope();\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { type ClassReference } from \"../types/ClassReference.js\";\n\nexport declare namespace EnumInstantiation {\n    interface Args {\n        reference: ClassReference;\n        value: string;\n    }\n}\n\nexport class EnumInstantiation extends AstNode {\n    private reference: ClassReference;\n    private value: string;\n\n    constructor({ reference, value }: EnumInstantiation.Args, generation: Generation) {\n        super(generation);\n        this.reference = reference;\n        this.value = value;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.reference);\n        writer.write(`.${this.value}`);\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\n\ntype InternalPrimitiveInstantiation =\n    | IntegerInstantiation\n    | LongInstantiation\n    | UintInstantiation\n    | UlongInstantiation\n    | StringInstantiation\n    | BooleanInstantiation\n    | FloatInstanation\n    | DoubleInstantiation\n    | DateInstantiation\n    | DateTimeInstantiation\n    | GuidInstantiation\n    | NullInstantiation;\n\ninterface IntegerInstantiation {\n    type: \"integer\";\n    value: number;\n}\n\ninterface LongInstantiation {\n    type: \"long\";\n    value: number;\n}\n\ninterface UintInstantiation {\n    type: \"uint\";\n    value: number;\n}\n\ninterface UlongInstantiation {\n    type: \"ulong\";\n    value: number;\n}\n\ninterface StringInstantiation {\n    type: \"string\";\n    value: string;\n}\n\ninterface BooleanInstantiation {\n    type: \"boolean\";\n    value: boolean;\n}\n\ninterface FloatInstanation {\n    type: \"float\";\n    value: number;\n}\n\ninterface DoubleInstantiation {\n    type: \"double\";\n    value: number;\n}\n\ninterface DateInstantiation {\n    type: \"date\";\n    value: string;\n}\n\ninterface DateTimeInstantiation {\n    type: \"dateTime\";\n    value: Date;\n    parse: boolean;\n}\n\ninterface GuidInstantiation {\n    type: \"uuid\";\n    value: string;\n}\n\ninterface NullInstantiation {\n    type: \"null\";\n}\n\nexport class PrimitiveInstantiation extends AstNode {\n    public constructor(\n        public readonly internalType: InternalPrimitiveInstantiation,\n        generation: Generation\n    ) {\n        super(generation);\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalType.type) {\n            case \"integer\":\n                writer.write(this.internalType.value.toString());\n                break;\n            case \"long\":\n                writer.write(`${this.internalType.value.toString()}`);\n                break;\n            case \"uint\":\n                writer.write(`${this.internalType.value.toString()}`);\n                break;\n            case \"ulong\":\n                writer.write(`${this.internalType.value.toString()}`);\n                break;\n            case \"string\":\n                writer.writeNode(this.csharp.string_({ string: this.internalType.value }));\n                break;\n            case \"boolean\":\n                writer.write(this.internalType.value.toString());\n                break;\n            case \"float\":\n                writer.write(`${this.internalType.value.toString()}f`);\n                break;\n            case \"double\":\n                writer.write(`${this.internalType.value.toString()}`);\n                break;\n            case \"date\": {\n                const date = new Date(this.internalType.value);\n                const year = this.csharp.Literal.integer(date.getUTCFullYear());\n                const month = this.csharp.Literal.integer(date.getUTCMonth() + 1);\n                const day = this.csharp.Literal.integer(date.getUTCDate());\n                writer.write(this.System.DateOnly.new({ arguments_: [year, month, day] }));\n                break;\n            }\n            case \"dateTime\": {\n                if (this.internalType.parse) {\n                    writer.write(`DateTime.Parse(\"${this.internalType.value.toISOString()}\", null, `);\n                    writer.writeNode(this.System.Globalization.DateTimeStyles);\n                    writer.write(\".AdjustToUniversal)\");\n                } else {\n                    writer.write(this.constructDatetimeWithoutParse(this.internalType.value));\n                }\n                break;\n            }\n            case \"uuid\":\n                writer.write(`\"${this.internalType.value.toString()}\"`);\n                break;\n            case \"null\":\n                writer.write(\"null\");\n                break;\n        }\n    }\n\n    /*\n     * Currently unused because it was easier to just use `.Parse` to get passing wire tests.\n     */\n    private constructDatetimeWithoutParse(datetime: Date): string {\n        const dateTimeYear = datetime.getUTCFullYear();\n        const dateTimeMonth = (datetime.getUTCMonth() + 1).toString().padStart(2, \"0\");\n        const dateTimeDay = datetime.getUTCDate().toString().padStart(2, \"0\");\n        const hours = datetime.getUTCHours().toString().padStart(2, \"0\");\n        const minutes = datetime.getUTCMinutes().toString().padStart(2, \"0\");\n        const seconds = datetime.getUTCSeconds().toString().padStart(2, \"0\");\n        const milliseconds = datetime.getUTCMilliseconds().toString().padStart(3, \"0\");\n        return `new DateTime(${dateTimeYear}, ${dateTimeMonth}, ${dateTimeDay}, ${hours}, ${minutes}, ${seconds}, ${milliseconds})`;\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { Type } from \"../types/IType.js\";\n\nexport declare namespace List {\n    interface Args {\n        itemType?: Type;\n        entries: AstNode[];\n    }\n}\n\nexport class List extends AstNode {\n    private itemType: Type | undefined;\n    private entries: AstNode[];\n\n    constructor({ itemType, entries }: List.Args, generation: Generation) {\n        super(generation);\n        this.itemType = itemType;\n        this.entries = entries;\n    }\n\n    public write(writer: Writer): void {\n        if (this.itemType != null) {\n            writer.write(this.System.Collections.Generic.List(this.itemType).new());\n            writer.pushScope();\n        } else {\n            writer.write(\"[\");\n        }\n        this.entries.forEach((item, index) => {\n            writer.writeNode(item);\n            if (index < this.entries.length - 1) {\n                writer.write(\", \");\n            }\n        });\n        if (this.itemType != null) {\n            writer.popScope();\n        } else {\n            writer.write(\"]\");\n        }\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { type Type } from \"../types/IType.js\";\n\nexport declare namespace MethodInvocation {\n    interface Args {\n        /* Defaults to false */\n        async?: boolean;\n        /*\n        How to call configureAwait(false/true) when async is true.\n        Defaults to `false`, which adds `configureAwait(false)`.\n        If true, nothing is added, as the default it `configureAwait(true)`.\n        */\n        configureAwait?: boolean;\n        /* The method to invoke */\n        method: string;\n        /* A map of the field for the class and the value to be assigned to it. */\n        arguments_: AstNode[];\n        /* In the event of an instance method, you'll want to invoke it on said instance */\n        on?: AstNode;\n        /* Any generics used in the method invocation */\n        generics?: Type[];\n        /* Whether to use a multiline method invocation */\n        multiline?: boolean;\n        /* Whether the method returns an async enumerable */\n        isAsyncEnumerable?: boolean;\n    }\n}\n\nexport class MethodInvocation extends AstNode {\n    private arguments: AstNode[];\n    private method: string;\n    private on: AstNode | undefined;\n    private [\"async\"]: boolean;\n    public readonly isAsyncEnumerable: boolean;\n    private configureAwait: boolean;\n    private generics: Type[];\n    private multiline: boolean;\n\n    constructor(\n        {\n            method,\n            arguments_,\n            on,\n            async,\n            configureAwait,\n            generics,\n            multiline,\n            isAsyncEnumerable\n        }: MethodInvocation.Args,\n        generation: Generation\n    ) {\n        super(generation);\n\n        this.method = method;\n        this.arguments = arguments_;\n        this.on = on;\n        this.async = async ?? false;\n        this.configureAwait = configureAwait ?? false;\n        this.generics = generics ?? [];\n        this.multiline = multiline ?? false;\n        this.isAsyncEnumerable = isAsyncEnumerable ?? false;\n    }\n\n    public write(writer: Writer): void {\n        if (this.async && !this.isAsyncEnumerable) {\n            writer.write(\"await \");\n        }\n        if (this.on) {\n            this.on.write(writer);\n            writer.write(\".\");\n        }\n        writer.write(this.method);\n        if (this.generics != null && this.generics.length > 0) {\n            writer.write(\"<\");\n            this.generics.forEach((generic, idx) => {\n                writer.writeNode(generic);\n                if (idx < this.generics.length - 1) {\n                    writer.write(\", \");\n                }\n            });\n            writer.write(\">\");\n        }\n        writer.write(\"(\");\n        if (this.arguments.length === 0) {\n            writer.write(\")\");\n            this.writeEnd(writer);\n            return;\n        }\n        if (this.multiline) {\n            writer.newLine();\n            writer.indent();\n        }\n        this.arguments.forEach((arg, idx) => {\n            arg.write(writer);\n            if (idx < this.arguments.length - 1) {\n                writer.write(\",\");\n                if (!this.multiline) {\n                    writer.write(\" \");\n                }\n            }\n            if (this.multiline) {\n                writer.writeNewLineIfLastLineNot();\n            }\n        });\n        if (this.multiline) {\n            writer.dedent();\n        }\n        writer.write(\")\");\n        this.writeEnd(writer);\n    }\n\n    private writeEnd(writer: Writer): void {\n        if (this.async && this.configureAwait === false) {\n            writer.write(\".ConfigureAwait(false)\");\n        }\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { Type } from \"../types/IType.js\";\n\nexport declare namespace ReadOnlyMemory {\n    interface Args {\n        itemType: Type;\n        entries: AstNode[];\n    }\n}\n\nexport class ReadOnlyMemory extends AstNode {\n    private itemType: Type;\n    private entries: AstNode[];\n\n    constructor({ itemType, entries }: ReadOnlyMemory.Args, generation: Generation) {\n        super(generation);\n        this.itemType = itemType;\n        this.entries = entries;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(\"new\");\n        if (this.entries.length === 0) {\n            writer.write(\" \");\n            writer.writeNode(this.itemType);\n        }\n        writer.write(\"[] {\");\n        this.entries.forEach((item, index) => {\n            writer.writeNode(item);\n            if (index < this.entries.length - 1) {\n                writer.write(\", \");\n            }\n        });\n        writer.write(\"}\");\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { Type } from \"../types/IType.js\";\n\nexport declare namespace Set {\n    interface Args {\n        itemType: Type;\n        entries: AstNode[];\n    }\n}\n\nexport class Set extends AstNode {\n    private itemType: Type;\n    private entries: AstNode[];\n\n    constructor({ itemType, entries }: Set.Args, generation: Generation) {\n        super(generation);\n        this.itemType = itemType;\n        this.entries = entries;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(this.System.Collections.Generic.HashSet(this.itemType).new());\n        writer.pushScope();\n        this.entries.forEach((item, index) => {\n            writer.writeNode(item);\n            if (index < this.entries.length - 1) {\n                writer.write(\", \");\n            }\n        });\n        writer.popScope(false);\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { escapeForCSharpString } from \"../../utils/escapeForCSharpString.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\n\nexport declare namespace String_ {\n    interface Args {\n        string: string;\n    }\n}\n\nexport class String_ extends AstNode {\n    private string: string;\n\n    constructor(args: String_.Args, generation: Generation) {\n        super(generation);\n        this.string = args.string;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(`\"${escapeForCSharpString(this.string)}\"`);\n    }\n}\n","// Pre-computed escape sequences for common characters\nconst ESCAPE_MAP: Record<string, string> = {\n    \"\\\\\": \"\\\\\\\\\", // Backslash\n    '\"': '\\\\\"', // Double quote\n    \"\\n\": \"\\\\n\", // Newline (LF)\n    \"\\r\": \"\\\\r\", // Carriage return (CR)\n    \"\\t\": \"\\\\t\", // Tab\n    \"\\0\": \"\\\\0\", // Null\n    \"\\f\": \"\\\\f\", // Form feed\n    \"\\u0008\": \"\\\\b\", // Backspace\n    \"\\v\": \"\\\\v\", // Vertical tab\n    \"\\u0007\": \"\\\\a\" // Bell/alert\n};\n\n// Single regex that matches all characters that need escaping\n// biome-ignore lint: ignore next line\nconst ESCAPE_REGEX = /[\\\\\\\"\\n\\r\\t\\0\\f\\u0007\\u0008\\v\\u0001-\\u0006\\u000E-\\u001F\\u007F-\\u009F]/g;\n\nexport function escapeForCSharpString(input: string): string {\n    return input.replace(ESCAPE_REGEX, (match) => {\n        const escaped = ESCAPE_MAP[match];\n        if (escaped !== undefined) {\n            return escaped;\n        }\n\n        // Fall back to Unicode escape for other control characters\n        return `\\\\u${match.charCodeAt(0).toString(16).padStart(4, \"0\")}`;\n    });\n}\n","import { AbstractAstNode } from \"@fern-api/browser-compatible-base-generator\";\nimport { type ChildNode, type Element, isTag, isText } from \"domhandler\";\nimport { parseDocument } from \"htmlparser2\";\nimport { XmlDocBlock } from \"../language/XmlDocBlock.js\";\nimport { AstNode } from \"./AstNode.js\";\nimport { Writer } from \"./Writer.js\";\n\nexport class XmlDocWriter {\n    // Tags that are safe to preserve in XML documentation comments\n    // Reference: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/xmldoc/recommended-tags\n    private static readonly SAFE_XML_DOC_TAGS = new Set([\n        // C# XML doc standard tags (officially documented)\n        \"c\",\n        \"code\",\n        \"description\",\n        \"example\",\n        \"exception\",\n        \"include\",\n        \"inheritdoc\",\n        \"item\",\n        \"list\",\n        \"listheader\",\n        \"para\",\n        \"param\",\n        \"paramref\",\n        \"permission\",\n        \"remarks\",\n        \"returns\",\n        \"see\",\n        \"seealso\",\n        \"summary\",\n        \"term\",\n        \"typeparam\",\n        \"typeparamref\",\n        \"value\",\n        // HTML formatting tags explicitly mentioned in Microsoft docs\n        \"a\",\n        \"b\",\n        \"br\",\n        \"i\",\n        \"u\",\n        \"p\"\n    ]);\n\n    // HTML tags that the converter knows how to transform to XMLDoc equivalents\n    private static readonly CONVERTIBLE_HTML_TAGS = new Set([\n        \"code\",\n        \"pre\",\n        \"p\",\n        \"ul\",\n        \"ol\",\n        \"li\",\n        \"a\",\n        \"br\",\n        \"b\",\n        \"strong\",\n        \"i\",\n        \"em\",\n        \"tt\",\n        \"h1\",\n        \"h2\",\n        \"h3\",\n        \"h4\",\n        \"h5\",\n        \"h6\",\n        \"div\",\n        \"span\",\n        \"table\",\n        \"tr\",\n        \"td\",\n        \"th\",\n        \"thead\",\n        \"tbody\"\n    ]);\n\n    private writer: Writer;\n    private wrotePrefixOnCurrentLine: boolean = false;\n    constructor(writer: Writer) {\n        this.writer = writer;\n    }\n\n    public write(text: string | XmlDocBlock): void {\n        if (typeof text === \"string\") {\n            this.writer.write(text);\n            return;\n        }\n        text.write(this.writer);\n    }\n\n    public writeWithEscaping(text: string | XmlDocBlock): void {\n        if (typeof text === \"string\") {\n            this.writer.write(this.escapeXmlDocContent(text));\n            return;\n        }\n        text.write(this.writer);\n    }\n\n    public writeLine(text = \"\"): void {\n        this.writePrefix();\n        this.writer.writeLine(text);\n        this.wrotePrefixOnCurrentLine = false;\n    }\n\n    public writeLineWithEscaping(text: string): void {\n        this.writePrefix();\n        this.writer.write(this.escapeXmlDocContent(text));\n        this.wrotePrefixOnCurrentLine = false;\n    }\n\n    public writeNewLineIfLastLineNot(): void {\n        this.writer.writeNewLineIfLastLineNot();\n        this.wrotePrefixOnCurrentLine = false;\n    }\n\n    public writeNodeOrString(input: AbstractAstNode | string): void {\n        this.writer.write(input);\n    }\n\n    public writePrefix(): this {\n        if (this.wrotePrefixOnCurrentLine) {\n            return this;\n        }\n        this.writer.write(\"/// \");\n        this.wrotePrefixOnCurrentLine = true;\n        return this;\n    }\n\n    public writeOpenXmlNode(nodeName: string): void {\n        this.write(`<${nodeName}>`);\n    }\n\n    public writeCloseXmlNode(nodeName: string): void {\n        this.write(`</${nodeName}>`);\n    }\n\n    public writeNode(node: AstNode): void {\n        this.writer.writeNode(node);\n    }\n\n    public writeXmlNode(nodeName: string, text: string): void {\n        this.writePrefix();\n        this.writeOpenXmlNode(nodeName);\n        this.writeLine(text);\n        this.writePrefix();\n        this.writeCloseXmlNode(nodeName);\n    }\n\n    public writeXmlNodeMultiline(nodeName: string, text: string): void {\n        this.writePrefix();\n        this.writeOpenXmlNode(nodeName);\n        this.writeLine();\n        this.writeMultiline(text);\n        this.writeLine();\n        this.writePrefix();\n        this.writeCloseXmlNode(nodeName);\n    }\n\n    public writeXmlNodeWithEscaping(nodeName: string, text: string): void {\n        this.writeOpenXmlNode(nodeName);\n        this.writeLineWithEscaping(text);\n        this.writeCloseXmlNode(nodeName);\n    }\n\n    public writeMultilineNodeWithEscaping(nodeName: string, text: string): void {\n        this.writeOpenXmlNode(nodeName);\n        this.writeLine();\n        this.writeMultilineWithEscaping(text);\n        this.writeLine();\n        this.writeCloseXmlNode(nodeName);\n    }\n\n    public writeMultiline(text: string): void {\n        text.trim()\n            .split(\"\\n\")\n            .forEach((line) => {\n                this.writeLine(line);\n            });\n    }\n\n    public writeMultilineWithEscaping(text: string): void {\n        text = this.escapeXmlDocContent(text);\n        this.writeMultiline(text);\n    }\n\n    private escapeXmlDocContent(text: string): string {\n        const decoded = this.decodeHtmlEntities(text);\n        const converted = this.convertHtmlToXmlDoc(decoded);\n\n        // XML/HTML tag regex\n        const tagPattern = /<\\/?([a-zA-Z][a-zA-Z0-9]*)\\b[^>]*\\/?>/g;\n        const tags: string[] = [];\n\n        // Replace safe tags with placeholders to protect them from escaping\n        const withPlaceholders = converted.replace(tagPattern, (match, tagName: string) => {\n            if (XmlDocWriter.SAFE_XML_DOC_TAGS.has(tagName.toLowerCase())) {\n                const index = tags.push(match) - 1;\n                return `\\uE000${index}\\uE000`;\n            }\n            return match;\n        });\n        const escaped = withPlaceholders.replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\");\n\n        return escaped.replace(/\\uE000(\\d+)\\uE000/g, (_, index: string) => tags[parseInt(index, 10)] ?? \"\");\n    }\n\n    private convertHtmlToXmlDoc(text: string): string {\n        // Quick check: if no HTML-like tags, return as-is\n        if (!/<[a-zA-Z]/.test(text)) {\n            return text;\n        }\n\n        // Pre-escape complete tags that are neither convertible HTML nor safe XMLDoc\n        text = text.replace(/<\\/?([a-zA-Z][a-zA-Z0-9]*)\\b[^>]*\\/?>/g, (match, tagName: string) => {\n            const lower = tagName.toLowerCase();\n            if (XmlDocWriter.CONVERTIBLE_HTML_TAGS.has(lower) || XmlDocWriter.SAFE_XML_DOC_TAGS.has(lower)) {\n                return match;\n            }\n            return match.replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\");\n        });\n\n        // Pre-escape incomplete tags (no closing >) to prevent htmlparser2 from consuming them\n        text = text.replace(/<(?=[a-zA-Z])(?![^>]*>)/g, \"&lt;\");\n\n        const doc = parseDocument(text, {\n            decodeEntities: false,\n            recognizeSelfClosing: true,\n            lowerCaseAttributeNames: true\n        });\n        return this.renderNodes(doc.children);\n    }\n\n    private renderNodes(nodes: readonly ChildNode[]): string {\n        return nodes.map((node) => this.renderNode(node)).join(\"\");\n    }\n\n    private renderNode(node: ChildNode): string {\n        if (isText(node)) {\n            return node.data;\n        }\n        if (isTag(node)) {\n            return this.renderElement(node);\n        }\n        // Comments, directives, etc. - strip\n        return \"\";\n    }\n\n    private renderElement(el: Element): string {\n        const tag = el.name.toLowerCase();\n        const children = this.renderNodes(el.children);\n\n        switch (tag) {\n            case \"code\":\n            case \"tt\": {\n                // Inside <pre>, keep as <code> (block code); otherwise use <c> (inline)\n                // <tt> is deprecated HTML; MS docs recommend <c> instead\n                const parentTag = el.parent != null && isTag(el.parent) ? el.parent.name.toLowerCase() : undefined;\n                if (parentTag === \"pre\") {\n                    return `<code>${children}</code>`;\n                }\n                return `<c>${children}</c>`;\n            }\n            case \"pre\": {\n                // If the only meaningful child is <code>, let it render (it outputs <code>)\n                const meaningfulChildren = el.children.filter((c) => !isText(c) || c.data.trim() !== \"\");\n                if (\n                    meaningfulChildren.length === 1 &&\n                    meaningfulChildren[0] != null &&\n                    isTag(meaningfulChildren[0]) &&\n                    meaningfulChildren[0].name.toLowerCase() === \"code\"\n                ) {\n                    return children;\n                }\n                return `<code>${children}</code>`;\n            }\n            case \"p\":\n                return `<para>${children}</para>`;\n            case \"ul\":\n                return `<list type=\"bullet\">${children}</list>`;\n            case \"ol\":\n                return `<list type=\"number\">${children}</list>`;\n            case \"li\":\n                return `<item><description>${children}</description></item>`;\n            case \"a\": {\n                const href = el.attribs.href;\n                if (href) {\n                    return `<see href=\"${href}\">${children}</see>`;\n                }\n                return children;\n            }\n            case \"br\":\n                return \"<br/>\";\n            case \"b\":\n            case \"strong\":\n                return `<b>${children}</b>`;\n            case \"i\":\n            case \"em\":\n                return `<i>${children}</i>`;\n            case \"h1\":\n            case \"h2\":\n            case \"h3\":\n            case \"h4\":\n            case \"h5\":\n            case \"h6\":\n                return `<para>${children}</para>`;\n            case \"div\":\n            case \"span\":\n            case \"table\":\n            case \"tr\":\n            case \"td\":\n            case \"th\":\n            case \"thead\":\n            case \"tbody\":\n                // Strip these tags, keep content\n                return children;\n            default: {\n                // Known XMLDoc tags: pass through with attributes\n                if (XmlDocWriter.SAFE_XML_DOC_TAGS.has(tag)) {\n                    const attrs = Object.entries(el.attribs)\n                        .map(([k, v]) => ` ${k}=\"${v}\"`)\n                        .join(\"\");\n                    if (el.children.length === 0) {\n                        return `<${el.name}${attrs}/>`;\n                    }\n                    return `<${el.name}${attrs}>${children}</${el.name}>`;\n                }\n                // Unknown tags: strip tag, keep content\n                return children;\n            }\n        }\n    }\n\n    private decodeHtmlEntities(text: string): string {\n        const entityMap: Record<string, string> = {\n            \"&plus;\": \"+\",\n            \"&minus;\": \"-\",\n            \"&times;\": \"×\",\n            \"&divide;\": \"÷\",\n            \"&nbsp;\": \" \",\n            \"&hellip;\": \"…\",\n            \"&middot;\": \"·\",\n            \"&copy;\": \"©\",\n            \"&reg;\": \"®\",\n            \"&trade;\": \"™\",\n            \"&deg;\": \"°\",\n            \"&plusmn;\": \"±\",\n            \"&frac14;\": \"¼\",\n            \"&frac12;\": \"½\",\n            \"&frac34;\": \"¾\",\n            \"&ndash;\": \"–\",\n            \"&mdash;\": \"—\",\n            \"&lsquo;\": \"\\u2018\",\n            \"&rsquo;\": \"\\u2019\",\n            \"&ldquo;\": \"\\u201C\",\n            \"&rdquo;\": \"\\u201D\",\n            \"&bull;\": \"•\",\n            \"&euro;\": \"€\",\n            \"&pound;\": \"£\",\n            \"&yen;\": \"¥\",\n            \"&cent;\": \"¢\",\n            \"&sect;\": \"§\",\n            \"&para;\": \"¶\",\n            \"&dagger;\": \"†\",\n            \"&Dagger;\": \"‡\",\n            \"&permil;\": \"‰\",\n            \"&lsaquo;\": \"‹\",\n            \"&rsaquo;\": \"›\",\n            \"&spades;\": \"♠\",\n            \"&clubs;\": \"♣\",\n            \"&hearts;\": \"♥\",\n            \"&diams;\": \"♦\",\n            \"&larr;\": \"←\",\n            \"&uarr;\": \"↑\",\n            \"&rarr;\": \"→\",\n            \"&darr;\": \"↓\",\n            \"&harr;\": \"↔\",\n            \"&crarr;\": \"↵\",\n            \"&lArr;\": \"⇐\",\n            \"&uArr;\": \"⇑\",\n            \"&rArr;\": \"⇒\",\n            \"&dArr;\": \"⇓\",\n            \"&hArr;\": \"⇔\",\n            \"&forall;\": \"∀\",\n            \"&part;\": \"∂\",\n            \"&exist;\": \"∃\",\n            \"&empty;\": \"∅\",\n            \"&nabla;\": \"∇\",\n            \"&isin;\": \"∈\",\n            \"&notin;\": \"∉\",\n            \"&ni;\": \"∋\",\n            \"&prod;\": \"∏\",\n            \"&sum;\": \"∑\",\n            \"&lowast;\": \"∗\",\n            \"&radic;\": \"√\",\n            \"&prop;\": \"∝\",\n            \"&infin;\": \"∞\",\n            \"&ang;\": \"∠\",\n            \"&and;\": \"∧\",\n            \"&or;\": \"∨\",\n            \"&cap;\": \"∩\",\n            \"&cup;\": \"∪\",\n            \"&int;\": \"∫\",\n            \"&there4;\": \"∴\",\n            \"&sim;\": \"∼\",\n            \"&cong;\": \"≅\",\n            \"&asymp;\": \"≈\",\n            \"&ne;\": \"≠\",\n            \"&equiv;\": \"≡\",\n            \"&le;\": \"≤\",\n            \"&ge;\": \"≥\",\n            \"&sub;\": \"⊂\",\n            \"&sup;\": \"⊃\",\n            \"&nsub;\": \"⊄\",\n            \"&sube;\": \"⊆\",\n            \"&supe;\": \"⊇\",\n            \"&oplus;\": \"⊕\",\n            \"&otimes;\": \"⊗\",\n            \"&perp;\": \"⊥\",\n            \"&sdot;\": \"⋅\",\n            \"&Alpha;\": \"Α\",\n            \"&Beta;\": \"Β\",\n            \"&Gamma;\": \"Γ\",\n            \"&Delta;\": \"Δ\",\n            \"&Epsilon;\": \"Ε\",\n            \"&Zeta;\": \"Ζ\",\n            \"&Eta;\": \"Η\",\n            \"&Theta;\": \"Θ\",\n            \"&Iota;\": \"Ι\",\n            \"&Kappa;\": \"Κ\",\n            \"&Lambda;\": \"Λ\",\n            \"&Mu;\": \"Μ\",\n            \"&Nu;\": \"Ν\",\n            \"&Xi;\": \"Ξ\",\n            \"&Omicron;\": \"Ο\",\n            \"&Pi;\": \"Π\",\n            \"&Rho;\": \"Ρ\",\n            \"&Sigma;\": \"Σ\",\n            \"&Tau;\": \"Τ\",\n            \"&Upsilon;\": \"Υ\",\n            \"&Phi;\": \"Φ\",\n            \"&Chi;\": \"Χ\",\n            \"&Psi;\": \"Ψ\",\n            \"&Omega;\": \"Ω\",\n            \"&alpha;\": \"α\",\n            \"&beta;\": \"β\",\n            \"&gamma;\": \"γ\",\n            \"&delta;\": \"δ\",\n            \"&epsilon;\": \"ε\",\n            \"&zeta;\": \"ζ\",\n            \"&eta;\": \"η\",\n            \"&theta;\": \"θ\",\n            \"&iota;\": \"ι\",\n            \"&kappa;\": \"κ\",\n            \"&lambda;\": \"λ\",\n            \"&mu;\": \"μ\",\n            \"&nu;\": \"ν\",\n            \"&xi;\": \"ξ\",\n            \"&omicron;\": \"ο\",\n            \"&pi;\": \"π\",\n            \"&rho;\": \"ρ\",\n            \"&sigmaf;\": \"ς\",\n            \"&sigma;\": \"σ\",\n            \"&tau;\": \"τ\",\n            \"&upsilon;\": \"υ\",\n            \"&phi;\": \"φ\",\n            \"&chi;\": \"χ\",\n            \"&psi;\": \"ψ\",\n            \"&omega;\": \"ω\"\n        };\n\n        let result = text;\n        for (const [entity, char] of Object.entries(entityMap)) {\n            result = result.replaceAll(entity, char);\n        }\n\n        result = result.replace(/&#(\\d+);/g, (match, dec) => {\n            return String.fromCharCode(parseInt(dec, 10));\n        });\n        result = result.replace(/&#x([0-9A-Fa-f]+);/g, (match, hex) => {\n            return String.fromCharCode(parseInt(hex, 16));\n        });\n\n        return result;\n    }\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n    withStartIndices: false,\n    withEndIndices: false,\n    xmlMode: false,\n};\nexport class DomHandler {\n    /**\n     * @param callback Called once parsing has completed.\n     * @param options Settings for the handler.\n     * @param elementCB Callback whenever a tag is closed.\n     */\n    constructor(callback, options, elementCB) {\n        /** The elements of the DOM */\n        this.dom = [];\n        /** The root element for the DOM */\n        this.root = new Document(this.dom);\n        /** Indicated whether parsing has been completed. */\n        this.done = false;\n        /** Stack of open tags. */\n        this.tagStack = [this.root];\n        /** A data node that is still being written to. */\n        this.lastNode = null;\n        /** Reference to the parser instance. Used for location information. */\n        this.parser = null;\n        // Make it possible to skip arguments, for backwards-compatibility\n        if (typeof options === \"function\") {\n            elementCB = options;\n            options = defaultOpts;\n        }\n        if (typeof callback === \"object\") {\n            options = callback;\n            callback = undefined;\n        }\n        this.callback = callback !== null && callback !== void 0 ? callback : null;\n        this.options = options !== null && options !== void 0 ? options : defaultOpts;\n        this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n    }\n    onparserinit(parser) {\n        this.parser = parser;\n    }\n    // Resets the handler back to starting state\n    onreset() {\n        this.dom = [];\n        this.root = new Document(this.dom);\n        this.done = false;\n        this.tagStack = [this.root];\n        this.lastNode = null;\n        this.parser = null;\n    }\n    // Signals the handler that parsing is done\n    onend() {\n        if (this.done)\n            return;\n        this.done = true;\n        this.parser = null;\n        this.handleCallback(null);\n    }\n    onerror(error) {\n        this.handleCallback(error);\n    }\n    onclosetag() {\n        this.lastNode = null;\n        const elem = this.tagStack.pop();\n        if (this.options.withEndIndices) {\n            elem.endIndex = this.parser.endIndex;\n        }\n        if (this.elementCB)\n            this.elementCB(elem);\n    }\n    onopentag(name, attribs) {\n        const type = this.options.xmlMode ? ElementType.Tag : undefined;\n        const element = new Element(name, attribs, undefined, type);\n        this.addNode(element);\n        this.tagStack.push(element);\n    }\n    ontext(data) {\n        const { lastNode } = this;\n        if (lastNode && lastNode.type === ElementType.Text) {\n            lastNode.data += data;\n            if (this.options.withEndIndices) {\n                lastNode.endIndex = this.parser.endIndex;\n            }\n        }\n        else {\n            const node = new Text(data);\n            this.addNode(node);\n            this.lastNode = node;\n        }\n    }\n    oncomment(data) {\n        if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n            this.lastNode.data += data;\n            return;\n        }\n        const node = new Comment(data);\n        this.addNode(node);\n        this.lastNode = node;\n    }\n    oncommentend() {\n        this.lastNode = null;\n    }\n    oncdatastart() {\n        const text = new Text(\"\");\n        const node = new CDATA([text]);\n        this.addNode(node);\n        text.parent = node;\n        this.lastNode = text;\n    }\n    oncdataend() {\n        this.lastNode = null;\n    }\n    onprocessinginstruction(name, data) {\n        const node = new ProcessingInstruction(name, data);\n        this.addNode(node);\n    }\n    handleCallback(error) {\n        if (typeof this.callback === \"function\") {\n            this.callback(error, this.dom);\n        }\n        else if (error) {\n            throw error;\n        }\n    }\n    addNode(node) {\n        const parent = this.tagStack[this.tagStack.length - 1];\n        const previousSibling = parent.children[parent.children.length - 1];\n        if (this.options.withStartIndices) {\n            node.startIndex = this.parser.startIndex;\n        }\n        if (this.options.withEndIndices) {\n            node.endIndex = this.parser.endIndex;\n        }\n        parent.children.push(node);\n        if (previousSibling) {\n            node.prev = previousSibling;\n            previousSibling.next = node;\n        }\n        node.parent = parent;\n        this.lastNode = null;\n    }\n}\nexport default DomHandler;\n","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n    /** Type for the root element of a document */\n    ElementType[\"Root\"] = \"root\";\n    /** Type for Text */\n    ElementType[\"Text\"] = \"text\";\n    /** Type for <? ... ?> */\n    ElementType[\"Directive\"] = \"directive\";\n    /** Type for <!-- ... --> */\n    ElementType[\"Comment\"] = \"comment\";\n    /** Type for <script> tags */\n    ElementType[\"Script\"] = \"script\";\n    /** Type for <style> tags */\n    ElementType[\"Style\"] = \"style\";\n    /** Type for Any tag */\n    ElementType[\"Tag\"] = \"tag\";\n    /** Type for <![CDATA[ ... ]]> */\n    ElementType[\"CDATA\"] = \"cdata\";\n    /** Type for <!doctype ...> */\n    ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n    return (elem.type === ElementType.Tag ||\n        elem.type === ElementType.Script ||\n        elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n    constructor() {\n        /** Parent of the node */\n        this.parent = null;\n        /** Previous sibling */\n        this.prev = null;\n        /** Next sibling */\n        this.next = null;\n        /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n        this.startIndex = null;\n        /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n        this.endIndex = null;\n    }\n    // Read-write aliases for properties\n    /**\n     * Same as {@link parent}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get parentNode() {\n        return this.parent;\n    }\n    set parentNode(parent) {\n        this.parent = parent;\n    }\n    /**\n     * Same as {@link prev}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get previousSibling() {\n        return this.prev;\n    }\n    set previousSibling(prev) {\n        this.prev = prev;\n    }\n    /**\n     * Same as {@link next}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get nextSibling() {\n        return this.next;\n    }\n    set nextSibling(next) {\n        this.next = next;\n    }\n    /**\n     * Clone this node, and optionally its children.\n     *\n     * @param recursive Clone child nodes as well.\n     * @returns A clone of the node.\n     */\n    cloneNode(recursive = false) {\n        return cloneNode(this, recursive);\n    }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n    /**\n     * @param data The content of the data node\n     */\n    constructor(data) {\n        super();\n        this.data = data;\n    }\n    /**\n     * Same as {@link data}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get nodeValue() {\n        return this.data;\n    }\n    set nodeValue(data) {\n        this.data = data;\n    }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n    constructor() {\n        super(...arguments);\n        this.type = ElementType.Text;\n    }\n    get nodeType() {\n        return 3;\n    }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n    constructor() {\n        super(...arguments);\n        this.type = ElementType.Comment;\n    }\n    get nodeType() {\n        return 8;\n    }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n    constructor(name, data) {\n        super(data);\n        this.name = name;\n        this.type = ElementType.Directive;\n    }\n    get nodeType() {\n        return 1;\n    }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n    /**\n     * @param children Children of the node. Only certain node types can have children.\n     */\n    constructor(children) {\n        super();\n        this.children = children;\n    }\n    // Aliases\n    /** First child of the node. */\n    get firstChild() {\n        var _a;\n        return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n    }\n    /** Last child of the node. */\n    get lastChild() {\n        return this.children.length > 0\n            ? this.children[this.children.length - 1]\n            : null;\n    }\n    /**\n     * Same as {@link children}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get childNodes() {\n        return this.children;\n    }\n    set childNodes(children) {\n        this.children = children;\n    }\n}\nexport class CDATA extends NodeWithChildren {\n    constructor() {\n        super(...arguments);\n        this.type = ElementType.CDATA;\n    }\n    get nodeType() {\n        return 4;\n    }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n    constructor() {\n        super(...arguments);\n        this.type = ElementType.Root;\n    }\n    get nodeType() {\n        return 9;\n    }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n    /**\n     * @param name Name of the tag, eg. `div`, `span`.\n     * @param attribs Object mapping attribute names to attribute values.\n     * @param children Children of the node.\n     */\n    constructor(name, attribs, children = [], type = name === \"script\"\n        ? ElementType.Script\n        : name === \"style\"\n            ? ElementType.Style\n            : ElementType.Tag) {\n        super(children);\n        this.name = name;\n        this.attribs = attribs;\n        this.type = type;\n    }\n    get nodeType() {\n        return 1;\n    }\n    // DOM Level 1 aliases\n    /**\n     * Same as {@link name}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get tagName() {\n        return this.name;\n    }\n    set tagName(name) {\n        this.name = name;\n    }\n    get attributes() {\n        return Object.keys(this.attribs).map((name) => {\n            var _a, _b;\n            return ({\n                name,\n                value: this.attribs[name],\n                namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n                prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n            });\n        });\n    }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n    return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n    return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n    return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n    return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n    return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n    return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n    return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n    let result;\n    if (isText(node)) {\n        result = new Text(node.data);\n    }\n    else if (isComment(node)) {\n        result = new Comment(node.data);\n    }\n    else if (isTag(node)) {\n        const children = recursive ? cloneChildren(node.children) : [];\n        const clone = new Element(node.name, { ...node.attribs }, children);\n        children.forEach((child) => (child.parent = clone));\n        if (node.namespace != null) {\n            clone.namespace = node.namespace;\n        }\n        if (node[\"x-attribsNamespace\"]) {\n            clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n        }\n        if (node[\"x-attribsPrefix\"]) {\n            clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n        }\n        result = clone;\n    }\n    else if (isCDATA(node)) {\n        const children = recursive ? cloneChildren(node.children) : [];\n        const clone = new CDATA(children);\n        children.forEach((child) => (child.parent = clone));\n        result = clone;\n    }\n    else if (isDocument(node)) {\n        const children = recursive ? cloneChildren(node.children) : [];\n        const clone = new Document(children);\n        children.forEach((child) => (child.parent = clone));\n        if (node[\"x-mode\"]) {\n            clone[\"x-mode\"] = node[\"x-mode\"];\n        }\n        result = clone;\n    }\n    else if (isDirective(node)) {\n        const instruction = new ProcessingInstruction(node.name, node.data);\n        if (node[\"x-name\"] != null) {\n            instruction[\"x-name\"] = node[\"x-name\"];\n            instruction[\"x-publicId\"] = node[\"x-publicId\"];\n            instruction[\"x-systemId\"] = node[\"x-systemId\"];\n        }\n        result = instruction;\n    }\n    else {\n        throw new Error(`Not implemented yet: ${node.type}`);\n    }\n    result.startIndex = node.startIndex;\n    result.endIndex = node.endIndex;\n    if (node.sourceCodeLocation != null) {\n        result.sourceCodeLocation = node.sourceCodeLocation;\n    }\n    return result;\n}\nfunction cloneChildren(childs) {\n    const children = childs.map((child) => cloneNode(child, true));\n    for (let i = 1; i < children.length; i++) {\n        children[i].prev = children[i - 1];\n        children[i - 1].next = children[i];\n    }\n    return children;\n}\n",null,null,null,null,null,null,null,null,null,"/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n    \"style\",\n    \"script\",\n    \"xmp\",\n    \"iframe\",\n    \"noembed\",\n    \"noframes\",\n    \"plaintext\",\n    \"noscript\",\n]);\nfunction replaceQuotes(value) {\n    return value.replace(/\"/g, \"&quot;\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n    var _a;\n    if (!attributes)\n        return;\n    const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n        ? replaceQuotes\n        : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n            ? encodeXML\n            : escapeAttribute;\n    return Object.keys(attributes)\n        .map((key) => {\n        var _a, _b;\n        const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n        if (opts.xmlMode === \"foreign\") {\n            /* Fix up mixed-case attribute names */\n            key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n        }\n        if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n            return key;\n        }\n        return `${key}=\"${encode(value)}\"`;\n    })\n        .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n    \"area\",\n    \"base\",\n    \"basefont\",\n    \"br\",\n    \"col\",\n    \"command\",\n    \"embed\",\n    \"frame\",\n    \"hr\",\n    \"img\",\n    \"input\",\n    \"isindex\",\n    \"keygen\",\n    \"link\",\n    \"meta\",\n    \"param\",\n    \"source\",\n    \"track\",\n    \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n    const nodes = \"length\" in node ? node : [node];\n    let output = \"\";\n    for (let i = 0; i < nodes.length; i++) {\n        output += renderNode(nodes[i], options);\n    }\n    return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n    switch (node.type) {\n        case ElementType.Root:\n            return render(node.children, options);\n        // @ts-expect-error We don't use `Doctype` yet\n        case ElementType.Doctype:\n        case ElementType.Directive:\n            return renderDirective(node);\n        case ElementType.Comment:\n            return renderComment(node);\n        case ElementType.CDATA:\n            return renderCdata(node);\n        case ElementType.Script:\n        case ElementType.Style:\n        case ElementType.Tag:\n            return renderTag(node, options);\n        case ElementType.Text:\n            return renderText(node, options);\n    }\n}\nconst foreignModeIntegrationPoints = new Set([\n    \"mi\",\n    \"mo\",\n    \"mn\",\n    \"ms\",\n    \"mtext\",\n    \"annotation-xml\",\n    \"foreignObject\",\n    \"desc\",\n    \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n    var _a;\n    // Handle SVG / MathML in HTML\n    if (opts.xmlMode === \"foreign\") {\n        /* Fix up mixed-case element names */\n        elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n        /* Exit foreign mode at integration points */\n        if (elem.parent &&\n            foreignModeIntegrationPoints.has(elem.parent.name)) {\n            opts = { ...opts, xmlMode: false };\n        }\n    }\n    if (!opts.xmlMode && foreignElements.has(elem.name)) {\n        opts = { ...opts, xmlMode: \"foreign\" };\n    }\n    let tag = `<${elem.name}`;\n    const attribs = formatAttributes(elem.attribs, opts);\n    if (attribs) {\n        tag += ` ${attribs}`;\n    }\n    if (elem.children.length === 0 &&\n        (opts.xmlMode\n            ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n                opts.selfClosingTags !== false\n            : // User explicitly asked for self-closing tags, even in HTML mode\n                opts.selfClosingTags && singleTag.has(elem.name))) {\n        if (!opts.xmlMode)\n            tag += \" \";\n        tag += \"/>\";\n    }\n    else {\n        tag += \">\";\n        if (elem.children.length > 0) {\n            tag += render(elem.children, opts);\n        }\n        if (opts.xmlMode || !singleTag.has(elem.name)) {\n            tag += `</${elem.name}>`;\n        }\n    }\n    return tag;\n}\nfunction renderDirective(elem) {\n    return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n    var _a;\n    let data = elem.data || \"\";\n    // If entities weren't decoded, no need to encode them back\n    if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n        !(!opts.xmlMode &&\n            elem.parent &&\n            unencodedElements.has(elem.parent.name))) {\n        data =\n            opts.xmlMode || opts.encodeEntities !== \"utf8\"\n                ? encodeXML(data)\n                : escapeText(data);\n    }\n    return data;\n}\nfunction renderCdata(elem) {\n    return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n    return `<!--${elem.data}-->`;\n}\n",null,null,null,null,"export const elementNames = new Map([\n    \"altGlyph\",\n    \"altGlyphDef\",\n    \"altGlyphItem\",\n    \"animateColor\",\n    \"animateMotion\",\n    \"animateTransform\",\n    \"clipPath\",\n    \"feBlend\",\n    \"feColorMatrix\",\n    \"feComponentTransfer\",\n    \"feComposite\",\n    \"feConvolveMatrix\",\n    \"feDiffuseLighting\",\n    \"feDisplacementMap\",\n    \"feDistantLight\",\n    \"feDropShadow\",\n    \"feFlood\",\n    \"feFuncA\",\n    \"feFuncB\",\n    \"feFuncG\",\n    \"feFuncR\",\n    \"feGaussianBlur\",\n    \"feImage\",\n    \"feMerge\",\n    \"feMergeNode\",\n    \"feMorphology\",\n    \"feOffset\",\n    \"fePointLight\",\n    \"feSpecularLighting\",\n    \"feSpotLight\",\n    \"feTile\",\n    \"feTurbulence\",\n    \"foreignObject\",\n    \"glyphRef\",\n    \"linearGradient\",\n    \"radialGradient\",\n    \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n    \"definitionURL\",\n    \"attributeName\",\n    \"attributeType\",\n    \"baseFrequency\",\n    \"baseProfile\",\n    \"calcMode\",\n    \"clipPathUnits\",\n    \"diffuseConstant\",\n    \"edgeMode\",\n    \"filterUnits\",\n    \"glyphRef\",\n    \"gradientTransform\",\n    \"gradientUnits\",\n    \"kernelMatrix\",\n    \"kernelUnitLength\",\n    \"keyPoints\",\n    \"keySplines\",\n    \"keyTimes\",\n    \"lengthAdjust\",\n    \"limitingConeAngle\",\n    \"markerHeight\",\n    \"markerUnits\",\n    \"markerWidth\",\n    \"maskContentUnits\",\n    \"maskUnits\",\n    \"numOctaves\",\n    \"pathLength\",\n    \"patternContentUnits\",\n    \"patternTransform\",\n    \"patternUnits\",\n    \"pointsAtX\",\n    \"pointsAtY\",\n    \"pointsAtZ\",\n    \"preserveAlpha\",\n    \"preserveAspectRatio\",\n    \"primitiveUnits\",\n    \"refX\",\n    \"refY\",\n    \"repeatCount\",\n    \"repeatDur\",\n    \"requiredExtensions\",\n    \"requiredFeatures\",\n    \"specularConstant\",\n    \"specularExponent\",\n    \"spreadMethod\",\n    \"startOffset\",\n    \"stdDeviation\",\n    \"stitchTiles\",\n    \"surfaceScale\",\n    \"systemLanguage\",\n    \"tableValues\",\n    \"targetX\",\n    \"targetY\",\n    \"textLength\",\n    \"viewBox\",\n    \"viewTarget\",\n    \"xChannelSelector\",\n    \"yChannelSelector\",\n    \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n",null,null,null,null,null,null,"export const Access = {\n    Public: \"public\",\n    Private: \"private\",\n    Protected: \"protected\",\n    Internal: \"internal\"\n} as const;\n\nexport type Access = (typeof Access)[keyof typeof Access];\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\n\nexport declare namespace And {\n    interface Args {\n        // The conditions to combine into a single condition */\n        conditions: AstNode[];\n    }\n}\n\nexport class And extends AstNode {\n    private conditions: AstNode[];\n\n    constructor(args: And.Args, generation: Generation) {\n        super(generation);\n        this.conditions = args.conditions;\n    }\n\n    public write(writer: Writer): void {\n        this.conditions.forEach((condition, index) => {\n            if (index > 0) {\n                writer.write(\" && \");\n            }\n            writer.writeNode(condition);\n        });\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { type ClassReference } from \"../types/ClassReference.js\";\n\nexport declare namespace Annotation {\n    interface Args {\n        /* Reference to the annotation */\n        reference: ClassReference;\n\n        argument?: string | AstNode;\n    }\n}\n\nexport class Annotation extends AstNode {\n    public readonly reference: ClassReference;\n    private argument?: string | AstNode;\n\n    constructor(args: Annotation.Args, generation: Generation) {\n        super(generation);\n        this.reference = args.reference;\n        this.argument = args.argument;\n    }\n\n    public write(writer: Writer): void {\n        writer.addReference(this.reference);\n        writer.write(\"[\");\n        this.reference.writeAsAttribute(writer);\n        if (this.argument != null) {\n            writer.write(\"(\");\n            if (typeof this.argument === \"string\") {\n                writer.write(this.argument);\n            } else {\n                this.argument.write(writer);\n            }\n            writer.write(\")\");\n        }\n        writer.write(\"]\");\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { type ClassReference } from \"../types/ClassReference.js\";\nimport { type Annotation } from \"./Annotation.js\";\n\nexport declare namespace AnnotationGroup {\n    interface Args {\n        /* Annotations or references to the annotations in the group */\n        items: (Annotation | ClassReference)[];\n    }\n}\n\nexport class AnnotationGroup extends AstNode {\n    private items: (Annotation | ClassReference)[];\n\n    constructor(args: AnnotationGroup.Args, generation: Generation) {\n        super(generation);\n        this.items = args.items;\n    }\n\n    public write(writer: Writer): void {\n        if (this.items.length === 0) {\n            return;\n        }\n\n        // Extract references from items and add them to writer\n        for (const item of this.items) {\n            const reference = this.getReference(item);\n            writer.addReference(reference);\n        }\n\n        writer.write(\"[\");\n        for (let i = 0; i < this.items.length; i++) {\n            if (i > 0) {\n                writer.write(\", \");\n            }\n            const item = this.items[i];\n            if (item != null) {\n                const reference = this.getReference(item);\n                reference.writeAsAttribute(writer);\n            }\n        }\n        writer.write(\"]\");\n    }\n\n    private getReference(item: Annotation | ClassReference): ClassReference {\n        // If it's an Annotation, extract its reference\n        if (\"reference\" in item && item.reference) {\n            return item.reference as ClassReference;\n        }\n        // Otherwise it's already a ClassReference\n        return item as ClassReference;\n    }\n}\n","import { Writer } from \"../core/Writer.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { Parameter } from \"./Parameter.js\";\n\nexport declare namespace AnonymousFunction {\n    interface Args {\n        /* Whether the method is sync or async. Defaults to false. */\n        isAsync?: boolean;\n        /* The parameters of the method */\n        parameters: Parameter[];\n        /* The body of the method */\n        body: CodeBlock;\n    }\n}\n\nexport class AnonymousFunction {\n    private readonly isAsync: boolean;\n    private readonly parameters: Parameter[];\n    private readonly body: CodeBlock;\n    constructor(methodBaseArgs: AnonymousFunction.Args) {\n        this.isAsync = methodBaseArgs.isAsync ?? false;\n        this.parameters = methodBaseArgs.parameters;\n        this.body = methodBaseArgs.body;\n    }\n\n    public write(writer: Writer): void {\n        if (this.isAsync) {\n            writer.write(\"async \");\n        }\n        writer.write(\"(\");\n        this.parameters.forEach((parameter, idx) => {\n            parameter.write(writer);\n            if (idx < this.parameters.length - 1) {\n                writer.write(\", \");\n            }\n        });\n        writer.writeLine(\") =>\");\n\n        writer.pushScope();\n        this.body?.write(writer);\n        writer.popScope();\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\n\nexport declare namespace Or {\n    interface Args {\n        // The conditions to combine into a single condition */\n        conditions: AstNode[];\n    }\n}\n\nexport class Or extends AstNode {\n    private conditions: AstNode[];\n\n    constructor(args: Or.Args, generation: Generation) {\n        super(generation);\n        this.conditions = args.conditions;\n    }\n\n    public write(writer: Writer): void {\n        this.conditions.forEach((condition, index) => {\n            if (index > 0) {\n                writer.write(\" || \");\n            }\n            writer.writeNode(condition);\n        });\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/index.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { ClassReference } from \"../types/ClassReference.js\";\nimport { Type } from \"../types/IType.js\";\n\nexport declare namespace Parameter {\n    interface Args {\n        /* The name of the parameter */\n        name: string;\n        /* The type of the parameter */\n        type: ClassReference | Type;\n        /* Docs for the parameter */\n        docs?: string;\n        /* The initializer for the parameter */\n        initializer?: string;\n        ref?: boolean;\n        out?: boolean;\n    }\n}\n\nexport class Parameter extends AstNode {\n    public readonly name: string;\n    public readonly docs: string | undefined;\n    public readonly initializer: string | undefined;\n    public readonly type: Type;\n    private readonly ref: boolean;\n    private readonly out: boolean;\n\n    constructor({ name, type, docs, initializer, ref, out }: Parameter.Args, generation: Generation) {\n        super(generation);\n        this.name = name;\n        this.type = type;\n        this.docs = docs;\n        this.initializer = initializer;\n        this.ref = ref ?? false;\n        this.out = out ?? false;\n    }\n\n    public write(writer: Writer): void {\n        if (this.ref) {\n            writer.write(\"ref \");\n        }\n        if (this.out) {\n            writer.write(\"out \");\n        }\n        writer.writeNode(this.type);\n        writer.write(` ${this.name}`);\n        if (this.initializer != null) {\n            writer.write(` = ${this.initializer}`);\n        }\n    }\n}\n","export { AstNode } from \"./AstNode.js\";\nexport { Writer } from \"./Writer.js\";\nexport { XmlDocWriter } from \"./XmlDocWriter.js\";\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\n\nexport declare namespace Switch {\n    interface Args {\n        /* The condition to switch on */\n        condition: AstNode;\n        /* The cases of the switch statement */\n        cases: Case[];\n    }\n\n    interface Case {\n        /* The label used to determine if the case is a match */\n        label: AstNode;\n        /* The value if the case is a match */\n        value: AstNode;\n    }\n}\n\nexport class Switch extends AstNode {\n    private condition: AstNode;\n    private cases: Switch.Case[];\n\n    constructor({ condition, cases }: Switch.Args, generation: Generation) {\n        super(generation);\n\n        this.condition = condition;\n        this.cases = cases;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.condition);\n        writer.write(\" switch\");\n        writer.pushScope();\n        for (const { label, value } of this.cases) {\n            writer.writeNode(label);\n            writer.write(\" => \");\n            writer.writeNode(value);\n            writer.writeLine(\",\");\n        }\n        writer.popScope();\n    }\n}\n","import { Ternary as CommonTernary } from \"@fern-api/browser-compatible-base-generator\";\nimport { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\n\nexport declare namespace Ternary {\n    type Args = CommonTernary.Args;\n}\n\nexport class Ternary extends AstNode {\n    private args: Ternary.Args;\n\n    public constructor(args: Ternary.Args, generation: Generation) {\n        super(generation);\n        this.args = args;\n    }\n\n    public write(writer: Writer): void {\n        const commonTernary = new CommonTernary(this.args);\n        return commonTernary.write(writer);\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { XmlDocWriter } from \"../core/XmlDocWriter.js\";\nexport declare namespace XmlDocBlock {\n    type Like = XmlDocBlock | XmlDocBlock.Arg;\n    type XmlDocProps = {\n        summary?: XmlDocNode;\n        codeExample?: XmlDocNode;\n        exceptions?: Map<string | AstNode, XmlDocNode>;\n        inheritdoc?: InheritdocNode;\n        remarks?: XmlDocNode;\n    };\n    type Arg = XmlDocProps | XmlDocNode;\n    type XmlDocNode = string | ((writer: XmlDocWriter) => void) | null | undefined;\n    type InheritdocNode =\n        | {\n              cref: string | undefined;\n              path: string | undefined;\n          }\n        | true;\n}\n\nexport class XmlDocBlock extends AstNode {\n    private arg: XmlDocBlock.Arg;\n\n    public constructor(arg: XmlDocBlock.Arg, generation: Generation) {\n        super(generation);\n        this.arg = arg;\n    }\n\n    public write(writer: Writer): void;\n    public write(writer: XmlDocWriter): void;\n    public write(writer: Writer | XmlDocWriter): void {\n        if (this.arg == null) {\n            return;\n        }\n        const docWriter = writer instanceof Writer ? new XmlDocWriter(writer) : writer;\n        if (typeof this.arg === \"function\") {\n            docWriter.writePrefix();\n            this.arg(docWriter);\n            docWriter.writeNewLineIfLastLineNot();\n            return;\n        }\n        if (typeof this.arg === \"string\") {\n            docWriter.writeMultilineWithEscaping(this.arg);\n            docWriter.writeNewLineIfLastLineNot();\n            return;\n        }\n        if (this.arg.summary) {\n            docWriter.writePrefix();\n            docWriter.writeOpenXmlNode(\"summary\");\n            docWriter.writeLine();\n            this.writeXmlDocNodeWithEscaping(docWriter, this.arg.summary);\n            docWriter.writeNewLineIfLastLineNot();\n            docWriter.writePrefix();\n            docWriter.writeCloseXmlNode(\"summary\");\n            docWriter.writeNewLineIfLastLineNot();\n        }\n        if (this.arg.codeExample) {\n            docWriter.writePrefix();\n            docWriter.writeOpenXmlNode(\"example\");\n            docWriter.writeOpenXmlNode(\"code\");\n            docWriter.writeLine();\n            this.writeXmlDocNodeWithEscaping(docWriter, this.arg.codeExample);\n            docWriter.writeNewLineIfLastLineNot();\n            docWriter.writePrefix();\n            docWriter.writeCloseXmlNode(\"code\");\n            docWriter.writeCloseXmlNode(\"example\");\n            docWriter.writeNewLineIfLastLineNot();\n        }\n        if (this.arg.exceptions) {\n            this.arg.exceptions.forEach((exceptionSummary, exceptionType) => {\n                docWriter.writePrefix();\n                docWriter.write('<exception cref=\"');\n                docWriter.writeNodeOrString(exceptionType);\n                docWriter.write('\">');\n                this.writeXmlDocNode(docWriter, exceptionSummary);\n                docWriter.write(\"</exception>\");\n                docWriter.writeNewLineIfLastLineNot();\n            });\n        }\n        if (this.arg.inheritdoc) {\n            docWriter.writePrefix();\n            docWriter.write(\"<inheritdoc\");\n            if (this.arg.inheritdoc !== true) {\n                if (this.arg.inheritdoc.cref) {\n                    docWriter.write(` cref=\"${this.arg.inheritdoc.cref}\"`);\n                }\n                if (this.arg.inheritdoc.path) {\n                    docWriter.write(` path=\"${this.arg.inheritdoc.path}\"`);\n                }\n            }\n            docWriter.write(\" />\");\n\n            docWriter.writeNewLineIfLastLineNot();\n        }\n        if (this.arg.remarks) {\n            docWriter.writePrefix();\n            docWriter.writeOpenXmlNode(\"remarks\");\n            docWriter.writeLine();\n            this.writeXmlDocNodeWithEscaping(docWriter, this.arg.remarks);\n            docWriter.writeNewLineIfLastLineNot();\n            docWriter.writePrefix();\n            docWriter.writeCloseXmlNode(\"remarks\");\n            docWriter.writeNewLineIfLastLineNot();\n        }\n    }\n\n    private writeXmlDocNode(writer: XmlDocWriter, node: XmlDocBlock.XmlDocNode): void {\n        if (node == null) {\n            return;\n        }\n        if (typeof node === \"function\") {\n            writer.writePrefix();\n            node(writer);\n            return;\n        }\n        if (typeof node === \"string\") {\n            writer.writePrefix();\n            writer.writeMultiline(node);\n        }\n    }\n\n    private writeXmlDocNodeWithEscaping(writer: XmlDocWriter, node: XmlDocBlock.XmlDocNode): void {\n        if (node == null) {\n            return;\n        }\n        if (typeof node === \"function\") {\n            writer.writePrefix();\n            node(writer);\n            return;\n        }\n        if (typeof node === \"string\") {\n            writer.writePrefix();\n            writer.writeMultilineWithEscaping(node);\n        }\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { Block } from \"../code/Block.js\";\nimport { type ClassInstantiation } from \"../code/ClassInstantiation.js\";\nimport { MethodInvocation } from \"../code/MethodInvocation.js\";\nimport { AstNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { Access } from \"../language/Access.js\";\nimport { Annotation } from \"../language/Annotation.js\";\nimport { CodeBlock } from \"../language/CodeBlock.js\";\nimport { Parameter } from \"../language/Parameter.js\";\nimport { XmlDocBlock } from \"../language/XmlDocBlock.js\";\nimport { ClassReference } from \"./ClassReference.js\";\nimport { DefinedType } from \"./DefinedType.js\";\nimport { Field } from \"./Field.js\";\nimport { Interface } from \"./Interface.js\";\nimport { Type } from \"./IType.js\";\nimport { MethodType } from \"./Method.js\";\n\nexport class Class extends DefinedType {\n    public static readonly ClassType = {\n        Class: \"class\",\n        Record: \"record\",\n        Struct: \"struct\",\n        RecordStruct: \"record struct\"\n    } as const;\n    public static readonly Access = Access;\n\n    public readonly static_: boolean;\n    public readonly abstract_: boolean;\n    public readonly sealed: boolean;\n    public readonly readonly: boolean;\n    public readonly parentClassReference: AstNode | undefined;\n    public readonly type: Class.ClassType;\n    public readonly summary: string | undefined;\n    private readonly doc: XmlDocBlock;\n    public readonly annotations: Annotation[] = [];\n    public readonly primaryConstructor: Class.PrimaryConstructor | undefined;\n    public readonly namespaceReferences: string[] = [];\n\n    private constructors: Class.Constructor[] = [];\n    private operators: Class.Operator[] = [];\n    private nestedClasses: Class[] = [];\n    private nestedInterfaces: Interface[] = [];\n    private rawBodyBlocks: CodeBlock[] = [];\n\n    constructor(\n        {\n            name,\n            namespace,\n            access,\n            static_,\n            abstract_,\n            sealed,\n            partial,\n            readonly,\n            parentClassReference,\n            interfaceReferences,\n            enclosingType,\n            type,\n            summary,\n            doc,\n            annotations,\n            primaryConstructor,\n            origin\n        }: Class.Args,\n        generation: Generation\n    ) {\n        super({ name, namespace, access, partial, interfaceReferences, enclosingType, origin }, generation);\n\n        this.static_ = static_ ?? false;\n        this.abstract_ = abstract_ ?? false;\n        this.sealed = sealed ?? false;\n        this.readonly = readonly ?? false;\n        this.type = type ?? Class.ClassType.Class;\n        this.summary = summary;\n        this.doc = this.csharp.xmlDocBlockOf(doc ?? { summary });\n        this.parentClassReference = parentClassReference;\n        this.annotations = (annotations ?? []).map((annotation) =>\n            annotation instanceof ClassReference ? this.csharp.annotation({ reference: annotation }) : annotation\n        );\n        this.primaryConstructor = primaryConstructor;\n    }\n\n    public addConstructor(constructor: Class.Constructor.Args): Class.Constructor {\n        const ctor = new Class.Constructor(constructor, this.generation);\n        this.constructors.push(ctor);\n        return ctor;\n    }\n\n    public addNestedClass(subClassArgs: Class.Args): Class;\n    public addNestedClass(subClass: Class): Class;\n    public addNestedClass(subClass: Class | Class.Args): Class {\n        if (!(subClass instanceof Class)) {\n            // Set the enclosing type context\n            subClass.enclosingType = this.reference;\n            subClass = new Class(subClass, this.generation);\n        }\n        if (!subClass.isNested) {\n            throw new Error(\n                `Set the enclosingType of the class ${this.name} to add the nested class ${subClass.name}.`\n            );\n        }\n        this.nestedClasses.push(subClass);\n        return subClass;\n    }\n\n    public addNestedClasses(subClasses: Class[] | Class.Args[]): void {\n        subClasses.forEach((subClass) => {\n            if (subClass instanceof Class) {\n                this.addNestedClass(subClass);\n            } else {\n                this.addNestedClass(subClass);\n            }\n        });\n    }\n\n    public addAnnotation(annotationArgs: Annotation.Args): Annotation;\n    public addAnnotation(annotation: Annotation): Annotation;\n    public addAnnotation(annotation: Annotation | Annotation.Args): Annotation {\n        if (!(annotation instanceof Annotation)) {\n            annotation = new Annotation(annotation, this.generation);\n        }\n        this.annotations.push(annotation);\n        return annotation;\n    }\n\n    public addOperator(operator: Class.Operator): void {\n        this.operators.push(operator);\n    }\n\n    public addOperators(operators: Class.Operator[]): void {\n        operators.forEach((operator) => this.addOperator(operator));\n    }\n\n    /**\n     * Adds a raw content block to the class body.\n     * This is written after operators and before nested classes.\n     * Useful for injecting pre-formatted code (e.g., nested literal struct members).\n     */\n    public addRawBodyContent(content: CodeBlock): void {\n        this.rawBodyBlocks.push(content);\n    }\n\n    public write(writer: Writer): void {\n        // tell the writer of any namespaces that this class references\n        this.namespaceReferences.forEach((namespace) => {\n            writer.addNamespace(namespace);\n        });\n\n        if (!this.isNested) {\n            writer.writeLine(`namespace ${this.namespace};`);\n            writer.newLine();\n        }\n\n        writer.writeNode(this.doc);\n        this.annotations.forEach((annotation) => {\n            annotation.write(writer);\n        });\n        writer.writeNewLineIfLastLineNot();\n        writer.write(`${this.access}`);\n        if (this.static_) {\n            writer.write(\" static\");\n        }\n        if (this.abstract_) {\n            writer.write(\" abstract\");\n        }\n        if (this.sealed) {\n            writer.write(\" sealed\");\n        }\n        if (this.readonly) {\n            writer.write(\" readonly\");\n        }\n        if (this.partial) {\n            writer.write(\" partial\");\n        }\n        writer.write(` ${this.type}`);\n        writer.write(` ${this.name}`);\n        if (this.primaryConstructor != null && this.primaryConstructor.parameters.length > 0) {\n            const primaryConstructor = this.primaryConstructor;\n            writer.write(\"(\");\n            primaryConstructor.parameters.forEach((parameter, index) => {\n                if (index > 0) {\n                    writer.write(\",\");\n                }\n                parameter.write(writer);\n            });\n            writer.write(\")\");\n        }\n        if (this.parentClassReference != null || this.interfaceReferences.length > 0) {\n            writer.write(\" : \");\n            if (this.parentClassReference != null) {\n                this.parentClassReference.write(writer);\n                if (this.interfaceReferences.length > 0) {\n                    writer.write(\", \");\n                }\n            }\n            if (this.primaryConstructor != null && this.primaryConstructor.superClassArguments.length > 0) {\n                const primaryConstructor = this.primaryConstructor;\n                writer.write(\"(\");\n                this.primaryConstructor.superClassArguments.forEach((argument, index) => {\n                    argument.write(writer);\n                    if (index < primaryConstructor.superClassArguments.length - 1) {\n                        writer.write(\", \");\n                    }\n                });\n                writer.write(\")\");\n            }\n            this.interfaceReferences.forEach((interfaceReference, index) => {\n                interfaceReference.write(writer);\n                // Don't write a comma after the last interface\n                if (index < this.interfaceReferences.length - 1) {\n                    writer.write(\", \");\n                }\n            });\n        }\n        if (!this.hasBody()) {\n            writer.write(\";\");\n            return;\n        }\n\n        writer.writeNewLineIfLastLineNot();\n        writer.pushScope();\n\n        this.writeConsts(writer);\n        this.writeFieldFields(writer);\n        this.writeConstructors(writer);\n        this.writeProperties(writer);\n        this.writeMethods(writer);\n        this.writeOperators(writer);\n        this.writeRawBodyBlocks(writer);\n        this.writeNestedClasses(writer);\n        this.writeNestedInterfaces(writer);\n\n        writer.popScope();\n    }\n\n    private hasBody(): boolean {\n        return (\n            this.fields.length > 0 ||\n            this.constructors.length > 0 ||\n            this.nestedClasses.length > 0 ||\n            this.nestedInterfaces.length > 0 ||\n            this.methods.length > 0 ||\n            this.operators.length > 0 ||\n            this.rawBodyBlocks.length > 0\n        );\n    }\n\n    private writeConstructors(writer: Writer): void {\n        this.constructors.forEach((constructor) => {\n            writer.writeNode(this.csharp.xmlDocBlockOf(constructor.doc));\n            constructor.annotations.forEach((annotation) => {\n                annotation.write(writer);\n                writer.writeNewLineIfLastLineNot();\n            });\n            writer.write(`${constructor.access} ${this.name} (`);\n            constructor.parameters.forEach((parameter, index) => {\n                parameter.write(writer);\n                if (index < constructor.parameters.length - 1) {\n                    writer.write(\", \");\n                }\n            });\n            writer.write(\")\");\n            if (constructor.baseConstructorCall != null) {\n                writer.write(\" : \");\n                constructor.baseConstructorCall.write(writer);\n            }\n            writer.pushScope();\n            constructor.body.write(writer);\n            writer.popScope();\n            writer.newLine();\n        });\n    }\n\n    private writeFields({ writer, fields }: { writer: Writer; fields: Field[] }): void {\n        fields.forEach((field, index) => {\n            field.write(writer);\n            writer.writeNewLineIfLastLineNot();\n\n            if (index < this.fields.length - 1) {\n                writer.newLine();\n            }\n        });\n    }\n\n    private writeConsts(writer: Writer): void {\n        this.writeFields({\n            writer,\n            fields: this.getFields().sort(sortByAccess).sort(sortByStatic).filter(this.fieldConstFilter())\n        });\n    }\n\n    private writeFieldFields(writer: Writer): void {\n        this.writeFields({\n            writer,\n            fields: this.getFields().sort(sortByAccess).sort(sortByStatic).filter(this.fieldFieldFilter())\n        });\n    }\n\n    private writeProperties(writer: Writer): void {\n        this.writeFields({\n            writer,\n            fields: this.getFields().sort(sortByAccess).sort(sortByStatic).filter(this.fieldPropertyFilter())\n        });\n    }\n\n    private writeMethods(writer: Writer): void {\n        this.methods\n            .sort(sortByAccess)\n            .sort(sortMethodName)\n            .sort(sortMethodType)\n            .forEach((method) => {\n                method.write(writer);\n                writer.writeNewLineIfLastLineNot();\n                writer.newLine();\n            });\n    }\n\n    private writeOperators(writer: Writer): void {\n        this.operators.forEach((operator) => {\n            this.writeOperator({ writer, operator });\n            writer.newLine();\n        });\n    }\n\n    private writeRawBodyBlocks(writer: Writer): void {\n        this.rawBodyBlocks.forEach((block) => {\n            block.write(writer);\n            writer.writeNewLineIfLastLineNot();\n        });\n    }\n\n    private writeNestedClasses(writer: Writer): void {\n        this.nestedClasses.sort(sortByAccess).forEach((nestedClass, index) => {\n            nestedClass.write(writer);\n            writer.writeNewLineIfLastLineNot();\n\n            if (index < this.fields.length - 1) {\n                writer.newLine();\n            }\n        });\n    }\n\n    private writeNestedInterfaces(writer: Writer): void {\n        this.nestedInterfaces.sort(sortByAccess).forEach((nestedInterface, index) => {\n            nestedInterface.write(writer);\n            writer.writeNewLineIfLastLineNot();\n\n            if (index < this.fields.length - 1) {\n                writer.newLine();\n            }\n        });\n    }\n\n    private fieldConstFilter(): (field: Field) => boolean {\n        return (field) => field.isConst;\n    }\n\n    private fieldFieldFilter(): (field: Field) => boolean {\n        return (field) => field.isField;\n    }\n\n    private fieldPropertyFilter(): (field: Field) => boolean {\n        return (field) => field.isProperty;\n    }\n\n    public getFields(): Field[] {\n        return this.fields;\n    }\n\n    public override get isReferenceType(): boolean {\n        return this.type === Class.ClassType.Class || this.type === Class.ClassType.Record;\n    }\n\n    private writeOperator({ writer, operator }: { writer: Writer; operator: Class.Operator }): void {\n        writer.write(\"public static \");\n        if (operator.type === Class.CastOperator.Type.Explicit || operator.type === Class.CastOperator.Type.Implicit) {\n            writer.write(`${operator.type} `);\n            writer.write(\"operator \");\n            const to = operator.to ?? this.reference;\n            writer.writeNode(to);\n            writer.write(\"(\");\n            operator.parameter.write(writer);\n        } else {\n            const normalOperator = operator as Class.NormalOperator;\n            normalOperator.return.write(writer);\n            writer.write(\" operator \");\n            writer.write(`${operator.type}(`);\n            normalOperator.parameters.forEach((parameter, idx) => {\n                parameter.write(writer);\n                if (idx < normalOperator.parameters.length - 1) {\n                    writer.write(\", \");\n                }\n            });\n        }\n        if (operator.useExpressionBody) {\n            writer.write(\") => \");\n            writer.writeNodeStatement(operator.body);\n        } else {\n            writer.write(\") {\");\n            writer.writeNode(operator.body);\n            writer.writeLine(\"}\");\n        }\n    }\n\n    public addNamespaceReference(namespace: string) {\n        this.namespaceReferences.push(namespace);\n    }\n}\n\nexport namespace Class {\n    export type ClassType = (typeof Class.ClassType)[keyof typeof Class.ClassType];\n    export interface Args extends DefinedType.Args {\n        /* Defaults to false */\n        static_?: boolean;\n        /* Defaults to false */\n        abstract_?: boolean;\n        /* Defaults to false */\n        sealed?: boolean;\n        /* Defaults to false */\n        readonly?: boolean;\n        /* Defaults to class */\n        type?: Class.ClassType;\n        /* Summary for the class */\n        summary?: string;\n        doc?: XmlDocBlock.Like;\n        /* The class to inherit from if any */\n        parentClassReference?: AstNode;\n        /* Any annotations to add to the class */\n        annotations?: (Annotation | ClassReference)[];\n        /* Any annotations to add to the class */\n        primaryConstructor?: PrimaryConstructor;\n    }\n\n    export namespace Constructor {\n        export interface Args {\n            /* The XML doc block for the constructor */\n            doc?: XmlDocBlock.Like;\n            /* The body of the constructor */\n            body?: CodeBlock;\n            /* The parameters of the constructor */\n            parameters?: Parameter[];\n            /* The access of the constructor */\n            access?: Access;\n            /* The base constructor call, ex: public SomeClassName(string message) : base(message) { } */\n            baseConstructorCall?: MethodInvocation;\n            /* Any annotations to add to the constructor */\n            annotations?: Annotation[];\n        }\n    }\n    export class Constructor {\n        /** The XML doc block for the constructor */\n        doc?: XmlDocBlock.Like;\n        /* The body of the constructor */\n        body: Block;\n        /* The parameters of the constructor */\n        parameters: Parameter[];\n        /* The access of the constructor */\n        access: Access;\n        /* The base constructor call, ex: public SomeClassName(string message) : base(message) { } */\n        baseConstructorCall?: MethodInvocation;\n        /* Any annotations on the constructor */\n        annotations: Annotation[];\n\n        constructor(\n            { doc, body, parameters, access, baseConstructorCall, annotations }: Constructor.Args,\n            private readonly generation: Generation\n        ) {\n            this.parameters = parameters ?? [];\n            this.access = access ?? Access.Public;\n            this.doc = doc;\n            this.annotations = annotations ?? [];\n            this.body = new Block({}, this.generation);\n            if (body != null) {\n                this.body.append(body as CodeBlock);\n            }\n\n            this.baseConstructorCall = baseConstructorCall;\n        }\n\n        addParameter(args: Parameter.Args) {\n            const parameter = new Parameter(args, this.generation);\n            this.parameters.push(parameter);\n            return parameter;\n        }\n    }\n\n    export interface PrimaryConstructor {\n        /* The parameters of the constructor */\n        parameters: Parameter[];\n        /* If this class extends another class, these will be the arguments passed to that parent class's constructor */\n        superClassArguments: (CodeBlock | ClassInstantiation)[];\n    }\n\n    export interface CastOperator {\n        parameter: Parameter;\n        type: CastOperator.Type;\n        to?: Type;\n        body: CodeBlock;\n        useExpressionBody?: boolean;\n    }\n    export namespace CastOperator {\n        export const Type = {\n            Implicit: \"implicit\",\n            Explicit: \"explicit\"\n        } as const;\n        export type Type = (typeof CastOperator.Type)[keyof typeof CastOperator.Type];\n    }\n    export interface NormalOperator {\n        type: \"==\" | \"!=\";\n        parameters: Parameter[];\n        return: Type;\n        body: CodeBlock;\n        useExpressionBody?: boolean;\n    }\n    export type Operator = CastOperator | NormalOperator;\n}\n\nfunction accessSorter(access: Access | undefined): number {\n    switch (access) {\n        case undefined:\n            return 0;\n        case Access.Private:\n            return 1;\n        case Access.Protected:\n            return 2;\n        case Access.Internal:\n            return 3;\n        case Access.Public:\n            return 4;\n    }\n}\n\nfunction sortByAccess(a: { access: Access | undefined }, b: { access: Access | undefined }): number {\n    return accessSorter(a.access) - accessSorter(b.access);\n}\n\nfunction sortByStatic(a: { isStatic: boolean }, b: { isStatic: boolean }): number {\n    return a.isStatic === b.isStatic ? 0 : a.isStatic ? -1 : 1;\n}\n\nfunction sortMethodType(a: { type: MethodType }, b: { type: MethodType }): number {\n    if (a.type === MethodType.STATIC && b.type !== MethodType.STATIC) {\n        return -1;\n    }\n    if (a.type !== MethodType.STATIC && b.type === MethodType.STATIC) {\n        return 1;\n    }\n    return 0;\n}\n\nfunction sortMethodName(a: { name: string }, b: { name: string }): number {\n    // put FromProto and ToProto 3rd from last\n    if (a.name === \"FromProto\" || a.name === \"ToProto\") {\n        return b.name === \"Equals\" || b.name === \"ToString\" ? -1 : 1;\n    }\n    if (b.name === \"FromProto\" || b.name === \"ToProto\") {\n        return a.name === \"Equals\" || a.name === \"ToString\" ? 1 : -1;\n    }\n    // put ToString last\n    if (a.name === \"ToString\") {\n        return 1;\n    }\n    if (b.name === \"ToString\") {\n        return -1;\n    }\n    // put Equals second to last\n    if (a.name === \"Equals\") {\n        return b.name === \"ToString\" ? -1 : 1;\n    }\n    if (b.name === \"Equals\") {\n        return a.name === \"ToString\" ? 1 : -1;\n    }\n    return 0;\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { type Provenance } from \"../../context/model-navigator.js\";\nimport { fail } from \"../../utils/fail.js\";\nimport { is } from \"../../utils/type-guards.js\";\nimport { Literal } from \"../code/Literal.js\";\nimport { Node } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { Access } from \"../language/Access.js\";\nimport { type ClassReference } from \"./ClassReference.js\";\nimport { Field, FieldArgsWithName, FieldArgsWithOrigin } from \"./Field.js\";\nimport { type Type } from \"./IType.js\";\nimport { Method } from \"./Method.js\";\nimport { Nullable, Optional } from \"./Type.js\";\n\nexport declare namespace DefinedType {\n    interface Args extends Node.Args {\n        /* The name of the C# class */\n        name?: string;\n        /* The namespace of the C# class*/\n        namespace?: string;\n        /* The type that this class is nested in */\n        enclosingType?: ClassReference;\n\n        /* The access level of the C# class */\n        access: Access;\n        /* Defaults to false */\n        partial?: boolean;\n        /* Any interfaces the interface implements */\n        interfaceReferences?: ClassReference[];\n    }\n}\n\nexport abstract class DefinedType extends Node implements Type {\n    public readonly access: Access;\n    public readonly partial: boolean;\n    public readonly reference: ClassReference;\n    public readonly interfaceReferences: ClassReference[];\n\n    protected fields: Field[] = [];\n    protected methods: Method[] = [];\n\n    constructor(\n        { name, namespace, access, partial, interfaceReferences, enclosingType, origin }: DefinedType.Args,\n        generation: Generation\n    ) {\n        super(origin, generation);\n\n        // resolve the expected name for the type\n        name =\n            name || (origin ? this.model.getClassNameFor(origin) : fail(\"Class/Interface name or origin is required\"));\n\n        // build the class reference from the arguments.\n        // if the name has to be adjusted it will be done when the class reference is created.\n        this.reference = enclosingType\n            ? this.csharp.classReference({\n                  name: name,\n                  enclosingType: enclosingType\n              })\n            : this.csharp.classReference({\n                  name: name,\n                  namespace: namespace || fail(\"Class/Interface: Namespace or enclosingType is required \")\n              });\n\n        this.access = access;\n        this.partial = partial ?? false;\n        this.interfaceReferences = interfaceReferences ?? [];\n    }\n\n    public abstract override write(writer: Writer): void;\n\n    public get name() {\n        return this.reference.name;\n    }\n    public get namespace() {\n        return this.reference.namespace;\n    }\n    public get enclosingType() {\n        return this.reference.enclosingType;\n    }\n\n    public get isNested(): boolean {\n        return this.enclosingType != null;\n    }\n\n    public explicit(name: string): Provenance {\n        return this.origin\n            ? this.model.explicit(is.Provenance(this.origin) ? this.origin.node : this.origin, name)\n            : fail(\n                  `Cannot create explicit named member '${name}' on '${this.name}' because the class is not bound to an origin.`\n              );\n    }\n\n    public getField(origin: Provenance): Field | undefined {\n        return this.fields.find((each) => this.model.provenance(each.origin)?.jsonPath === origin.jsonPath);\n    }\n\n    public addField(args: FieldArgsWithOrigin): Field;\n    public addField(args: FieldArgsWithName): Field;\n    public addField(args: Field.Args): Field {\n        args.enclosingType = this.reference;\n        const field = new Field(args, this.generation);\n        this.fields.push(field);\n        return field;\n    }\n\n    public addMethod(args: Method.Args): Method {\n        args.enclosingType = this.reference;\n        const method = new Method(args, this.generation);\n        this.methods.push(method);\n        return method;\n    }\n\n    public get multipartMethodName(): string {\n        return \"AddJsonPart\";\n    }\n\n    public get multipartMethodNameForCollection(): string {\n        return \"AddJsonParts\";\n    }\n\n    public get isOptional(): boolean {\n        return false;\n    }\n\n    public get isCollection(): boolean {\n        return false;\n    }\n\n    public get isReferenceType(): boolean | undefined {\n        return undefined;\n    }\n\n    public asOptional(): Type {\n        return new Optional(this, this.generation);\n    }\n\n    public asNullable(): Type {\n        return new Nullable(this, this.generation);\n    }\n\n    public asNonOptional(): Type {\n        return this;\n    }\n\n    public get defaultValue(): Literal {\n        return this.csharp.Literal.null();\n    }\n\n    public get fullyQualifiedName(): string {\n        return this.reference.fullyQualifiedName;\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { type Origin } from \"../../context/model-navigator.js\";\nimport { fail } from \"../../utils/fail.js\";\nimport { is } from \"../../utils/type-guards.js\";\nimport { type ClassInstantiation } from \"../code/ClassInstantiation.js\";\nimport { MemberNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { Access } from \"../language/Access.js\";\nimport { Annotation } from \"../language/Annotation.js\";\nimport { AnnotationGroup } from \"../language/AnnotationGroup.js\";\nimport { CodeBlock } from \"../language/CodeBlock.js\";\nimport { XmlDocBlock } from \"../language/XmlDocBlock.js\";\nimport { ClassReference } from \"./ClassReference.js\";\nimport { type Type } from \"./IType.js\";\n\nexport declare namespace Field {\n    export type Accessors = {\n        get?: (writer: Writer) => void;\n        set?: (writer: Writer) => void;\n        init?: (writer: Writer) => void;\n        /** For C# events: the add accessor */\n        add?: (writer: Writer) => void;\n        /** For C# events: the remove accessor */\n        remove?: (writer: Writer) => void;\n    };\n\n    interface Args extends MemberNode.Args {\n        /* The name of the field */\n        name?: string;\n        /* The type of the field */\n        type: Type | ClassReference;\n        /* The access level of the method */\n        access?: Access;\n        /* Whether the the field is a constant value */\n        const_?: boolean;\n        /* Whether the the field should use the new keyword */\n        new_?: boolean;\n        /*\n        The access modifier for the get, no get is generated if false.\n        If true, get is added without an access modifier.\n        Defaults to false. */\n        get?: Access | boolean;\n        /*\n        The access modifier for the init, no init is generated if false.\n        If true, init is added without an access modifier.\n        Cannot be used with a set method.\n        Defaults to false.\n        */\n        init?: Access | boolean;\n        /*\n        The access modifier for the set, no get is generated if false.\n        If true, set is added without an access modifier.\n        Cannot be used with an init method.\n        Defaults to false.\n        */\n        set?: Access | boolean;\n        /* Whether the field is static */\n        static_?: boolean;\n        /* Whether the field is readonly */\n        readonly?: boolean;\n        /* Field annotations */\n        annotations?: (Annotation | AnnotationGroup | ClassReference)[];\n        /* The initializer for the field */\n        initializer?: CodeBlock | ClassInstantiation;\n        /* The summary tag (used for describing the field) */\n        summary?: string;\n        /* The doc block (used for describing the field) */\n        doc?: XmlDocBlock.Like;\n        /* JSON value for this particular field */\n        jsonPropertyName?: string;\n        /* If true, we will consider setting the field to required based on its type. If false, we will not. */\n        useRequired?: boolean;\n        /* If true, the default initializer (if any) is not included. */\n        skipDefaultInitializer?: boolean;\n        /* If specified, use the interface name in front of the field name */\n        interfaceReference?: ClassReference;\n        /* If true, the field is overridden */\n        override?: boolean;\n\n        /* If specified, use the accessor methods for the field implementation */\n        accessors?: Accessors;\n        /* If true, the field is a C# event (uses event keyword with add/remove accessors) */\n        isEvent?: boolean;\n    }\n}\n\nexport interface FieldArgsWithOrigin extends Field.Args {\n    origin: Origin;\n    // enclosingType: ClassReference|Interface|Class;\n    name?: never;\n}\n\nexport interface FieldArgsWithName extends Field.Args {\n    name: string;\n    origin?: never;\n}\n\nexport class Field extends MemberNode {\n    public readonly name: string;\n    public readonly access: Access | undefined;\n    public readonly type: Type;\n    private readonly const_: boolean;\n    private readonly static_: boolean;\n    private readonly get: Access | boolean;\n    private readonly init: Access | boolean;\n    private readonly set: Access | boolean;\n    private readonly new_: boolean;\n    private readonly annotations: (Annotation | AnnotationGroup)[];\n    private readonly initializer?: CodeBlock | ClassInstantiation;\n    private readonly doc: XmlDocBlock;\n    private readonly jsonPropertyName?: string;\n    private readonly readonly?: boolean;\n    private readonly useRequired: boolean;\n    private readonly skipDefaultInitializer: boolean;\n    private readonly interfaceReference?: ClassReference;\n    private readonly accessors?: {\n        get?: (writer: Writer) => void;\n        set?: (writer: Writer) => void;\n        init?: (writer: Writer) => void;\n        add?: (writer: Writer) => void;\n        remove?: (writer: Writer) => void;\n    };\n    private readonly override?: boolean;\n    private readonly isEvent_: boolean;\n    constructor(\n        {\n            name,\n            type,\n            access,\n            const_,\n            new_,\n            get,\n            init,\n            set,\n            annotations,\n            initializer,\n            summary,\n            doc,\n            jsonPropertyName,\n            readonly,\n            static_,\n            useRequired,\n            skipDefaultInitializer,\n            interfaceReference,\n            accessors,\n            override,\n            isEvent,\n            origin,\n            enclosingType\n        }: Field.Args,\n        generation: Generation\n    ) {\n        super({ enclosingType }, origin, generation);\n\n        if (!enclosingType) {\n            throw new Error(\"Enclosing type is required\");\n        }\n\n        name = name || (origin ? this.model.getPropertyNameFor(origin) : fail(\"Field name or origin is required\"));\n\n        // verify that the field name is available or get a new name\n        this.name = (enclosingType instanceof ClassReference ? enclosingType : enclosingType.reference).registerField(\n            name,\n            origin,\n            this\n        );\n\n        this.type = type;\n        this.const_ = const_ ?? false;\n        this.new_ = new_ ?? false;\n        this.access = access;\n        this.get = get ?? !!accessors?.get;\n        this.set = set ?? !!accessors?.set;\n        this.init = init ?? !!accessors?.init;\n        this.annotations = (annotations ?? []).map((annotation) =>\n            annotation instanceof ClassReference ? this.csharp.annotation({ reference: annotation }) : annotation\n        );\n        this.initializer = initializer;\n        this.doc = this.csharp.xmlDocBlockOf(doc ?? { summary });\n        this.jsonPropertyName = jsonPropertyName;\n        this.readonly = readonly;\n        this.static_ = static_ ?? false;\n        this.useRequired = useRequired ?? false;\n        this.skipDefaultInitializer = skipDefaultInitializer ?? false;\n        this.interfaceReference = interfaceReference;\n        this.accessors = accessors;\n        this.override = override ?? false;\n        this.isEvent_ = isEvent ?? false;\n        if (this.jsonPropertyName != null) {\n            this.annotations = [\n                this.csharp.annotation({\n                    reference: this.System.Text.Json.Serialization.JsonPropertyName,\n                    argument: `\"${this.jsonPropertyName}\"`\n                }),\n                ...this.annotations\n            ];\n        }\n    }\n\n    public get needsInitialization(): boolean {\n        return !this.type.isOptional && this.initializer == null;\n    }\n\n    public get isConst(): boolean {\n        return this.const_;\n    }\n\n    public get isField(): boolean {\n        if (this.const_) {\n            return false;\n        }\n        return !(this.get || this.init || this.set);\n    }\n\n    public get isProperty(): boolean {\n        if (this.const_) {\n            return false;\n        }\n        return !!(this.get || this.init || this.set);\n    }\n\n    public get isStatic(): boolean {\n        return this.static_;\n    }\n\n    public get isRequired(): boolean {\n        return this.useRequired;\n    }\n\n    public get isOptional(): boolean {\n        return this.type.isOptional;\n    }\n\n    public get isEvent(): boolean {\n        return this.isEvent_;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.doc);\n\n        for (const annotation of this.annotations) {\n            annotation.write(writer);\n        }\n        writer.writeNewLineIfLastLineNot();\n\n        if (this.override) {\n            writer.write(\"override \");\n        }\n\n        if (this.access) {\n            writer.write(`${this.access} `);\n        }\n        if (this.const_) {\n            writer.write(\"const \");\n        }\n        if (this.new_) {\n            writer.write(\"new \");\n        }\n        const isOptional = this.type.isOptional;\n        const isCollection = this.type.asNonOptional().isCollection;\n        if (this.useRequired && !isOptional && !isCollection && this.initializer == null) {\n            writer.write(\"required \");\n        }\n        if (this.static_) {\n            writer.write(\"static \");\n        }\n        if (this.readonly) {\n            writer.write(\"readonly \");\n        }\n        // For C# events, add the event keyword\n        if (this.isEvent_) {\n            writer.write(\"event \");\n        }\n        writer.writeNode(this.type);\n        writer.write(\" \");\n        if (this.interfaceReference) {\n            writer.write(`${this.interfaceReference.name}.`);\n        }\n        writer.write(this.name);\n\n        // Handle C# events with add/remove accessors\n        if (this.isEvent_ && this.accessors?.add && this.accessors?.remove) {\n            writer.writeLine(\"\");\n            writer.writeLine(\"{\");\n            writer.indent();\n            writer.write(\"add => \");\n            this.accessors.add(writer);\n            writer.writeLine(\";\");\n            writer.write(\"remove => \");\n            this.accessors.remove(writer);\n            writer.writeLine(\";\");\n            writer.dedent();\n            writer.writeLine(\"}\");\n            return;\n        }\n\n        // TODO: refactor useExpressionBodiedPropertySyntax to be an argument that defaults to false\n        // expression body will run the code every time, which is not the intended/expected behavior of initializer\n        const useExpressionBodiedPropertySyntax = this.get && !this.init && !this.set && this.initializer != null;\n        if ((this.get || this.init || this.set) && !useExpressionBodiedPropertySyntax) {\n            writer.write(\" { \");\n            if (this.get) {\n                if (!this.hasSameAccess(this.get)) {\n                    writer.write(`${this.get} `);\n                }\n                if (this.accessors?.get) {\n                    writer.write(\"get\");\n                    writer.write(` => `);\n                    this.accessors.get(writer);\n                    writer.writeTextStatement(\"\");\n                } else {\n                    writer.write(\"get; \");\n                }\n            }\n            if (this.init) {\n                // if init is accessible to the end user (public, or protected through inheritance),\n                // we should not expose init to the user on .NET Framework\n                const needsFallback =\n                    (this.access === Access.Public || this.access === Access.Protected) &&\n                    (this.init === true || this.init === Access.Public || this.init === Access.Protected);\n                if (needsFallback) {\n                    writer.writeLine();\n                    writer.writeNoIndent(\"#if NET5_0_OR_GREATER\\n\");\n                    if (!this.hasSameAccess(this.init)) {\n                        writer.write(`${this.init} `);\n                    }\n                    writer.writeTextStatement(\"init\");\n                    writer.writeNoIndent(\"#else\\n\");\n                    writer.writeTextStatement(\"set\");\n                    writer.writeNoIndent(\"#endif\\n\");\n                } else {\n                    if (!this.hasSameAccess(this.init)) {\n                        writer.write(`${this.init} `);\n                    }\n\n                    if (this.accessors?.init) {\n                        writer.write(\"init\");\n                        writer.write(` => `);\n                        this.accessors.init(writer);\n                        writer.writeTextStatement(\"\");\n                    } else {\n                        writer.write(\"init; \");\n                    }\n                }\n            }\n            if (this.set) {\n                if (!this.hasSameAccess(this.set)) {\n                    writer.write(`${this.set} `);\n                }\n\n                if (this.accessors?.set) {\n                    writer.write(\"set\");\n                    writer.write(` => `);\n                    this.accessors.set(writer);\n                    writer.writeTextStatement(\"\");\n                } else {\n                    writer.write(\"set; \");\n                }\n            }\n            writer.write(\"}\");\n        }\n\n        if (this.initializer != null) {\n            if (useExpressionBodiedPropertySyntax) {\n                writer.write(\" => \");\n            } else {\n                writer.write(\" = \");\n            }\n            this.initializer.write(writer);\n            writer.writeLine(\";\");\n        } else if (!this.skipDefaultInitializer && !isOptional && isCollection) {\n            if (is.Type(this.type)) {\n                this.type.writeEmptyCollectionInitializer(writer);\n            }\n        } else if (!this.get && !this.init) {\n            writer.writeLine(\";\");\n        }\n    }\n\n    private hasSameAccess(access: Access | boolean): boolean {\n        return access === true || access === this.access;\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { type Generation } from \"../../context/generation-info.js\";\nimport { is } from \"../../utils/type-guards.js\";\nimport { MemberNode } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { Access } from \"../language/Access.js\";\nimport { Annotation } from \"../language/Annotation.js\";\nimport { CodeBlock } from \"../language/CodeBlock.js\";\nimport { Parameter } from \"../language/Parameter.js\";\nimport { XmlDocBlock } from \"../language/XmlDocBlock.js\";\nimport { ClassReference } from \"./ClassReference.js\";\nimport { Type } from \"./IType.js\";\n\nexport enum MethodType {\n    INSTANCE,\n    STATIC\n}\n\nexport class Method extends MemberNode {\n    public readonly name: string;\n    public readonly isAsync: boolean;\n    public readonly access: Access | undefined;\n    public readonly return: Type | undefined;\n    public readonly noBody: boolean;\n    public readonly body: CodeBlock | undefined;\n    private readonly bodyType: Method.BodyType;\n    public readonly summary: string | undefined;\n    private readonly doc: XmlDocBlock;\n    public readonly type: MethodType;\n    public readonly reference: ClassReference | undefined;\n    public readonly override: boolean;\n    private readonly parameters: Parameter[];\n    private readonly typeParameters: Type[];\n    private readonly annotations: Annotation[];\n    private readonly interfaceReference?: ClassReference;\n\n    constructor(\n        {\n            name,\n            isAsync,\n            override,\n            access,\n            return_,\n            body,\n            noBody,\n            bodyType,\n            summary,\n            doc,\n            type,\n            classReference,\n            parameters,\n            typeParameters,\n            annotations,\n            codeExample,\n            interfaceReference,\n            origin,\n            enclosingType\n        }: Method.Args,\n        generation: Generation\n    ) {\n        super({ enclosingType }, origin, generation);\n        this.name = name;\n        this.isAsync = isAsync ?? false;\n        this.override = override ?? false;\n        this.access = access;\n        this.return = return_;\n        this.noBody = noBody ?? false;\n        this.body = body;\n        this.bodyType = bodyType ?? Method.BodyType.Statement;\n        this.summary = summary;\n        this.doc = this.csharp.xmlDocBlockOf(doc ?? { summary, codeExample });\n        this.type = type ?? MethodType.INSTANCE;\n        this.reference = classReference;\n        this.parameters = parameters ?? [];\n        this.typeParameters = typeParameters ?? [];\n        this.annotations = (annotations ?? []).map((annotation) =>\n            annotation instanceof ClassReference ? this.csharp.annotation({ reference: annotation }) : annotation\n        );\n        this.interfaceReference = interfaceReference;\n    }\n\n    public get isAsyncEnumerable(): boolean {\n        return is.AsyncEnumerable(this.return);\n    }\n\n    public addParameter(parameterArgs: Parameter.Args): Parameter;\n    public addParameter(parameter: Parameter): Parameter;\n    public addParameter(parameter: Parameter | Parameter.Args): Parameter {\n        if (!(parameter instanceof Parameter)) {\n            parameter = new Parameter(parameter, this.generation);\n        }\n        this.parameters.push(parameter);\n        return parameter;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.doc);\n\n        this.annotations.forEach((annotation) => {\n            annotation.write(writer);\n        });\n        writer.writeNewLineIfLastLineNot();\n\n        if (this.access) {\n            writer.write(`${this.access} `);\n        }\n        if (this.type === MethodType.STATIC) {\n            writer.write(\"static \");\n        }\n        if (this.isAsync) {\n            writer.write(\"async \");\n        }\n        if (this.override) {\n            writer.write(\"override \");\n        }\n        if (this.return == null) {\n            if (this.isAsync) {\n                writer.writeNode(this.System.Threading.Tasks.Task());\n                writer.write(\" \");\n            } else {\n                writer.write(\"void \");\n            }\n        } else {\n            if (this.isAsync && !this.isAsyncEnumerable) {\n                writer.writeNode(this.System.Threading.Tasks.Task(this.return));\n            } else {\n                this.return.write(writer);\n            }\n            writer.write(\" \");\n        }\n        if (this.interfaceReference) {\n            writer.write(`${this.interfaceReference.name}.`);\n        }\n        writer.write(this.name);\n        if (this.typeParameters.length > 0) {\n            writer.write(\"<\");\n            this.typeParameters.forEach((typeParameter, idx) => {\n                typeParameter.write(writer);\n                if (idx < this.typeParameters.length - 1) {\n                    writer.write(\", \");\n                }\n            });\n            writer.write(\">\");\n        }\n        writer.write(\"(\");\n        this.parameters.forEach((parameter, idx) => {\n            parameter.write(writer);\n            if (idx < this.parameters.length - 1) {\n                writer.write(\", \");\n            }\n        });\n        writer.write(\")\");\n        if (this.noBody) {\n            writer.writeLine(\";\");\n        } else {\n            switch (this.bodyType) {\n                case Method.BodyType.Statement:\n                    writer.write(\" \");\n                    writer.pushScope();\n\n                    this.body?.write(writer);\n                    writer.popScope();\n                    break;\n                case Method.BodyType.Expression:\n                    writer.write(\" => \");\n                    this.body?.write(writer);\n                    writer.writeSemicolonIfLastCharacterIsNot();\n                    break;\n                default:\n                    assertNever(this.bodyType);\n            }\n        }\n    }\n\n    public getParameters(): Parameter[] {\n        return this.parameters;\n    }\n}\n\nexport namespace Method {\n    export interface Args extends MemberNode.Args {\n        /* Any annotations to add to the method */\n        annotations?: (Annotation | ClassReference)[];\n        /* Summary for the method */\n        summary?: string;\n        doc?: XmlDocBlock.Like;\n        /* The access of the method */\n        access?: Access;\n        /* The type of the method, defaults to INSTANCE */\n        type?: MethodType;\n        /* Whether the method overrides a method in it's base class */\n        override?: boolean;\n        /* Whether the method is sync or async. Defaults to false. */\n        isAsync?: boolean;\n        /* The return type of the method */\n        return_?: ClassReference | Type;\n        /* The name of the method */\n        name: string;\n        /* The parameters of the method */\n        typeParameters?: Type[];\n        /* The parameters of the method */\n        parameters?: Parameter[];\n        /* If true, no method body will be written. This is for interface methods. */\n        noBody?: boolean;\n        /* The body of the method */\n        body?: CodeBlock;\n        /* The body type of the method */\n        bodyType?: BodyType;\n        /* The class this method belongs to, if any */\n        classReference?: ClassReference;\n        /* Any code example to add to the method */\n        codeExample?: string;\n        /* If specified, use the interface name in front of the method name */\n        interfaceReference?: ClassReference;\n    }\n\n    export const BodyType = {\n        Statement: \"statement\",\n        Expression: \"expression\"\n    } as const;\n    export type BodyType = (typeof BodyType)[keyof typeof BodyType];\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { Node } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { Access } from \"../language/Access.js\";\nimport { Annotation } from \"../language/Annotation.js\";\nimport { type ClassReference } from \"./ClassReference.js\";\n\nexport declare namespace Enum {\n    interface Args extends Node.Args {\n        /* The name of the C# enum */\n        name: string;\n        /* The namespace of the C# enum*/\n        namespace: string;\n        /* The access level of the C# enum */\n        access: Access;\n        /* Enum declaration annotations */\n        annotations?: Annotation[];\n    }\n\n    interface Member {\n        /* The name of the enum field */\n        name: string;\n        /* The value of the enum field */\n        value: string;\n    }\n\n    interface _Member {\n        /* The name of the enum field */\n        name: string;\n        /* The wire value string of the enum field */\n        wireValue: string;\n        /* The annotation for the enum field */\n        value: Annotation;\n    }\n}\n\nexport class Enum extends Node {\n    public get name() {\n        return this.reference.name;\n    }\n    public get namespace() {\n        return this.reference.namespace;\n    }\n\n    public readonly access: Access;\n    public readonly reference: ClassReference;\n\n    private annotations: Annotation[];\n    private fields: Enum._Member[] = [];\n    private generateSerializer = false;\n    private serializerClassReference: ClassReference | undefined;\n\n    constructor({ name, namespace, access, annotations, origin }: Enum.Args, generation: Generation) {\n        super(origin, generation);\n        this.reference = this.csharp.classReference({\n            name: name,\n            namespace: namespace,\n            origin\n        });\n\n        this.access = access;\n        this.annotations = annotations ?? [];\n    }\n\n    public getNamespace(): string {\n        return this.namespace;\n    }\n\n    public addAnnotation(annotation: Annotation): void {\n        this.annotations.push(annotation);\n    }\n\n    public addMember(field: Enum.Member): void {\n        this.fields.push({\n            name: field.name,\n            wireValue: field.value,\n            value: this.csharp.annotation({\n                reference: this.System.Runtime.Serialization.EnumMember,\n                argument: this.csharp.codeblock((writer) => {\n                    writer.write(\"Value = \");\n                    writer.writeNode(this.csharp.string_({ string: field.value }));\n                })\n            })\n        });\n    }\n\n    /**\n     * Enables generation of a companion JsonConverter class that uses dictionary lookups\n     * instead of reflection.\n     */\n    public enableSerializerGeneration(): ClassReference {\n        this.generateSerializer = true;\n        this.serializerClassReference = this.csharp.classReference({\n            name: `${this.name}Serializer`,\n            namespace: this.namespace\n        });\n        return this.serializerClassReference;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeLine(`namespace ${this.namespace};`);\n        writer.newLine();\n\n        for (const annotation of this.annotations) {\n            annotation.write(writer);\n        }\n        writer.writeNewLineIfLastLineNot();\n\n        writer.write(`${this.access} `);\n        writer.write(\"enum \");\n        writer.writeLine(`${this.name}`);\n        writer.pushScope();\n\n        this.fields.forEach((field, index) => {\n            field.value.write(writer);\n            writer.write(field.name);\n            if (index < this.fields.length - 1) {\n                writer.writeLine(\",\");\n                writer.newLine();\n            }\n        });\n        writer.writeNewLineIfLastLineNot();\n        writer.popScope();\n\n        if (this.generateSerializer) {\n            this.writeSerializerClass(writer);\n        }\n    }\n\n    private writeSerializerClass(writer: Writer): void {\n        writer.newLine();\n        writer.writeLine(\n            `internal class ${this.name}Serializer : global::System.Text.Json.Serialization.JsonConverter<${this.name}>`\n        );\n        writer.pushScope();\n\n        // Write string-to-enum dictionary\n        writer.writeLine(\n            `private static readonly global::System.Collections.Generic.Dictionary<string, ${this.name}> _stringToEnum = new()`\n        );\n        writer.pushScope();\n        for (const field of this.fields) {\n            writer.writeLine(`{ ${JSON.stringify(field.wireValue)}, ${this.name}.${field.name} },`);\n        }\n        writer.popScope(false);\n        writer.writeLine(\";\");\n        writer.newLine();\n\n        // Write enum-to-string dictionary\n        writer.writeLine(\n            `private static readonly global::System.Collections.Generic.Dictionary<${this.name}, string> _enumToString = new()`\n        );\n        writer.pushScope();\n        for (const field of this.fields) {\n            writer.writeLine(`{ ${this.name}.${field.name}, ${JSON.stringify(field.wireValue)} },`);\n        }\n        writer.popScope(false);\n        writer.writeLine(\";\");\n        writer.newLine();\n\n        // Write Read method\n        writer.writeLine(\n            `public override ${this.name} Read(ref global::System.Text.Json.Utf8JsonReader reader, global::System.Type typeToConvert, global::System.Text.Json.JsonSerializerOptions options)`\n        );\n        writer.pushScope();\n        writer.writeLine(\n            `var stringValue = reader.GetString() ?? throw new global::System.Exception(\"The JSON value could not be read as a string.\");`\n        );\n        writer.writeLine(`return _stringToEnum.TryGetValue(stringValue, out var enumValue) ? enumValue : default;`);\n        writer.popScope();\n        writer.newLine();\n\n        // Write Write method\n        writer.writeLine(\n            `public override void Write(global::System.Text.Json.Utf8JsonWriter writer, ${this.name} value, global::System.Text.Json.JsonSerializerOptions options)`\n        );\n        writer.pushScope();\n        writer.writeLine(\n            `writer.WriteStringValue(_enumToString.TryGetValue(value, out var stringValue) ? stringValue : null);`\n        );\n        writer.popScope();\n        writer.newLine();\n\n        // Write ReadAsPropertyName method\n        writer.writeLine(\n            `public override ${this.name} ReadAsPropertyName(ref global::System.Text.Json.Utf8JsonReader reader, global::System.Type typeToConvert, global::System.Text.Json.JsonSerializerOptions options)`\n        );\n        writer.pushScope();\n        writer.writeLine(\n            `var stringValue = reader.GetString() ?? throw new global::System.Exception(\"The JSON property name could not be read as a string.\");`\n        );\n        writer.writeLine(`return _stringToEnum.TryGetValue(stringValue, out var enumValue) ? enumValue : default;`);\n        writer.popScope();\n        writer.newLine();\n\n        // Write WriteAsPropertyName method\n        writer.writeLine(\n            `public override void WriteAsPropertyName(global::System.Text.Json.Utf8JsonWriter writer, ${this.name} value, global::System.Text.Json.JsonSerializerOptions options)`\n        );\n        writer.pushScope();\n        writer.writeLine(\n            `writer.WritePropertyName(_enumToString.TryGetValue(value, out var stringValue) ? stringValue : value.ToString());`\n        );\n        writer.popScope();\n\n        writer.popScope();\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { DefinedType } from \"./DefinedType.js\";\n\nexport declare namespace Interface {\n    interface Args extends DefinedType.Args {}\n}\n\nexport class Interface extends DefinedType {\n    constructor(\n        { name, namespace, access, partial, interfaceReferences, enclosingType, origin }: Interface.Args,\n        generation: Generation\n    ) {\n        super({ name, namespace, access, partial, interfaceReferences, enclosingType, origin }, generation);\n    }\n\n    public write(writer: Writer): void {\n        if (!this.isNested) {\n            writer.writeLine(`namespace ${this.namespace};`);\n            writer.newLine();\n        }\n        writer.write(`${this.access} `);\n        if (this.partial) {\n            writer.write(\"partial \");\n        }\n        writer.write(\"interface \");\n        writer.writeLine(`${this.name}`);\n\n        if (this.interfaceReferences.length > 0) {\n            writer.write(\" : \");\n            this.interfaceReferences.forEach((interfaceReference, index) => {\n                interfaceReference.write(writer);\n                // Don't write a comma after the last interface\n                if (index < this.interfaceReferences.length - 1) {\n                    writer.write(\", \");\n                }\n            });\n        }\n        writer.pushScope();\n        for (const field of this.fields) {\n            field.write(writer);\n            writer.writeLine(\"\");\n        }\n        writer.dedent();\n\n        writer.indent();\n        for (const method of this.methods) {\n            method.write(writer);\n            writer.writeLine(\"\");\n        }\n        writer.popScope();\n    }\n}\n","import { type Generation } from \"../../context/generation-info.js\";\nimport { Node } from \"../core/AstNode.js\";\nimport { Writer } from \"../core/Writer.js\";\nimport { Access } from \"../language/Access.js\";\nimport { Annotation } from \"../language/Annotation.js\";\nimport { CodeBlock } from \"../language/CodeBlock.js\";\nimport { Class } from \"./Class.js\";\nimport { type ClassReference } from \"./ClassReference.js\";\n\nexport declare namespace TestClass {\n    interface Args extends Node.Args {\n        /* The name of the C# class */\n        name: string;\n        /* The namespace of the C# class*/\n        namespace: string;\n        /* The class to inherit from if any */\n        parentClassReference?: ClassReference;\n    }\n\n    interface TestMethod {\n        /* The name of the C# test method */\n        name: string;\n        /* The body of the test method */\n        body: CodeBlock;\n        /* Whether the method is sync or async */\n        isAsync: boolean;\n    }\n}\n\nexport class TestClass extends Node {\n    public get name() {\n        return this.reference.name;\n    }\n    public get namespace() {\n        return this.reference.namespace;\n    }\n    public readonly reference: ClassReference;\n    public readonly parentClassReference: ClassReference | undefined;\n\n    private testMethods: TestClass.TestMethod[] = [];\n\n    constructor({ name, namespace, parentClassReference, origin }: TestClass.Args, generation: Generation) {\n        super(origin, generation);\n        this.reference = this.csharp.classReference({\n            name: name,\n            namespace: namespace,\n            origin\n        });\n        this.parentClassReference = parentClassReference;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.getClass());\n    }\n\n    public getClass(): Class {\n        const annotations: (Annotation | ClassReference)[] = [\n            this.NUnit.Framework.TestFixture,\n            this.csharp.annotation({\n                reference: this.NUnit.Framework.Parallelizable,\n                argument: \"ParallelScope.Self\"\n            })\n        ];\n        const _class = new Class(\n            {\n                access: Access.Public,\n                name: this.name,\n                namespace: this.namespace,\n                annotations,\n                parentClassReference: this.parentClassReference,\n                origin: this.origin\n            },\n            this.generation\n        );\n        for (const testMethod of this.testMethods) {\n            _class.addMethod({\n                access: Access.Public,\n                isAsync: testMethod.isAsync,\n                name: testMethod.name,\n                parameters: [],\n                body: testMethod.body,\n                annotations: [this.NUnit.Framework.Test]\n            });\n        }\n        return _class;\n    }\n\n    public addTestMethod(testMethod: TestClass.TestMethod): void {\n        this.testMethods.push(testMethod);\n    }\n}\n","export type Namespace = string;\n\nimport { FernIr as DynamicFernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { FernIr } from \"@fern-fern/ir-sdk\";\n\ntype IntermediateRepresentation = FernIr.IntermediateRepresentation;\ntype TypeId = FernIr.TypeId;\ntype FernFilepath = FernIr.FernFilepath;\n\n/**\n * Browser-compatible path join for C# project paths.\n * Joins path segments with \"/\" separator, filtering empty segments.\n */\nfunction join(...segments: string[]): string {\n    return segments.filter(Boolean).join(\"/\");\n}\n\nimport * as ast from \"../ast/index.js\";\nimport { ClassReference } from \"../ast/types/ClassReference.js\";\nimport { Type } from \"../ast/types/IType.js\";\nimport { Collection, Primitive, Value } from \"../ast/types/Type.js\";\nimport { CSharp } from \"../csharp.js\";\nimport { type CsharpConfigSchema } from \"../custom-config/index.js\";\nimport { is, text } from \"../index.js\";\nimport { lazy } from \"../utils/lazy.js\";\nimport { camelCase, upperFirst } from \"../utils/text.js\";\n\nimport { MinimalGeneratorConfig, Support, TAbsoluteFilePath, TRelativeFilePath } from \"./common.js\";\nimport { Extern } from \"./extern.js\";\nimport { ModelNavigator } from \"./model-navigator.js\";\nimport { NameRegistry } from \"./name-registry.js\";\n\n/**\n * Central configuration and code generation context for C# SDK generation.\n *\n * This class serves as the single source of truth for all code generation decisions,\n * consolidating names, namespaces, types, and settings into a unified graph. It eliminates\n * duplication between dynamic and regular generators by providing consistent access to\n * generation metadata.\n *\n * ## Key Responsibilities:\n * - Manages namespace organization for generated C# code\n * - Provides standardized naming conventions for classes, types, and identifiers\n * - Lazily initializes and caches type references and configuration values\n * - Serves as a navigation hub for the IR (Intermediate Representation) model\n * - Coordinates between code generation utilities (CSharp, NameRegistry, etc.)\n *\n * ## Lazy Initialization:\n * All returned values use lazy initialization for performance:\n * - Parameterless functions: Evaluated once and cached on first access\n * - Parameterized functions: Remain as functions, evaluated on each call\n *\n * ## Usage Pattern:\n * ```typescript\n * const generation = new Generation(ir, apiName, config, generatorConfig);\n * const namespace = generation.namespaces.root; // Lazy-evaluated and cached\n * const pager = generation.types.Pager(itemType); // Function, evaluated each call\n * ```\n *\n * This object is safe to pass throughout the code generation pipeline and should be\n * the primary source for all naming and type reference decisions.\n */\nexport class Generation {\n    /**\n     * Creates a new Generation context for C# code generation.\n     *\n     * @param intermediateRepresentation - The Fern IR containing the API definition,\n     *                                     supports both static and dynamic IR formats\n     * @param apiName - The name of the API being generated (used for namespace/class naming)\n     * @param customConfig - User-provided custom configuration overrides for the generator\n     * @param generatorConfig - Core generator configuration including organization and workspace info\n     */\n    constructor(\n        public readonly intermediateRepresentation:\n            | IntermediateRepresentation\n            | DynamicFernIr.dynamic.DynamicIntermediateRepresentation,\n        private readonly apiName: string,\n        private readonly customConfig: CsharpConfigSchema,\n        private readonly generatorConfig: MinimalGeneratorConfig,\n        private readonly support: Support = {\n            makeRelativeFilePath: (path) => path as TRelativeFilePath,\n            makeAbsoluteFilePath: (path: string) => path as TAbsoluteFilePath,\n            getNamespaceForTypeId: (typeId: TypeId) => \"\",\n            getDirectoryForTypeId: (typeId: TypeId) => \"\",\n            getCoreAsIsFiles: () => [],\n            getCoreTestAsIsFiles: () => [],\n            getPublicCoreAsIsFiles: () => [],\n            getAsyncCoreAsIsFiles: () => [],\n            getChildNamespaceSegments: (fernFilepath: FernFilepath) => []\n        }\n    ) {\n        // Initialize the model navigator to traverse and query the IR\n        this.model = new ModelNavigator(intermediateRepresentation, this);\n\n        this.ir = is.IR.IntermediateRepresentation(intermediateRepresentation)\n            ? intermediateRepresentation\n            : ({} as IntermediateRepresentation);\n        this.dir = is.DynamicIR.DynamicIntermediateRepresentation(intermediateRepresentation)\n            ? intermediateRepresentation\n            : ({} as DynamicFernIr.dynamic.DynamicIntermediateRepresentation);\n    }\n\n    public readonly ir: IntermediateRepresentation;\n    public readonly dir: DynamicFernIr.dynamic.DynamicIntermediateRepresentation;\n\n    /**\n     * Utility for generating C# AST nodes and type references.\n     * Provides methods for creating class references, type declarations, and other C# constructs.\n     */\n    public readonly csharp = new CSharp(this);\n\n    /**\n     * Registry for tracking and managing generated names to prevent collisions.\n     * Ensures unique naming across namespaces, classes, properties, and other identifiers.\n     */\n    public readonly registry = new NameRegistry(this);\n\n    /**\n     * Navigator for traversing the IR model and querying type information.\n     * Provides access to types, endpoints, errors, and other IR elements.\n     */\n    public readonly model: ModelNavigator;\n\n    /**\n     * Manager for external dependencies and imports.\n     * Tracks which external packages and types are needed by the generated code.\n     */\n    public readonly extern = new Extern(this);\n\n    /**\n     * Lazily-initialized configuration settings for C# code generation.\n     *\n     * These settings control various aspects of the generated code including:\n     * - Namespace configuration\n     * - Feature flags (websockets, forward-compatible enums, etc.)\n     * - Type generation options (discriminated unions, additional properties)\n     * - Naming customization (client class names, exception classes)\n     * - Testing options (mock server tests)\n     * - Access modifiers and visibility settings\n     *\n     * All settings are derived from the custom configuration with sensible defaults.\n     * Each property is lazily evaluated and cached on first access.\n     */\n    public readonly settings = lazy({\n        /** The root namespace for all generated C# code (e.g., \"Acme.MyApi\"). Defaults to Organization_ApiName in camelCase. */\n        namespace: () =>\n            this.customConfig.namespace ??\n            upperFirst(camelCase(`${this.generatorConfig.organization}_${this.apiName}`)),\n        /** List of types that should use ReadOnlyMemory<byte> instead of byte[] for binary data. Default: []. */\n        readOnlyMemoryTypes: () => this.customConfig[\"read-only-memory-types\"] ?? [],\n        /** When true, simplifies object dictionaries in generated code for better type safety. Default: false. */\n        simplifyObjectDictionaries: () => this.customConfig[\"simplify-object-dictionaries\"] ?? false,\n        /** When true, uses fully-qualified namespaces in generated code to avoid naming conflicts. Default: false. */\n        useFullyQualifiedNamespaces: () => this.customConfig[\"experimental-fully-qualified-namespaces\"] ?? false,\n        /** When true, runs dotnet format on generated code for consistent formatting. Default: false. */\n        useDotnetFormat: () => this.customConfig[\"experimental-dotnet-format\"] ?? false,\n        /** When true, enables WebSocket support in the generated SDK. Default: false. */\n        enableWebsockets: () => this.customConfig[\"experimental-enable-websockets\"] ?? false,\n        /** @deprecated Use `generateLiterals` instead. When true, generates readonly constants instead of static properties. Default: false. */\n        enableReadonlyConstants: () => this.customConfig[\"experimental-readonly-constants\"] ?? false,\n        /** When true, generates literal struct types for literal properties. If `experimental-readonly-constants` is also set, this takes precedence. Default: false. */\n        generateLiterals: () =>\n            this.customConfig[\"generate-literals\"] ?? this.customConfig[\"experimental-readonly-constants\"] ?? false,\n        /** When true, uses explicit nullable/optional attributes and Optional<T?> wrapper for better null handling. Default: false. */\n        enableExplicitNullableOptional: () => this.customConfig[\"experimental-explicit-nullable-optional\"] ?? false,\n        /** When true, generates Defaults nested class and WithDefaults() method for request records with default values. Default: false. */\n        useDefaultRequestParameterValues: () => this.customConfig[\"use-default-request-parameter-values\"] ?? false,\n        /** When true, redacts the response body in deserialization error exceptions and adds a custom ToString override to the base API exception. Default: false. */\n        redactResponseBodyOnError: () => this.customConfig[\"redact-response-body-on-error\"] ?? false,\n        /** Temporary mapping of websocket environment configurations. Default: {}. */\n        temporaryWebsocketEnvironments: () => this.customConfig[\"temporary-websocket-environments\"] ?? {},\n        /** Custom name for the base API exception class. Default: \"\" (auto-generated). */\n        baseApiExceptionClassName: () => this.customConfig[\"base-api-exception-class-name\"] ?? \"\",\n        /** Custom name for the base exception class. Default: \"\" (auto-generated). */\n        baseExceptionClassName: () => this.customConfig[\"base-exception-class-name\"] ?? \"\",\n        /** When true, generates discriminated unions with type discriminators. Default: true. */\n        shouldGeneratedDiscriminatedUnions: () => this.customConfig[\"use-discriminated-unions\"] ?? true,\n        /** When true, generates undiscriminated unions with runtime type detection. Default: false. */\n        shouldGenerateUndiscriminatedUnions: () => this.customConfig[\"use-undiscriminated-unions\"] ?? false,\n        /** Custom name for the exported public client class. Default: \"\" (uses clientClassName or computed name). */\n        exportedClientClassName: () => this.customConfig[\"exported-client-class-name\"] ?? \"\",\n        /** Custom name for the internal client class. Default: \"\" (auto-generated from organization/workspace). */\n        clientClassName: () => this.customConfig[\"client-class-name\"] ?? \"\",\n        /** When true, places core classes in the root namespace instead of {root}.Core. Default: true. */\n        rootNamespaceForCoreClasses: () => this.customConfig[\"root-namespace-for-core-classes\"] ?? true,\n        /** Custom NuGet package identifier. Default: \"\" (uses root namespace). */\n        packageId: () => this.customConfig[\"package-id\"] ?? \"\",\n        /** When true, generates enums that can handle unknown/future values gracefully. Default: true. */\n        isForwardCompatibleEnumsEnabled: () =>\n            this.customConfig[\"enable-forward-compatible-enums\"] ??\n            this.customConfig[\"experimental-enable-forward-compatible-enums\"] ??\n            true,\n        /** Mapping of websocket environment configurations. Default: {}. */\n        websocketEnvironments: () => this.customConfig[\"temporary-websocket-environments\"] ?? {},\n        /** Custom name for the pagination class. Default: \"\" (auto-generated). */\n        customPagerName: () => this.customConfig[\"custom-pager-name\"] ?? \"\",\n        /** Custom name for the environment configuration class. Default: \"\" (auto-generated). */\n        environmentClassName: () => this.customConfig[\"environment-class-name\"] ?? \"\",\n        /** When true, generates dedicated error type classes for API errors. Default: true. */\n        generateErrorTypes: () => this.customConfig[\"generate-error-types\"] ?? true,\n        /** When true, inlines path parameters in method signatures instead of using a request object. Default: true. */\n        shouldInlinePathParameters: () => this.customConfig[\"inline-path-parameters\"] ?? true,\n        /** When true, includes exception handler infrastructure for custom error handling. Default: false. */\n        includeExceptionHandler: () => this.customConfig[\"include-exception-handler\"] ?? false,\n        /** Custom name for the exception interceptor class. Default: {PackageName}ExceptionInterceptor. */\n        exceptionInterceptorClassName: () => this.customConfig[\"exception-interceptor-class-name\"] ?? \"\",\n        /** When true, generates mock server tests for the SDK. Default: true. Also accepts enable-wire-tests as an alias. */\n        shouldGenerateMockServerTests: () =>\n            this.customConfig[\"generate-mock-server-tests\"] ?? this.customConfig[\"enable-wire-tests\"] ?? true,\n        /** Access modifier for the root client class (Public or Internal). Default: Public. */\n        rootClientAccess: () =>\n            this.customConfig[\"root-client-class-access\"] == \"internal\" ? ast.Access.Internal : ast.Access.Public,\n        /** Additional NuGet package dependencies to include in the generated project. Default: {}. */\n        extraDependencies: () => this.customConfig[\"extra-dependencies\"] ?? {},\n        /** When true, omits Fern platform headers (X-Fern-Language, SDK name/version, User-Agent) from generated SDK requests. Default: false. */\n        omitFernHeaders: () => this.customConfig[\"omit-fern-headers\"] ?? false,\n        /** When true, moves auth params and IR headers into ClientOptions so the constructor takes only named arguments. Default: false. */\n        unifiedClientOptions: () => this.customConfig[\"unified-client-options\"] ?? false,\n        /** When true, uses PascalCase for environment names (e.g., \"Production\" instead of \"production\"). Default: true. */\n        pascalCaseEnvironments: () => this.customConfig[\"pascal-case-environments\"] ?? true,\n        /** Solution file format: \"sln\" generates both .sln and .slnx, \"slnx\" (default) generates only .slnx. */\n        slnFormat: () => this.customConfig[\"sln-format\"] ?? \"slnx\",\n        /** When true, requires explicit namespace declarations instead of using file-scoped namespaces. Default: false. */\n        explicitNamespaces: () => this.customConfig[\"explicit-namespaces\"] === true,\n        /** Override the default max retries for the SDK client. Default: 2. */\n        maxRetries: () => this.customConfig.maxRetries,\n        /**\n         * Output path configuration for generated files.\n         * Returns normalized paths for library, test, solution, and other files.\n         */\n        outputPath: () => {\n            const config = this.customConfig[\"output-path\"];\n            if (config == null) {\n                // Default: all files go to \"src\" for library/test, \".\" for solution/other\n                return {\n                    library: \"src\",\n                    test: \"src\",\n                    solution: \".\",\n                    other: \".\"\n                };\n            }\n            if (typeof config === \"string\") {\n                // Simple string: library and test go to that path, solution/other go to \".\"\n                return {\n                    library: config,\n                    test: config,\n                    solution: \".\",\n                    other: \".\"\n                };\n            }\n            // Object: use specified paths with defaults\n            return {\n                library: config.library ?? \"src\",\n                test: config.test ?? \"src\",\n                solution: config.solution ?? \".\",\n                other: config.other ?? \".\"\n            };\n        }\n    });\n\n    public readonly constants = {\n        folders: lazy({\n            mockServerTests: () => this.support.makeRelativeFilePath(\"Unit/MockServer\"),\n            types: () => \"Types\",\n            exceptions: () => \"Exceptions\",\n            src: () => \"src\",\n            protobuf: () => \"proto\",\n            serializationTests: () => this.support.makeRelativeFilePath(\"Unit/Serialization\"),\n            project: () =>\n                this.support.makeRelativeFilePath(\n                    join(\n                        this.constants.folders.sourceFiles,\n                        this.support.makeRelativeFilePath(this.names.files.project)\n                    )\n                ),\n            sourceFiles: () => this.support.makeRelativeFilePath(this.constants.folders.src),\n            coreFiles: () =>\n                this.support.makeRelativeFilePath(\n                    join(\n                        this.constants.folders.project,\n                        this.support.makeRelativeFilePath(this.constants.defaults.core)\n                    )\n                ),\n            publicCoreFiles: () =>\n                this.support.makeRelativeFilePath(\n                    join(\n                        this.constants.folders.project,\n                        this.support.makeRelativeFilePath(this.constants.defaults.core),\n                        this.support.makeRelativeFilePath(this.constants.defaults.publicCore)\n                    )\n                ),\n            testFiles: () =>\n                this.support.makeRelativeFilePath(\n                    join(\n                        this.constants.folders.sourceFiles,\n                        this.support.makeRelativeFilePath(this.names.files.testProject)\n                    )\n                )\n        }),\n\n        formatting: lazy({\n            indent: () => \"    \"\n        }),\n\n        defaults: lazy({\n            core: () => \"Core\",\n            publicCore: () => \"Public\",\n            version: () => \"0.0.0\"\n        })\n    };\n\n    /**\n     * Lazily-initialized namespace paths for organizing generated C# code.\n     *\n     * This object defines the namespace hierarchy used throughout the generated SDK:\n     * - `root`: The top-level namespace for all generated code\n     * - `core`: Internal implementation details and utilities (e.g., {root}.Core)\n     * - `test`: Testing utilities and fixtures\n     * - `testUtils`: Helper methods for tests\n     * - `mockServerTest`: Mock server testing infrastructure\n     * - `publicCore`: Public core utilities exposed to SDK users\n     * - `webSocketsCore`: WebSocket API utilities\n     * - `publicCoreTest`: Tests for public core functionality\n     * - `asIsTestUtils`: Test utilities that preserve original casing\n     * - `publicCoreClasses`: Location for core classes based on rootNamespaceForCoreClasses setting\n     *\n     * Namespaces are canonicalized through the NameRegistry to avoid conflicts with generated types.\n     * All namespace paths are lazy-evaluated and cached on first access.\n     */\n    public readonly namespaces = lazy({\n        /** The top-level root namespace for all generated SDK code (e.g., \"Acme.MyApi\"). */\n        root: (): string => this.settings.namespace,\n        /** Internal Core namespace for SDK implementation details and utilities ({root}.Core). */\n        core: (): string => `${this.namespaces.root}.Core`,\n        /** Pre-qualified root namespace with global:: prefix when the root segment has a type-namespace conflict. */\n        qualifiedRoot: (): string => this.qualifyNamespace(this.namespaces.root),\n        /** Pre-qualified Core namespace with global:: prefix when the root segment has a type-namespace conflict. */\n        qualifiedCore: (): string => this.qualifyNamespace(this.namespaces.core),\n        /** Test namespace for all test-related code, canonicalized to avoid conflicts ({root}.Test). */\n        test: (): string => this.registry.canonicalizeNamespace(`${this.namespaces.root}.Test`),\n        /** Test utilities namespace for helper methods and fixtures ({root}.Test.Utils). */\n        testUtils: (): string => `${this.namespaces.test}.Utils`,\n        /** Mock server test namespace for mock server testing infrastructure ({root}.Test.Unit.MockServer). */\n        mockServerTest: (): string => `${this.namespaces.test}.Unit.MockServer`,\n        /** Public Core namespace, same as root for publicly exposed core utilities. */\n        publicCore: (): string => this.namespaces.root,\n        /** WebSockets Core namespace for WebSocket APIs ({root}.Core.WebSockets). */\n        webSocketsCore: (): string => `${this.namespaces.core}.WebSockets`,\n        /** Public Core test namespace for testing public core functionality ({root}.Test.PublicCore). */\n        publicCoreTest: (): string => `${this.namespaces.root}.Test.PublicCore`,\n        /** Test utilities namespace that preserves original casing ({root}.Test.Utils). */\n        asIsTestUtils: (): string => `${this.namespaces.root}.Test.Utils`,\n        /** Namespace for public core classes; either root or core based on rootNamespaceForCoreClasses setting. */\n        publicCoreClasses: (): string =>\n            this.settings.rootNamespaceForCoreClasses ? this.namespaces.root : this.namespaces.core,\n        /** Implicit namespaces are namespaces that are assumed to be automatically imported into the generated code. */\n        implicit: (): Set<string> =>\n            new Set([\n                \"System\",\n                \"System.Collections.Generic\",\n                \"System.IO\",\n                \"System.Linq\",\n                \"System.Threading\",\n                \"System.Threading.Tasks\",\n                \"System.Net.Http\"\n            ])\n    });\n\n    /**\n     * Lazily-initialized names for key generated classes and identifiers.\n  \n     *\n     * Names are computed using naming conventions (camelCase, upperFirst) and can be\n     * overridden via custom configuration. All names are lazy-evaluated and cached.\n     */\n    public readonly names = {\n        classes: lazy({\n            /** The name of the base API exception class (e.g., \"AcmeWidgetsApiException\"). */\n            baseApiException: (): string =>\n                this.settings.baseApiExceptionClassName || `${this.names.project.clientPrefix}ApiException`,\n            /** The name of the base exception class for all SDK exceptions (e.g., \"AcmeWidgetsException\"). */\n            baseException: (): string =>\n                this.settings.baseExceptionClassName || `${this.names.project.clientPrefix}Exception`,\n            /** The name of the main internal SDK client class (e.g., \"AcmeWidgetsClient\"). */\n            rootClient: (): string => this.settings.clientClassName || `${this.names.project.clientPrefix}Client`,\n            /** The name of the client class used in documentation snippets and examples. */\n            rootClientForSnippets: (): string => this.settings.exportedClientClassName || this.names.classes.rootClient,\n            /** The name for custom pagination classes (e.g., \"AcmeWidgetsPager\"), alphanumeric only. */\n            customPager: (): string =>\n                this.settings.customPagerName || `${this.names.project.packageId.replace(/[^a-zA-Z0-9]/g, \"\")}Pager`,\n            /** The name for the environment configuration class (e.g., \"AcmeWidgetsEnvironment\"). */\n            environment: (): string =>\n                this.settings.environmentClassName || `${this.names.project.clientPrefix}Environment`,\n            /** The name for the custom exception interceptor class (e.g., \"AcmeWidgetsExceptionInterceptor\"). */\n            exceptionInterceptor: (): string =>\n                this.settings.exceptionInterceptorClassName ||\n                `${this.names.project.packageId.replace(/[^a-zA-Z0-9]/g, \"\")}ExceptionInterceptor`\n        }),\n        project: lazy({\n            /** The computed client name derived from organization and workspace in camelCase (e.g., \"AcmeWidgets\"). */\n            client: () =>\n                upperFirst(camelCase(`${this.generatorConfig.organization}_${this.generatorConfig.workspaceName}`)),\n            /** The prefix used for client-related classes, customizable via config or defaults to clientName. */\n            clientPrefix: () =>\n                this.settings.exportedClientClassName || this.settings.clientClassName || this.names.project.client,\n            /** The NuGet package identifier for the generated SDK, defaults to root namespace if not specified. */\n            packageId: () => this.settings.packageId || this.namespaces.root\n        }),\n        files: lazy({\n            /* the name of the project */\n            project: () => this.namespaces.root,\n            /* the name of the test project */\n            testProject: () => `${this.namespaces.root}.Test`\n        }),\n        methods: lazy({\n            mockOauth: () => \"MockOAuthEndpoint\",\n            mockInferredAuth: () => \"MockInferredAuthEndpoint\",\n            getAccessTokenAsync: () => \"GetAccessTokenAsync\",\n            getAuthHeadersAsync: () => \"GetAuthHeadersAsync\"\n        }),\n        variables: lazy({\n            client: () => \"client\",\n            response: () => \"response\",\n            httpRequest: () => \"httpRequest\",\n            sendRequest: () => \"sendRequest\",\n            responseBody: () => \"responseBody\",\n            query: () => \"_query\",\n            headers: () => \"_headers\"\n        }),\n        parameters: lazy({\n            cancellationToken: () => \"cancellationToken\",\n            requestOptions: () => \"options\",\n            idempotentOptions: () => \"options\"\n        })\n    };\n\n    /**\n     * Lazily-initialized C# type references for core SDK classes and utilities.\n     *\n     * This object provides type references for all core infrastructure classes used in the\n     * generated SDK. These references are used throughout code generation to ensure consistent\n     * type usage and proper namespace imports.\n     *\n     * ## Categories of Types:\n     *\n     * ### Request/Response Handling:\n     * - `FormRequest`, `JsonRequest`: Request builders for different content types\n     * - `ClientOptions`, `RequestOptions`: Configuration objects for API calls\n     * - `RawClient`, `RawGrpcClient`: Low-level HTTP/gRPC clients\n     * - `Headers`: HTTP header management\n     *\n     * ### Client Infrastructure:\n     * - `RootClient`, `RootClientForSnippets`: Main SDK client classes\n     * - `TestClient`: Testing infrastructure\n     * - `WebSocketClient`: WebSocket client for managing connections\n     *\n     * ### Error Handling:\n     * - `BaseException`, `BaseApiException`: Exception hierarchy\n     * - `ExceptionInterceptor`, `ExceptionHandler`: Exception processing\n     *\n     * ### Serialization:\n     * - `DateTimeSerializer`: DateTime handling\n     * - `JsonUtils`: JSON utilities\n     * - `OneOfSerializer`: Union type serialization\n     * - `CollectionItemSerializer`: Collection element serialization\n     * - `ProtoConverter`, `ProtoAnyMapper`: Protocol buffer conversion\n     *\n     * ### Pagination:\n     * - `Pager`: Base pagination interface\n     * - `CustomPagerClass`: Custom pagination implementation\n     * - `OffsetPager`: Offset-based pagination\n     * - `CursorPager`: Cursor-based pagination\n     * - `CustomPagerFactory`, `CustomPagerContext`: Pagination utilities\n     *\n     * ### Additional Properties:\n     * - `AdditionalProperties`: Mutable additional properties\n     * - `ReadOnlyAdditionalProperties`: Immutable additional properties\n     *\n     * ### Other Utilities:\n     * - `Version`: SDK version information\n     * - `ValueConvert`: Value conversion utilities\n     * - `FileParameter`: File upload support\n     * - `Constants`: SDK constants\n     * - `Environments`: Environment configuration\n     * - `Extensions`: Extension methods\n     * - `OAuthTokenProvider`: OAuth authentication\n     * - `QueryBuilder`: Query string building\n     * - `IStringEnum`, `StringEnum`: String-based enum support\n     *\n     * ## Usage Patterns:\n     *\n     * ### Non-Generic Types (cached):\n     * ```typescript\n     * const clientType = generation.Types.RootClient; // Returns cached ClassReference\n     * ```\n     *\n     * ### Generic Types (evaluated per call):\n     * ```typescript\n     * const pager = generation.Types.Pager(itemType); // Returns new ClassReference each time\n     * const webSocketClient = generation.Types.WebSocketClient();\n     * ```\n     *\n     * All type references include proper namespace information and are registered with\n     * the NameRegistry to ensure correct imports in generated code.\n     */\n    public readonly Types = lazy({\n        Arbitrary: (name: string) => new Primitive.ArbitraryType(name, this),\n        HttpMethodExtensions: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.core,\n                origin: this.model.staticExplicit(\"HttpMethodExtensions\")\n            }),\n        /** Core infrastructure type for building multipart/form-data requests */\n        FormRequest: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.core,\n                origin: this.model.staticExplicit(\"FormRequest\")\n            }),\n        /** Optional<T> wrapper type for explicit undefined/null semantics */\n        Optional: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.core,\n                origin: this.model.staticExplicit(\"Optional\")\n            }),\n        /** Configuration options for the SDK client (base URL, headers, timeout, etc.) */\n        ClientOptions: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"ClientOptions\"),\n                namespace: this.namespaces.publicCoreClasses\n            }),\n        /** Low-level HTTP client wrapper for making raw API calls */\n        RawClient: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.core,\n                origin: this.model.staticExplicit(\"RawClient\")\n            }),\n        /** Per-request configuration options (headers, timeout overrides, etc.) */\n        RequestOptions: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.publicCoreClasses,\n                origin: this.model.staticExplicit(\"RequestOptions\")\n            }),\n        /** Interface for per-request configuration options */\n        RequestOptionsInterface: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.core,\n                origin: this.model.staticExplicit(\"IRequestOptions\")\n            }),\n        /** Core infrastructure type for building JSON requests */\n        JsonRequest: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.core,\n                origin: this.model.staticExplicit(\"JsonRequest\")\n            }),\n        /** SDK version metadata class */\n        Version: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.publicCore,\n                origin: this.model.staticExplicit(\"Version\")\n            }),\n        /** Utility for converting values between different representations */\n        ValueConvert: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.core,\n                origin: this.model.staticExplicit(\"ValueConvert\")\n            }),\n        /** Wrapper for file upload parameters in multipart requests */\n        FileParameter: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.publicCore,\n                origin: this.model.staticExplicit(\"FileParameter\"),\n                multipartMethodName: \"AddFileParameterPart\",\n                multipartMethodNameForCollection: \"AddFileParameterParts\",\n                isReferenceType: true\n            }),\n        /** HTTP header management utilities */\n        Headers: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.core,\n                origin: this.model.staticExplicit(\"Headers\")\n            }),\n        /** HTTP header value management utilities */\n        HeaderValue: () =>\n            this.csharp.classReference({\n                namespace: this.namespaces.core,\n                origin: this.model.staticExplicit(\"HeaderValue\")\n            }),\n        /** The main SDK client class (for code generation) */\n        RootClient: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(this.names.classes.rootClient),\n                namespace: this.namespaces.root\n            }),\n        /** The main SDK client class (for documentation snippets) */\n        RootClientForSnippets: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(this.names.classes.rootClientForSnippets),\n                namespace: this.namespaces.root\n            }),\n        /** Base exception class for API errors (HTTP 4xx/5xx responses) */\n        BaseApiException: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(this.names.classes.baseApiException),\n                namespace: this.namespaces.publicCoreClasses\n            }),\n        /** Base exception class for all SDK exceptions */\n        BaseException: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(this.names.classes.baseException),\n                namespace: this.namespaces.publicCoreClasses\n            }),\n        /** Interface for intercepting and processing exceptions */\n        ExceptionInterceptor: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"IExceptionInterceptor\"),\n                namespace: this.namespaces.core\n            }),\n        /** Utility for handling and transforming exceptions */\n        ExceptionHandler: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"ExceptionHandler\"),\n                namespace: this.namespaces.core\n            }),\n        /** Custom exception interceptor class for SDK authors to implement */\n        CustomExceptionInterceptor: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(this.names.classes.exceptionInterceptor),\n                namespace: this.namespaces.core\n            }),\n        /** Utility for mapping Protocol Buffer Any types */\n        ProtoAnyMapper: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"ProtoAnyMapper\"),\n                namespace: this.namespaces.core\n            }),\n        /** SDK-wide constants */\n        Constants: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"Constants\"),\n                namespace: this.namespaces.core\n            }),\n        /** JSON serializer for DateTime types */\n        DateTimeSerializer: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"DateTimeSerializer\"),\n                namespace: this.namespaces.core\n            }),\n        /** Utility methods for JSON serialization/deserialization */\n        JsonUtils: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"JsonUtils\"),\n                namespace: this.namespaces.core\n            }),\n        /** Test assertion helper for JSON comparison */\n        JsonAssert: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"JsonAssert\"),\n                namespace: this.namespaces.testUtils\n            }),\n        /** Factory for creating custom pagination instances */\n        CustomPagerFactory: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(`${this.names.classes.customPager}Factory`),\n                namespace: this.namespaces.core\n            }),\n        /** Context object for custom pagination state */\n        CustomPagerContext: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(`${this.names.classes.customPager}Context`),\n                namespace: this.namespaces.core\n            }),\n        /** Environment configuration class (base URLs for different environments) */\n        Environments: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(this.names.classes.environment),\n                namespace: this.namespaces.publicCoreClasses\n            }),\n        /** Test client for testing infrastructure */\n        TestClient: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"TestClient\"),\n                namespace: this.namespaces.test\n            }),\n        /** Base class for mock server tests */\n        BaseMockServerTest: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"BaseMockServerTest\"),\n                namespace: this.namespaces.mockServerTest\n            }),\n        /** Request options with idempotency key support */\n        IdempotentRequestOptions: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"IdempotentRequestOptions\"),\n                namespace: this.namespaces.publicCoreClasses\n            }),\n        /** Interface for idempotent request options */\n        IdempotentRequestOptionsInterface: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"IIdempotentRequestOptions\"),\n                namespace: this.namespaces.core\n            }),\n        /** Interface for string-based enum types */\n        IStringEnum: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"IStringEnum\"),\n                namespace: this.namespaces.core\n            }),\n        /** WebSocket client for managing WebSocket connections */\n        WebSocketClient: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"WebSocketClient\"),\n                namespace: this.namespaces.webSocketsCore\n            }),\n        /** Query string builder utility for WebSocket URLs (legacy) */\n        QueryBuilder: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"Query\"),\n                namespace: this.namespaces.webSocketsCore\n            }),\n        /** High-performance query string builder with fluent API */\n        QueryStringBuilder: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"QueryStringBuilder\"),\n                namespace: this.namespaces.core\n            }),\n        /** Fluent builder for constructing query strings */\n        QueryStringBuilderBuilder: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"QueryStringBuilder.Builder\"),\n                namespace: this.namespaces.core\n            }),\n        /** OAuth token provider for authentication */\n        OAuthTokenProvider: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"OAuthTokenProvider\"),\n                namespace: this.namespaces.core\n            }),\n        /** Inferred auth token provider for authentication */\n        InferredAuthTokenProvider: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"InferredAuthTokenProvider\"),\n                namespace: this.namespaces.core\n            }),\n        /** Converter for Protocol Buffer types */\n        ProtoConverter: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"ProtoConverter\"),\n                namespace: this.namespaces.core\n            }),\n        /** Low-level gRPC client wrapper */\n        RawGrpcClient: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"RawGrpcClient\"),\n                namespace: this.namespaces.core\n            }),\n        /** Extension methods for common operations */\n        Extensions: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"Extensions\"),\n                namespace: this.namespaces.core\n            }),\n        /** Request options for gRPC calls */\n        GrpcRequestOptions: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"GrpcRequestOptions\"),\n                namespace: this.namespaces.root\n            }),\n        /** Configuration options for gRPC channels */\n        GrpcChannelOptions: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"GrpcChannelOptions\"),\n                namespace: \"Grpc.Net.Client\"\n            }),\n        /**\n         * Generic string-based enum wrapper type.\n         * @param genericType - The specific enum type to wrap (optional)\n         */\n        StringEnum: (genericType?: ast.Type | ast.ClassReference) =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"StringEnum\"),\n                namespace: this.namespaces.core,\n                generics: genericType ? [genericType] : undefined\n            }),\n        /**\n         * Generic event wrapper for WebSocket APIs.\n         * @param genericType - The event payload type\n         */\n        WebSocketEvent: (genericType: ast.Type | ast.ClassReference): ast.ClassReference => {\n            return this.csharp.classReference({\n                origin: this.model.staticExplicit(\"Event\"),\n                namespace: this.namespaces.webSocketsCore,\n                generics: [genericType]\n            });\n        },\n        /** Connection status enum for WebSocket connections */\n        ConnectionStatus: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"ConnectionStatus\"),\n                namespace: this.namespaces.webSocketsCore\n            }),\n        /** Connected event for WebSocket connections */\n        WebSocketConnected: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"Connected\"),\n                namespace: this.namespaces.webSocketsCore\n            }),\n        /** Closed event for WebSocket connections */\n        WebSocketClosed: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"Closed\"),\n                namespace: this.namespaces.webSocketsCore\n            }),\n        /** Reconnection info for WebSocket connections */\n        ReconnectionInfo: () =>\n            this.csharp.classReference({\n                origin: this.model.staticExplicit(\"ReconnectionInfo\"),\n                namespace: this.namespaces.webSocketsCore\n            }),\n        /**\n         * Custom pagination class for iterating over paged results.\n         * @param itemType - The type of items in each page\n         */\n        CustomPagerClass: (itemType: ast.Type | ast.ClassReference): ast.ClassReference => {\n            return this.csharp.classReference({\n                origin: this.model.staticExplicit(this.names.classes.customPager),\n                namespace: this.namespaces.core,\n                generics: [itemType]\n            });\n        },\n        /**\n         * Generic pager interface for pagination support.\n         * @param itemType - The type of items being paginated\n         */\n        Pager: (itemType: ast.Type | ast.ClassReference): ast.ClassReference => {\n            return this.csharp.classReference({\n                origin: this.model.staticExplicit(\"Pager\"),\n                namespace: this.namespaces.core,\n                generics: [itemType]\n            });\n        },\n        /**\n         * Offset-based pagination implementation.\n         * Supports paginating through results using numeric offsets.\n         *\n         * @param requestType - The type of the pagination request\n         * @param requestOptionsType - The type of request options\n         * @param responseType - The type of the pagination response\n         * @param offsetType - The type of the offset (usually int or long)\n         * @param stepType - The type of the step/page size (usually int)\n         * @param itemType - The type of items in the paginated results\n         */\n        OffsetPager: ({\n            requestType,\n            requestOptionsType,\n            responseType,\n            offsetType,\n            stepType,\n            itemType\n        }: {\n            requestType: ast.Type;\n            requestOptionsType: ast.Type;\n            responseType: ast.Type;\n            offsetType: ast.Type;\n            stepType: ast.Type;\n            itemType: ast.Type;\n        }): ast.ClassReference => {\n            return this.csharp.classReference({\n                origin: this.model.staticExplicit(\"OffsetPager\"),\n                namespace: this.namespaces.core,\n                generics: [requestType, requestOptionsType, responseType, offsetType, stepType, itemType]\n            });\n        },\n        /**\n         * Cursor-based pagination implementation.\n         * Supports paginating through results using opaque cursor tokens.\n         *\n         * @param requestType - The type of the pagination request\n         * @param requestOptionsType - The type of request options\n         * @param responseType - The type of the pagination response\n         * @param cursorType - The type of the cursor token (usually string)\n         * @param itemType - The type of items in the paginated results\n         */\n        CursorPager: ({\n            requestType,\n            requestOptionsType,\n            responseType,\n            cursorType,\n            itemType\n        }: {\n            requestType: ast.Type;\n            requestOptionsType: ast.Type;\n            responseType: ast.Type;\n            cursorType: ast.Type;\n            itemType: ast.Type;\n        }): ast.ClassReference => {\n            return this.csharp.classReference({\n                origin: this.model.staticExplicit(\"CursorPager\"),\n                namespace: this.namespaces.core,\n                generics: [requestType, requestOptionsType, responseType, cursorType, itemType]\n            });\n        },\n        /**\n         * Custom JSON serializer for collection items.\n         * Wraps items in a collection with a specific serializer implementation.\n         *\n         * @param itemType - The type of items in the collection\n         * @param serializer - The serializer class to use for each item\n         * @returns A ClassReference for CollectionItemSerializer<TItem, TSerializer>\n         */\n        CollectionItemSerializer: (\n            itemType: ast.ClassReference,\n            serializer: ast.ClassReference\n        ): ast.ClassReference => {\n            return this.csharp.classReference({\n                origin: this.model.staticExplicit(\"CollectionItemSerializer\"),\n                namespace: this.namespaces.core,\n                generics: [itemType, serializer]\n            });\n        },\n        /**\n         * JSON serializer for union/OneOf types.\n         * Handles discriminated and undiscriminated union serialization.\n         *\n         * @param oneof - The union type to serialize\n         * @returns A ClassReference for OneOfSerializer<TOneOf>\n         */\n        OneOfSerializer: (oneof: ast.Type | ast.ClassReference): ast.ClassReference => {\n            return this.csharp.classReference({\n                origin: this.model.staticExplicit(\"OneOfSerializer\"),\n                namespace: this.namespaces.core,\n                generics: [oneof]\n            });\n        },\n        /**\n         * Mutable dictionary for additional/extra properties on objects.\n         * Allows setting arbitrary key-value pairs beyond defined properties.\n         *\n         * @param genericType - The value type for additional properties (defaults to object if not specified)\n         * @returns A ClassReference for AdditionalProperties or AdditionalProperties<T>\n         */\n        AdditionalProperties: (genericType?: ast.Type | ast.ClassReference): ast.ClassReference => {\n            return this.csharp.classReference({\n                origin: this.model.staticExplicit(\"AdditionalProperties\"),\n                namespace: this.namespaces.publicCore,\n                generics: genericType ? [genericType] : undefined\n            });\n        },\n        /**\n         * Immutable read-only dictionary for additional/extra properties on objects.\n         * Provides read-only access to arbitrary key-value pairs beyond defined properties.\n         *\n         * @param genericType - The value type for additional properties (defaults to object if not specified)\n         * @returns A ClassReference for ReadOnlyAdditionalProperties or ReadOnlyAdditionalProperties<T>\n         */\n        ReadOnlyAdditionalProperties: (genericType?: ast.Type | ast.ClassReference): ast.ClassReference => {\n            return this.csharp.classReference({\n                origin: this.model.staticExplicit(\"ReadOnlyAdditionalProperties\"),\n                namespace: this.namespaces.publicCore,\n                generics: genericType ? [genericType] : undefined\n            });\n        }\n    });\n    public Primitive = lazy({\n        /**\n         * Creates a string type.\n         *\n         * @returns A Type object representing the C# string type\n         */\n        string: () => {\n            return new Primitive.String(this);\n        },\n        /**\n         * Creates a boolean type.\n         *\n         * @returns A Type object representing the C# bool type\n         */\n        boolean: () => {\n            return new Primitive.Boolean(this);\n        },\n        /**\n         * Creates an integer type.\n         *\n         * @returns A Type object representing the C# int type\n         */\n        integer: () => {\n            return new Primitive.Integer(this);\n        },\n        /**\n         * Creates a long type.\n         *\n         * @returns A Type object representing the C# long type\n         */\n        long: () => {\n            return new Primitive.Long(this);\n        },\n        /**\n         * Creates an unsigned integer type.\n         *\n         * @returns A Type object representing the C# uint type\n         */\n        uint: () => {\n            return new Primitive.Uint(this);\n        },\n        /**\n         * Creates an unsigned long type.\n         *\n         * @returns A Type object representing the C# ulong type\n         */\n        ulong: () => {\n            return new Primitive.ULong(this);\n        },\n        /**\n         * Creates a float type.\n         *\n         * @returns A Type object representing the C# float type\n         */\n        float: () => {\n            return new Primitive.Float(this);\n        },\n        /**\n         * Creates a double type.\n         *\n         * @returns A Type object representing the C# double type\n         */\n        double: () => {\n            return new Primitive.Double(this);\n        },\n        /**\n         * Creates an object type.\n         *\n         * @returns A Type object representing the C# object type\n         */\n        object: () => {\n            return new Primitive.Object(this);\n        }\n    });\n    public Value = lazy({\n        /**\n         * Creates a string type.\n         *\n         * @returns A Type object representing the C# string type\n         */\n        binary: () => {\n            return new Value.Binary(this);\n        },\n        /**\n         * Creates a DateOnly type.\n         *\n         * @returns A Type object representing the C# DateOnly type\n         */\n        dateOnly: () => {\n            return new Value.DateOnly(this);\n        },\n        /**\n         * Creates a DateTime type.\n         *\n         * @returns A Type object representing the C# DateTime type\n         */\n        dateTime: () => {\n            return new Value.DateTime(this);\n        },\n        /**\n         * Creates a Guid type.\n         *\n         * @returns A Type object representing the C# Guid type\n         */\n        uuid: () => {\n            return new Value.Uuid(this);\n        },\n        /**\n         * Creates a string enum type.\n         *\n         * @param value - The class reference for the string enum\n         * @returns A Type object representing the string enum type\n         */\n        stringEnum: (value: ClassReference) => {\n            return new Value.StringEnum(value, this);\n        }\n    });\n    public Collection = lazy({\n        /**\n         * Creates an array type.\n         *\n         * @param value - The element type of the array\n         * @returns A Type object representing the C# array type\n         */\n        array: (value: Type) => {\n            return new Collection.Array(value, this);\n        },\n        /**\n         * Creates a list type.\n         *\n         * @param value - The element type of the list\n         * @returns A Type object representing the C# List<T> type\n         */\n        listType: (value: Type) => {\n            return new Collection.ListType(value, this);\n        },\n        /**\n         * Creates a generic list type.\n         *\n         * @param value - The element type of the list\n         * @returns A Type object representing the C# List<T> type\n         */\n        list: (value: Type) => {\n            return new Collection.List(value, this);\n        },\n        /**\n         * Creates a set type.\n         *\n         * @param value - The element type of the set\n         * @returns A Type object representing the C# HashSet<T> type\n         */\n        set: (value: Type) => {\n            return new Collection.Set(value, this);\n        },\n        /**\n         * Creates a map/dictionary type.\n         *\n         * @param keyType - The key type of the map\n         * @param valueType - The value type of the map\n         * @param options - Optional configuration for the map\n         * @returns A Type object representing the C# Dictionary<TKey, TValue> type\n         */\n        map: (keyType: Type, valueType: Type, options?: { dontSimplify?: boolean }) => {\n            return new Collection.Map(keyType, valueType, this, options);\n        },\n        /**\n         * Creates an IDictionary type.\n         *\n         * @param keyType - The key type of the dictionary\n         * @param valueType - The value type of the dictionary\n         * @param options - Optional configuration for the dictionary\n         * @returns A Type object representing the C# IDictionary<TKey, TValue> type\n         */\n        idictionary: (keyType: Type, valueType: Type, options?: { dontSimplify?: boolean }) => {\n            return new Collection.IDictionary(keyType, valueType, this, options);\n        },\n        /**\n         * Creates a KeyValuePair type.\n         *\n         * @param keyType - The key type of the pair\n         * @param valueType - The value type of the pair\n         * @returns A Type object representing the C# KeyValuePair<TKey, TValue> type\n         */\n        keyValuePair: (keyType: Type, valueType: Type) => {\n            return new Collection.KeyValuePair(keyType, valueType, this);\n        }\n    });\n\n    public readonly format = lazy({\n        private: (name: string) => `_${text.camelCase(name)}`\n    });\n\n    /** This is called (once) before any generator actually starts to generate code.\n     * It offers a last-chance to validate or modify the generation before certain things are fixed in place.\n     * If this returns false, the generation should be aborted.\n     */\n    public initialize(): boolean {\n        return this.initializers.implicitNamespaces;\n    }\n\n    /** One-time initializers that are called before any generator actually starts to generate code. */\n    public readonly initializers = lazy({\n        implicitNamespaces: () => {\n            // add all the implicit namespaces\n            for (const namespace of this.namespaces.implicit) {\n                this.registry.addImplicitNamespace(namespace);\n            }\n            return true;\n        }\n    });\n\n    /** Provides access to .NET System namespace types and utilities */\n    public get System() {\n        return this.extern.System;\n    }\n\n    /** Provides access to NUnit testing framework types */\n    public get NUnit() {\n        return this.extern.NUnit;\n    }\n\n    /** Provides access to OneOf discriminated union library types */\n    public get OneOf() {\n        return this.extern.OneOf;\n    }\n\n    /** Provides access to Google protocol buffer types */\n    public get Google() {\n        return this.extern.Google;\n    }\n    public get Grpc() {\n        return this.extern.Grpc;\n    }\n    /** Provides access to WireMock.Net testing/mocking library types */\n    public get WireMock() {\n        return this.extern.WireMock;\n    }\n\n    /**\n     * Returns a namespace string with a `global::` prefix if the first segment\n     * has a type-namespace conflict (e.g., class \"Candid\" shadowing namespace \"Candid.Net\").\n     * Use this when writing raw namespace strings in string interpolations to avoid CS0426.\n     */\n    public qualifyNamespace(ns: string): string {\n        const firstSegment = ns.split(\".\")[0];\n        if (firstSegment && this.registry.hasTypeNamespaceConflict(firstSegment)) {\n            return `global::${ns}`;\n        }\n        return ns;\n    }\n}\n","import { at } from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr as dynamic } from \"@fern-api/dynamic-ir-sdk\";\nimport { FernIr } from \"@fern-fern/ir-sdk\";\nimport { fail } from \"./utils/fail.js\";\n\ntype Name = FernIr.Name;\ntype NameAndWireValue = FernIr.NameAndWireValue;\n\nimport {\n    And,\n    Annotation,\n    AnnotationGroup,\n    AnonymousFunction,\n    AstNode,\n    Set as AstSet,\n    Block,\n    Class,\n    ClassInstantiation,\n    ClassReference,\n    CodeBlock,\n    ConstructorField,\n    Dictionary,\n    DictionaryEntry,\n    Enum,\n    EnumInstantiation,\n    Interface,\n    List,\n    Literal,\n    MethodInvocation,\n    Or,\n    Parameter,\n    InstantiatedPrimitive as PrimitiveInstantiation,\n    ReadOnlyMemory,\n    String_,\n    Switch,\n    Ternary,\n    TestClass,\n    XmlDocBlock\n} from \"./ast/index.js\";\nimport { Type } from \"./ast/types/IType.js\";\nimport { Generation } from \"./context/generation-info.js\";\nimport { IrNode, Origin } from \"./context/model-navigator.js\";\nimport { NameRegistry } from \"./context/name-registry.js\";\n\ninterface ClassRefArgsWithNamespace extends ClassReference.Args {\n    namespace: string;\n    enclosingType?: never;\n}\n\ninterface ClassRefArgsWithEnclosingType extends ClassReference.Args {\n    enclosingType: ClassReference;\n    namespace?: never;\n}\n\ninterface ClassRefWithOriginAndNamespace extends Omit<ClassReference.Args, \"name\"> {\n    origin: Origin;\n    namespace: string;\n}\n\ninterface ClassRefWithOriginAndEnclosingType extends Omit<ClassReference.Args, \"name\"> {\n    origin: Origin;\n    enclosingType: ClassReference;\n    namespace?: never;\n}\n\ninterface ClassArgsWithOrigin extends Class.Args {\n    origin: Origin;\n    name?: never;\n}\n\ninterface ClassArgsWithName extends Class.Args {\n    name: string;\n    origin?: never;\n}\n\ninterface ClassArgsWithReference extends Class.Args {\n    reference: ClassReference;\n    name?: never; // this should be propagated from reference\n    namespace?: never; // this should be propagated from reference\n    enclosingType?: never; // this should be propagated from reference\n    //origin?: never; // (TODO: removethis?)  this should be propagated from reference\n}\n\n/**\n * Main class for generating C# code using an Abstract Syntax Tree (AST) approach.\n *\n * This class serves as the primary factory and registry for creating C# code elements\n * including classes, methods, types, and other language constructs. It maintains\n * a name registry to ensure proper namespace handling and class reference management.\n *\n * The class supports a \"freeze\" mechanism where after freezing, any new class references\n * are tracked separately to help identify missing dependencies during code generation.\n *\n * ```\n */\nexport class CSharp {\n    /**\n     * Registry for managing class names and ensuring proper namespace resolution.\n     * This registry tracks all known classes and their fully qualified names.\n     * Now also handles member-level name registration and conflict resolution.\n     */\n\n    constructor(private readonly generation: Generation) {}\n\n    private get model() {\n        return this.generation.model;\n    }\n\n    /**\n     * Indicates whether the class reference registry has been frozen.\n     * When frozen, new class references are tracked separately in extraClassReferences.\n     */\n    frozen = false;\n\n    /**\n     * Map tracking class references that were created after the registry was frozen.\n     * Keys are fully qualified class names, values are sets of stack traces showing\n     * where these references were used.\n     */\n    extraClassReferences = new Map<string, Set<string>>();\n\n    /**\n     * Creates a reference to a C# class with the specified name and namespace.\n     *\n     * This method handles class reference creation and tracks usage when the registry\n     * is frozen. If the registry is frozen and the class reference is not already\n     * registered, it will be tracked in extraClassReferences with stack trace information.\n     *\n     * @param args - Configuration for the class reference including name, namespace, and optional generics\n     * @returns A ClassReference object representing the C# class\n     *\n     */\n    public classReference(\n        argz:\n            | ClassRefArgsWithNamespace\n            | ClassRefArgsWithEnclosingType\n            | ClassRefWithOriginAndNamespace\n            | ClassRefWithOriginAndEnclosingType\n    ): ClassReference {\n        return this.classReferenceInternal(argz as ClassReference.Args);\n    }\n\n    public classReferenceInternal(args: ClassReference.Args): ClassReference {\n        // if we're given an origin, we need to turn that into a name\n        if (!args.name && \"origin\" in args && args.origin) {\n            args.name = this.model.getClassNameFor(args.origin);\n        }\n\n        if (args.enclosingType) {\n            if (args.namespace) {\n                throw new Error(`ClassReference: Both enclosingType and namespace cannot be provided`);\n            }\n            args.namespace = args.enclosingType.namespace;\n        }\n        const expectedFQN = NameRegistry.fullyQualifiedNameOf(args);\n        if (this.frozen) {\n            // check if the class reference is already known\n            if (!this.generation.registry.isRegisteredTypeName(expectedFQN)) {\n                // this wasn't in the registry before we were frozen.\n                let set = this.extraClassReferences.get(expectedFQN);\n                if (!set) {\n                    set = new Set();\n                    this.extraClassReferences.set(expectedFQN, set);\n                }\n\n                // remember where we saw this type being used\n                set.add(`${expectedFQN} -\\n${at()}`);\n            }\n        }\n        return this.generation.registry.registerClassReference(\n            args as ClassReference.Args & { namespace: string },\n            expectedFQN\n        );\n    }\n\n    /**\n     * Freezes the class reference registry, preventing new class registrations.\n     * After freezing, any new class references will be tracked in extraClassReferences.\n     * This is useful for identifying missing dependencies during code generation.\n     */\n    freezeClassReferences() {\n        this.frozen = true;\n    }\n\n    getPropertyName(\n        enclosingType: ClassReference,\n        property: (IrNode & { name: Name | dynamic.Name }) | (IrNode & { name: NameAndWireValue })\n    ) {\n        const expectedName = this.model.getPropertyNameFor(property);\n        const origin =\n            this.model.origin(property) ??\n            fail(`Origin not found for property: ${JSON.stringify(property).substring(0, 100)}`);\n\n        const value = enclosingType.getFieldName(origin, expectedName);\n\n        if (value) {\n            // we have been told there is a member that looks like the one we want.\n            return value;\n        }\n\n        // there isn't anything registered that looks like the one we want.\n        // we're going to complain, but give them the expected name for now.\n        // when we have the order of creation sorted all out, this should be an error.\n        // this.generation.logger.warn(\n        //   `NOTE: getPropertyName: ${enclosingType.fullyQualifiedName} using unregistered property ${expectedName}`\n        // );\n        return expectedName;\n    }\n\n    /**\n     * Creates a C# class definition.\n     *\n     * @param args - Configuration for the class including name, namespace, fields, methods, etc.\n     * @returns A Class object representing the C# class definition\n     */\n    class_(args: ClassArgsWithOrigin | ClassArgsWithName | ClassArgsWithReference): Class {\n        let classArgs: Class.Args = args as Class.Args;\n        if (\"reference\" in args) {\n            classArgs = { ...args.reference, ...args };\n        }\n        return new Class(classArgs, this.generation);\n    }\n\n    /**\n     * Creates a C# test class definition with NUnit test framework attributes.\n     *\n     * @param args - Configuration for the test class\n     * @returns A TestClass object representing the C# test class definition\n     */\n    public testClass(args: TestClass.Args): TestClass {\n        return new TestClass(args, this.generation);\n    }\n\n    /**\n     * Creates a C# attribute/annotation.\n     *\n     * @param args - Configuration for the annotation including name and parameters\n     * @returns An Annotation object representing the C# attribute\n     */\n    public annotation(args: Annotation.Args): Annotation {\n        return new Annotation(args, this.generation);\n    }\n\n    /**\n     * Creates a C# annotation group (multiple attributes in a single bracket).\n     *\n     * @param args - Configuration for the annotation group including multiple references\n     * @returns An AnnotationGroup object representing multiple C# attributes\n     * @example [Nullable, Optional]\n     */\n    public annotationGroup(args: AnnotationGroup.Args): AnnotationGroup {\n        return new AnnotationGroup(args, this.generation);\n    }\n\n    /**\n     * Creates a C# class instantiation (new ClassName() expression).\n     *\n     * @param args - Configuration for the class instantiation including class reference and constructor arguments\n     * @returns A ClassInstantiation object representing the C# object creation\n     */\n    public instantiateClass(args: ClassInstantiation.Args): ClassInstantiation {\n        return new ClassInstantiation(args, this.generation);\n    }\n\n    /**\n     * Creates a C# method invocation expression.\n     *\n     * @param args - Configuration for the method invocation including method reference and arguments\n     * @returns A MethodInvocation object representing the C# method call\n     */\n    public invokeMethod(args: MethodInvocation.Args): MethodInvocation {\n        return new MethodInvocation(args, this.generation);\n    }\n\n    /**\n     * Creates a C# code block containing multiple statements.\n     *\n     * @param arg - Configuration for the code block including statements\n     * @returns A CodeBlock object representing the C# code block\n     */\n    public codeblock(arg: CodeBlock.Arg): CodeBlock {\n        return new CodeBlock(arg, this.generation);\n    }\n\n    public code(): Block {\n        return new Block({}, this.generation);\n    }\n\n    /**\n     * Creates a C# anonymous function (lambda expression).\n     *\n     * @param args - Configuration for the anonymous function including parameters and body\n     * @returns An AnonymousFunction object representing the C# lambda\n     */\n    public anonymousFunction(args: AnonymousFunction.Args): AnonymousFunction {\n        return new AnonymousFunction(args);\n    }\n\n    /**\n     * Creates a C# method parameter.\n     *\n     * @param args - Configuration for the parameter including name, type, and modifiers\n     * @returns A Parameter object representing the C# parameter\n     */\n    public parameter(args: Parameter.Args): Parameter {\n        return new Parameter(args, this.generation);\n    }\n\n    /**\n     * Creates a C# interface definition.\n     *\n     * @param args - Configuration for the interface including name, namespace, and members\n     * @returns An Interface object representing the C# interface\n     */\n    public interface_(args: Interface.Args): Interface {\n        return new Interface(args, this.generation);\n    }\n\n    /**\n     * Creates a C# enum definition.\n     *\n     * @param args - Configuration for the enum including name, namespace, and values\n     * @returns An Enum object representing the C# enum\n     */\n    public enum_(args: Enum.Args): Enum {\n        return new Enum(args, this.generation);\n    }\n\n    /**\n     * Creates a C# dictionary literal expression.\n     *\n     * @param args - Configuration for the dictionary including key-value pairs\n     * @returns A Dictionary object representing the C# dictionary literal\n     */\n    public dictionary(args: Dictionary.Args): Dictionary {\n        return new Dictionary(args, this.generation);\n    }\n\n    /**\n     * Creates a C# list literal expression.\n     *\n     * @param args - Configuration for the list including elements\n     * @returns A List object representing the C# list literal\n     */\n    public list(args: List.Args): List {\n        return new List(args, this.generation);\n    }\n\n    /**\n     * Creates a C# ReadOnlyMemory<T> expression.\n     *\n     * @param args - Configuration for the ReadOnlyMemory including element type and value\n     * @returns A ReadOnlyMemory object representing the C# ReadOnlyMemory expression\n     */\n    public readOnlyMemory(args: ReadOnlyMemory.Args): ReadOnlyMemory {\n        return new ReadOnlyMemory(args, this.generation);\n    }\n\n    /**\n     * Creates a C# set literal expression.\n     *\n     * @param args - Configuration for the set including elements\n     * @returns A Set object representing the C# set literal\n     */\n    public set(args: AstSet.Args): AstSet {\n        return new AstSet(args, this.generation);\n    }\n\n    /**\n     * Creates a C# switch statement or expression.\n     *\n     * @param args - Configuration for the switch including expression and cases\n     * @returns A Switch object representing the C# switch statement\n     */\n    public switch_(args: Switch.Args): Switch {\n        return new Switch(args, this.generation);\n    }\n\n    /**\n     * Creates a C# ternary operator expression (condition ? trueValue : falseValue).\n     *\n     * @param args - Configuration for the ternary including condition, true value, and false value\n     * @returns A Ternary object representing the C# ternary expression\n     */\n    public ternary(args: Ternary.Args): Ternary {\n        return new Ternary(args, this.generation);\n    }\n\n    /**\n     * Creates a C# logical AND expression (&&).\n     *\n     * @param args - Configuration for the AND expression including left and right operands\n     * @returns An And object representing the C# logical AND expression\n     */\n    public and(args: And.Args): And {\n        return new And(args, this.generation);\n    }\n\n    /**\n     * Creates a C# logical OR expression (||).\n     *\n     * @param args - Configuration for the OR expression including left and right operands\n     * @returns An Or object representing the C# logical OR expression\n     */\n    public or(args: Or.Args): Or {\n        return new Or(args, this.generation);\n    }\n\n    /**\n     * Creates a C# enum value instantiation.\n     *\n     * @param args - Configuration for the enum instantiation including enum reference and value\n     * @returns An EnumInstantiation object representing the C# enum value\n     */\n    public enumInstantiation(args: EnumInstantiation.Args): EnumInstantiation {\n        return new EnumInstantiation(args, this.generation);\n    }\n\n    /**\n     * Creates a C# string literal expression.\n     *\n     * @param args - Configuration for the string including value and formatting\n     * @returns A String_ object representing the C# string literal\n     */\n    public string_(args: String_.Args): String_ {\n        return new String_(args, this.generation);\n    }\n\n    /**\n     * Creates a C# XML documentation block.\n     *\n     * @param arg - Configuration for the XML documentation including content\n     * @returns An XmlDocBlock object representing the C# XML documentation\n     */\n    public xmlDocBlock(arg: XmlDocBlock.Arg): XmlDocBlock {\n        return new XmlDocBlock(arg, this.generation);\n    }\n\n    /**\n     * Factory methods for creating primitive value instantiations.\n     * These methods create PrimitiveInstantiation objects that represent literal values\n     * in the generated C# code.\n     */\n    public InstantiatedPrimitive = {\n        /**\n         * Creates a string literal instantiation.\n         *\n         * @param value - The string value\n         * @returns A PrimitiveInstantiation representing the string literal\n         */\n        string: (value: string) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"string\",\n                    value\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates a boolean literal instantiation.\n         *\n         * @param value - The boolean value\n         * @returns A PrimitiveInstantiation representing the boolean literal\n         */\n        boolean: (value: boolean) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"boolean\",\n                    value\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates an integer literal instantiation.\n         *\n         * @param value - The integer value\n         * @returns A PrimitiveInstantiation representing the integer literal\n         */\n        integer: (value: number) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"integer\",\n                    value\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates a long literal instantiation.\n         *\n         * @param value - The long value\n         * @returns A PrimitiveInstantiation representing the long literal\n         */\n        long: (value: number) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"long\",\n                    value\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates an unsigned integer literal instantiation.\n         *\n         * @param value - The unsigned integer value\n         * @returns A PrimitiveInstantiation representing the uint literal\n         */\n        uint: (value: number) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"uint\",\n                    value\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates an unsigned long literal instantiation.\n         *\n         * @param value - The unsigned long value\n         * @returns A PrimitiveInstantiation representing the ulong literal\n         */\n        ulong: (value: number) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"ulong\",\n                    value\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates a float literal instantiation.\n         *\n         * @param value - The float value\n         * @returns A PrimitiveInstantiation representing the float literal\n         */\n        float: (value: number) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"float\",\n                    value\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates a double literal instantiation.\n         *\n         * @param value - The double value\n         * @returns A PrimitiveInstantiation representing the double literal\n         */\n        double: (value: number) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"double\",\n                    value\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates a date literal instantiation.\n         *\n         * @param value - The date value as a string\n         * @returns A PrimitiveInstantiation representing the date literal\n         */\n        date: (value: string) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"date\",\n                    value\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates a DateTime literal instantiation.\n         *\n         * @param value - The DateTime value\n         * @param parse - Whether to parse the DateTime value (default: true)\n         * @returns A PrimitiveInstantiation representing the DateTime literal\n         */\n        dateTime: (value: Date, parse = true) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"dateTime\",\n                    value,\n                    parse\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates a UUID literal instantiation.\n         *\n         * @param value - The UUID value as a string\n         * @returns A PrimitiveInstantiation representing the UUID literal\n         */\n        uuid: (value: string) => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"uuid\",\n                    value\n                },\n                this.generation\n            );\n        },\n\n        /**\n         * Creates a null literal instantiation.\n         *\n         * @returns A PrimitiveInstantiation representing the null literal\n         */\n        null: () => {\n            return new PrimitiveInstantiation(\n                {\n                    type: \"null\"\n                },\n                this.generation\n            );\n        }\n    };\n\n    /**\n     * Factory methods for creating C# type literals.\n     * These methods create Literal objects that represent literal values\n     * and object initializers in the generated C# code.\n     */\n    public Literal = {\n        /**\n         * Creates a class literal with constructor field initialization.\n         *\n         * @param reference - The class reference\n         * @param fields - Array of constructor fields to initialize\n         * @returns A Literal object representing the class initialization\n         */\n        class_: ({ reference, fields }: { reference: ClassReference; fields: ConstructorField[] }): Literal => {\n            return new Literal.Class_(reference, fields, this.generation);\n        },\n\n        /**\n         * Creates a dictionary literal with key-value pairs.\n         *\n         * @param keyType - The type of dictionary keys\n         * @param valueType - The type of dictionary values\n         * @param entries - Array of dictionary entries\n         * @returns A Literal object representing the dictionary initialization\n         */\n        dictionary: ({\n            keyType,\n            valueType,\n            entries\n        }: {\n            keyType: Type;\n            valueType: Type;\n            entries: DictionaryEntry[];\n        }): Literal => {\n            return new Literal.Dictionary(keyType, valueType, entries, this.generation);\n        },\n\n        /**\n         * Creates a list literal with elements.\n         *\n         * @param valueType - The type of list elements\n         * @param values - Array of literal values\n         * @returns A Literal object representing the list initialization\n         */\n        list: ({ valueType, values }: { valueType: Type; values: Literal[] }): Literal => {\n            return new Literal.List(valueType, values, this.generation);\n        },\n\n        /**\n         * Creates a set literal with elements.\n         *\n         * @param valueType - The type of set elements\n         * @param values - Array of literal values\n         * @returns A Literal object representing the set initialization\n         */\n        set: ({ valueType, values }: { valueType: Type; values: Literal[] }): Literal => {\n            return new Literal.Set(valueType, values, this.generation);\n        },\n\n        /**\n         * Creates a boolean literal.\n         *\n         * @param value - The boolean value\n         * @returns A Literal object representing the boolean literal\n         */\n        boolean: (value: boolean): Literal => {\n            return new Literal.Boolean(value, this.generation);\n        },\n\n        /**\n         * Creates a float literal.\n         *\n         * @param value - The float value\n         * @returns A Literal object representing the float literal\n         */\n        float: (value: number): Literal => {\n            return new Literal.Float(value, this.generation);\n        },\n\n        /**\n         * Creates a date literal.\n         *\n         * @param value - The date value as a string\n         * @returns A Literal object representing the date literal\n         */\n        date: (value: string): Literal => {\n            return new Literal.Date(value, this.generation);\n        },\n\n        /**\n         * Creates a DateTime literal.\n         *\n         * @param value - The DateTime value as a string\n         * @returns A Literal object representing the DateTime literal\n         */\n        datetime: (value: string): Literal => {\n            return new Literal.DateTime(value, this.generation);\n        },\n\n        /**\n         * Creates a decimal literal.\n         *\n         * @param value - The decimal value\n         * @returns A Literal object representing the decimal literal\n         */\n        decimal: (value: number): Literal => {\n            return new Literal.Decimal(value, this.generation);\n        },\n\n        /**\n         * Creates a double literal.\n         *\n         * @param value - The double value\n         * @returns A Literal object representing the double literal\n         */\n        double: (value: number): Literal => {\n            return new Literal.Double(value, this.generation);\n        },\n\n        /**\n         * Creates an integer literal.\n         *\n         * @param value - The integer value\n         * @returns A Literal object representing the integer literal\n         */\n        integer: (value: number): Literal => {\n            return new Literal.Integer(value, this.generation);\n        },\n\n        /**\n         * Creates a long literal.\n         *\n         * @param value - The long value\n         * @returns A Literal object representing the long literal\n         */\n        long: (value: number): Literal => {\n            return new Literal.Long(value, this.generation);\n        },\n\n        /**\n         * Creates an unsigned integer literal.\n         *\n         * @param value - The unsigned integer value\n         * @returns A Literal object representing the uint literal\n         */\n        uint: (value: number): Literal => {\n            return new Literal.Uint(value, this.generation);\n        },\n\n        /**\n         * Creates an unsigned long literal.\n         *\n         * @param value - The unsigned long value\n         * @returns A Literal object representing the ulong literal\n         */\n        ulong: (value: number): Literal => {\n            return new Literal.Ulong(value, this.generation);\n        },\n\n        /**\n         * Creates a reference literal.\n         *\n         * @param value - The AST node reference\n         * @returns A Literal object representing the reference literal\n         */\n        reference: (value: AstNode): Literal => {\n            return new Literal.Reference(value, this.generation);\n        },\n\n        /**\n         * Creates a string literal.\n         *\n         * @param value - The string value\n         * @returns A Literal object representing the string literal\n         */\n        string: (value: string): Literal => {\n            return new Literal.String(value, this.generation);\n        },\n\n        /**\n         * Creates a null literal.\n         *\n         * @returns A Literal object representing the null literal\n         */\n        null: (): Literal => {\n            return new Literal.Null(this.generation);\n        },\n\n        /**\n         * Creates a no-operation literal (placeholder).\n         *\n         * @returns A Literal object representing a no-operation literal\n         */\n        nop: (): Literal => {\n            return new Literal.Nop(this.generation);\n        },\n\n        /**\n         * Creates an unknown type literal.\n         *\n         * @param value - The unknown value\n         * @returns A Literal object representing the unknown literal\n         */\n        unknown: (value: unknown): Literal => {\n            return new Literal.Unknown(value, this.generation);\n        }\n    };\n\n    /**\n     * Converts an XmlDocBlock-like object to an XmlDocBlock instance.\n     * If the input is already an XmlDocBlock, it returns it as-is.\n     * Otherwise, it creates a new XmlDocBlock from the input.\n     *\n     * @param xmlDocBlockLike - Either an XmlDocBlock instance or XmlDocBlock.Like object\n     * @returns An XmlDocBlock instance\n     */\n    public xmlDocBlockOf(xmlDocBlockLike: XmlDocBlock.Like): XmlDocBlock {\n        return xmlDocBlockLike instanceof XmlDocBlock\n            ? xmlDocBlockLike\n            : new XmlDocBlock(xmlDocBlockLike, this.generation);\n    }\n\n    /**\n     * The set of valid types supported by the 'read-only-memory-types' custom config option.\n     *\n     * The types are expressed in their C# type representation so that users can more easily\n     * control the generated code.\n     *\n     * Also note that we use the InternalType's type property to determine the type of the Type\n     * so that the two always remain in sync.\n     */\n    readonly VALID_READ_ONLY_MEMORY_TYPES = new Set<string>([\n        \"int\",\n        \"long\",\n        \"uint\",\n        \"ulong\",\n        \"string\",\n        \"bool\",\n        \"float\",\n        \"double\"\n    ]);\n\n    /**\n     * Validates that the read-only-memory-types custom config option contains only valid types.\n     *\n     * This method checks that all types specified in the 'read-only-memory-types' configuration\n     * are supported by the code generator. If any invalid types are found, it throws an error\n     * with details about which types are valid.\n     *\n     * @throws Error if any invalid types are found in the read-only-memory-types configuration\n     */\n    validateReadOnlyMemoryTypes(): void {\n        for (const type of this.generation.settings.readOnlyMemoryTypes) {\n            if (!this.VALID_READ_ONLY_MEMORY_TYPES.has(type)) {\n                throw new Error(\n                    `Type \"${type}\" is not a valid 'read-only-memory-types' custom config option; expected one of ${JSON.stringify(\n                        this.VALID_READ_ONLY_MEMORY_TYPES\n                    )}.`\n                );\n            }\n        }\n    }\n}\n","/**\n * @file Type canonicalization utilities for C# code generation.\n *\n * This module provides functionality to manage and canonicalize C# type names and namespaces\n * to avoid naming conflicts during code generation. It maintains registries of known types,\n * namespaces, and identifiers to ensure generated code follows C# naming conventions and\n * avoids conflicts with built-in types and namespaces.\n *\n * Key features:\n * - Type name conflict detection and resolution\n * - Namespace canonicalization and remapping\n * - Built-in type awareness and conflict avoidance\n * - Type registry persistence and restoration\n *\n */\n\nimport { type Field as AstField, ClassReference } from \"../ast/index.js\";\nimport { Generation } from \"../context/generation-info.js\";\nimport { Origin } from \"../context/model-navigator.js\";\nimport { fail } from \"../utils/fail.js\";\nimport { is } from \"../utils/type-guards.js\";\nimport { builtIns } from \"./knownTypes.js\";\n\n// C# Keywords and Reserved Names (from Registry)\nconst base_keywords = new Set([\n    \"abstract\",\n    \"as\",\n    \"base\",\n    \"bool\",\n    \"break\",\n    \"byte\",\n    \"case\",\n    \"catch\",\n    \"char\",\n    \"checked\",\n    \"class\",\n    \"const\",\n    \"continue\",\n    \"decimal\",\n    \"default\",\n    \"delegate\",\n    \"do\",\n    \"double\",\n    \"else\",\n    \"enum\",\n    \"event\",\n    \"explicit\",\n    \"extern\",\n    \"false\",\n    \"finally\",\n    \"fixed\",\n    \"float\",\n    \"for\",\n    \"foreach\",\n    \"goto\",\n    \"if\",\n    \"implicit\",\n    \"in\",\n    \"int\",\n    \"interface\",\n    \"internal\",\n    \"is\",\n    \"lock\",\n    \"long\",\n    \"namespace\",\n    \"new\",\n    \"null\",\n    \"object\",\n    \"operator\",\n    \"out\",\n    \"override\",\n    \"params\",\n    \"private\",\n    \"protected\",\n    \"public\",\n    \"readonly\",\n    \"ref\",\n    \"return\",\n    \"sbyte\",\n    \"sealed\",\n    \"short\",\n    \"sizeof\",\n    \"stackalloc\",\n    \"static\",\n    \"string\",\n    \"struct\",\n    \"switch\",\n    \"this\",\n    \"throw\",\n    \"true\",\n    \"try\",\n    \"typeof\",\n    \"uint\",\n    \"ulong\",\n    \"unchecked\",\n    \"unsafe\",\n    \"ushort\",\n    \"using\",\n    \"virtual\",\n    \"void\",\n    \"volatile\",\n    \"while\"\n]);\n\nconst accessor_keywords = new Set([\"get\", \"set\", \"init\", \"value\", \"add\", \"remove\"]);\nconst generic_keywords = new Set([\"where\"]);\nconst linq_keywords = new Set([\"from\", \"where\", \"select\", \"orderby\", \"groupby\", \"into\", \"let\", \"join\", \"on\", \"equals\"]);\nconst async_keywords = new Set([\"async\", \"await\"]);\nconst iterator_keywords = new Set([\"yield\"]);\nconst declarator_keywords = new Set([\"var\", \"dynamic\"]);\nconst using_keywords = new Set([\"using\", \"alias\"]);\nconst namespace_keywords = new Set([\"nameof\"]);\nconst modifier_keywords = new Set([\"required\", \"scoped\", \"unmanaged\", \"managed\"]);\nconst pattern_keywords = new Set([\"when\", \"and\", \"or\", \"not\"]);\nconst member_names = new Set([\"Equals\", \"GetHashCode\", \"ToString\", \"GetType\", \"MemberwiseClone\", \"Finalize\"]);\n\n// Generally, these are the keywords that we'd like to always avoid using for identifiers\nconst keywords = new Set([\n    ...base_keywords,\n    ...linq_keywords,\n    ...async_keywords,\n    ...iterator_keywords,\n    ...declarator_keywords,\n    ...using_keywords,\n    ...modifier_keywords,\n    ...pattern_keywords\n]);\n\ntype JsonPath = string;\ntype FullyQualifiedName = string;\n\n/**\n * Base class for identifiers in the name registry system.\n * Represents a named entity that is tracked by the NameRegistry.\n */\nclass Identifier {\n    constructor(\n        public readonly registry: NameRegistry,\n        public readonly name: string,\n        public readonly jsonPath?: JsonPath\n    ) {}\n}\n\n/**\n * An identifier that creates a scope where other identifiers can be nested.\n * Manages forbidden names and ensures unique names within the scope.\n */\nclass Scope extends Identifier {\n    private readonly forbidden = new Set<string>();\n\n    /**\n     * Makes a name off-limits within this scope.\n     * @param name - The name to forbid\n     */\n    forbid(name: string) {\n        this.forbidden.add(name);\n    }\n\n    /**\n     * Creates an identifier in this scope with the specified name.\n     * Two things cannot exist with the same name in the same scope.\n     * @param name - The name to create\n     */\n    create(name: string) {\n        //\n    }\n\n    /**\n     * Gets a name, appending an underscore if it's forbidden.\n     * @param name - The requested name\n     * @returns The name with an underscore suffix if forbidden, otherwise the original name\n     */\n    getName(name: string) {\n        if (this.forbidden.has(name)) {\n            return `${name}_`;\n        }\n        return name;\n    }\n}\n\n/**\n * Collection of members (fields or methods) within a TypeScope.\n * Maintains lookups by name and JSON path, and handles name redirections for conflict resolution.\n */\nclass Members<T extends Member> implements Iterable<T> {\n    constructor(private readonly scope: TypeScope) {}\n    private readonly byName = new Map<string, T>();\n    private readonly byPath = new Map<JsonPath, T>();\n    private readonly redirections = new Map<string, string>();\n\n    [Symbol.iterator](): Iterator<T> {\n        return this.byName.values();\n    }\n\n    /**\n     * Checks if a member with the given name exists in this collection.\n     * @param name - The member name to check\n     * @returns `true` if a member with this name exists, `false` otherwise\n     */\n    has(name: string): boolean {\n        return this.byName.has(name);\n    }\n\n    /**\n     * Retrieves a member by its JSON path from the IR.\n     * @param jsonPath - The JSON path identifying the member in the IR\n     * @returns The member if found, `undefined` otherwise\n     */\n    getByJsonPath(jsonPath: JsonPath): T | undefined {\n        return this.byPath.get(jsonPath);\n    }\n\n    /**\n     * Retrieves a member by its name.\n     * @param name - The member name to look up\n     * @returns The member if found, `undefined` otherwise\n     */\n    getByName(name: string): T | undefined {\n        return this.byName.get(name);\n    }\n\n    /**\n     * Gets the redirected name for a member if one exists.\n     * Redirections occur when a member's intended name conflicts with other identifiers.\n     * @param name - The original member name\n     * @returns The redirected name if one exists, `undefined` otherwise\n     */\n    getRedirectedName(name: string): string | undefined {\n        return this.redirections.get(name);\n    }\n\n    /**\n     * Adds a member to this collection.\n     * Fails if a member with the same name or JSON path already exists.\n     * @param member - The member to add\n     * @throws Error if the member already exists by name or JSON path\n     */\n    set(member: T) {\n        if (this.byName.has(member.name)) {\n            fail(`set: ${member.name} in ${this.scope.fullyQualifiedName} already exists`);\n        }\n        if (member.jsonPath && this.byPath.has(member.jsonPath)) {\n            fail(`set: ${member.name} in ${this.scope.fullyQualifiedName} already exists by jsonPath`);\n        }\n\n        this.byName.set(member.name, member);\n        if (member.jsonPath) {\n            this.byPath.set(member.jsonPath, member);\n        }\n    }\n\n    /**\n     * Registers a name redirection.\n     * This is used to track when a member's intended name was changed to avoid conflicts.\n     * @param name - The original name\n     * @param newName - The redirected name\n     * @throws Error if a redirection for this name already exists\n     */\n    redirect(name: string, newName: string) {\n        if (this.redirections.has(name)) {\n            fail(`redirect: ${name} in ${this.scope.fullyQualifiedName} already has a redirect`);\n        }\n        this.redirections.set(name, newName);\n    }\n}\n\n/**\n * Represents the scope of a type (class, struct, etc.) and manages its members.\n * Handles field and method name registration, conflict detection, and name resolution.\n */\nexport class TypeScope extends Identifier {\n    readonly fields: Members<Field>;\n    readonly methods: Members<Method>;\n\n    constructor(\n        registry: NameRegistry,\n        name: string,\n        readonly namespace: string,\n        readonly fullyQualifiedName: FullyQualifiedName\n    ) {\n        super(registry, name);\n        this.fields = new Members<Field>(this);\n        this.methods = new Members<Method>(this);\n    }\n\n    /**\n     * Checks if a name is a C# keyword.\n     * @param name - The name to check\n     * @returns `true` if the name is a C# keyword, `false` otherwise\n     */\n    isKeyword(name: string) {\n        return keywords.has(name);\n    }\n\n    /**\n     * Checks if a name is a built-in .NET member name (e.g., Equals, GetHashCode, ToString).\n     * @param name - The name to check\n     * @returns `true` if the name is a built-in member name, `false` otherwise\n     */\n    isBuiltinMemberName(name: string) {\n        return member_names.has(name);\n    }\n\n    /**\n     * Checks if a name matches this type's name.\n     * @param name - The name to check\n     * @returns `true` if the name matches this type's name, `false` otherwise\n     */\n    isTypeName(name: string) {\n        return this.name === name;\n    }\n\n    /**\n     * Checks if a name is already registered as a field in this type.\n     * @param name - The name to check\n     * @returns `true` if the name is a registered field, `false` otherwise\n     */\n    isField(name: string) {\n        return this.fields.has(name);\n    }\n\n    /**\n     * Checks if a name is already registered as a method in this type.\n     * @param name - The name to check\n     * @returns `true` if the name is a registered method, `false` otherwise\n     */\n    isMethod(name: string) {\n        return this.methods.has(name);\n    }\n\n    /**\n     * Checks if a name is registered as either a field or method in this type.\n     * @param name - The name to check\n     * @returns `true` if the name is a registered member, `false` otherwise\n     */\n    isMember(name: string) {\n        return this.isField(name) || this.isMethod(name);\n    }\n\n    /**\n     * Determines why a name is blocked from use, if at all.\n     * @param name - The name to check\n     * @returns The reason the name is blocked, or `undefined` if available\n     */\n    nameBlocked(name: string): \"keyword\" | \"builtin\" | \"typeName\" | \"field\" | \"method\" | undefined {\n        if (this.isKeyword(name)) {\n            return \"keyword\";\n        }\n        if (this.isBuiltinMemberName(name)) {\n            return \"builtin\";\n        }\n        if (this.isTypeName(name)) {\n            return \"typeName\";\n        }\n        if (this.isField(name)) {\n            return \"field\";\n        }\n        if (this.isMethod(name)) {\n            return \"method\";\n        }\n        return undefined;\n    }\n\n    /**\n     * Generates an alternative name when the requested name is blocked.\n     * Appends underscores and numbers until an available name is found.\n     * @param name - The blocked name\n     * @returns An available alternative name (e.g., \"name_\", \"name_2\", \"name_3\", etc.)\n     */\n    getAlternativeName(name: string): string {\n        // first append an underscore.\n        let newName = `${name}_`;\n\n        let i = 2;\n        while (this.nameBlocked(newName)) {\n            newName = `${name}_${i}`;\n            i++;\n        }\n\n        return newName;\n    }\n\n    /**\n     * Retrieves a field by its JSON path from the IR.\n     * @param jsonPath - The JSON path identifying the field\n     * @returns The field if found, `undefined` otherwise\n     */\n    getFieldByJsonPath(jsonPath?: string): Member | undefined {\n        return jsonPath !== undefined ? this.fields.getByJsonPath(jsonPath) : undefined;\n    }\n\n    /**\n     * Retrieves a field by its name.\n     * @param name - The field name to look up\n     * @returns The field if found, `undefined` otherwise\n     */\n    getFieldByName(name: string): Member | undefined {\n        return this.fields.getByName(name);\n    }\n\n    /**\n     * Gets the redirected name for a field if one exists.\n     * @param name - The original field name\n     * @returns The redirected name if one exists, `undefined` otherwise\n     */\n    getRedirectedFieldName(name: string): string | undefined {\n        return this.fields.getRedirectedName(name);\n    }\n\n    /**\n     * Registers a field in this type scope with conflict resolution.\n     * If the expected name is unavailable, an alternative name is chosen and a redirection is registered.\n     * @param expectedName - The desired field name\n     * @param origin - The IR origin node for this field\n     * @param field - The AST field object\n     * @returns The actual field name (may differ from expectedName if conflicts occurred)\n     */\n    registerField(expectedName: string, origin?: Origin, field?: AstField): string {\n        const jsonPath = this.registry.model.jsonPath(origin);\n        if (jsonPath) {\n            // quick lookup by json paths\n            const member = this.fields.getByJsonPath(jsonPath);\n            if (member) {\n                return member.name;\n            }\n        }\n\n        // lookup\n        const member = this.fields.getByName(expectedName);\n\n        if (member && jsonPath === member.jsonPath) {\n            // the origin the same, assume it's the same member.\n            return expectedName;\n        }\n\n        switch (this.nameBlocked(expectedName)) {\n            case \"field\":\n                // if the name we're asking for is already a field\n                // and they are creating a new field with the same name - this should only happen if the generator is trying to create a field with a specific name like \"Value\" and\n                // there is a property that came from the IR called \"Value\" that is already registered. (so if the origin is an explicitly named member we'll give them a new name)\n\n                if (!(origin && is.Provenance(origin) && origin.explicit)) {\n                    fail(\n                        `Field ${expectedName} already exists - attempting to add a duplicate field with the same name that is not an explicitly named property`\n                    );\n                }\n                break;\n\n            case \"keyword\":\n            case \"builtin\":\n            case \"typeName\":\n            case \"method\":\n                // if we're blocked because the name is a keyword/builtin/typename or an existing method, we can just get a new name, and the redirect will work fine.\n                break;\n\n            default:\n                // name is available, register it and return the name\n                this.fields.set(new Field(this.registry, expectedName, this, jsonPath, field));\n                this.registry.setFieldNameShortcut(jsonPath, expectedName);\n                return expectedName;\n        }\n\n        const newName = this.getAlternativeName(expectedName);\n        this.fields.set(new Field(this.registry, newName, this, jsonPath, field));\n        this.fields.redirect(expectedName, newName);\n        this.registry.setFieldNameShortcut(jsonPath, newName);\n\n        return newName;\n    }\n\n    /**\n     * Retrieves the name of a field given an origin and expected name.\n     * This method performs intelligent lookup considering IR origins and explicit property names.\n     *\n     * IMPORTANT: This method DOES NOT register the field in the type scope.\n     *\n     * @param node - The IR origin node for the field\n     * @param expectedName - The expected field name\n     * @returns The actual field name if found or inferred, `undefined` otherwise\n     */\n    getFieldName(node: Origin, expectedName: string): string | undefined {\n        // if we have already identified this node's name then return that quickly.\n        const result = this.getFieldByJsonPath(this.registry.model.jsonPath(node))?.name;\n        if (result) {\n            return result;\n        }\n\n        // we are being asked to find a field that we didn't get a match on the jsonPath.\n        // given the origin however, we can are going to make a pretty good guess as to what the consumer is actually looking for.\n\n        if (is.Provenance(node)) {\n            // if the origin is an explicitly named property (aka one that the name is hand-coded in the generator)\n            // then we should check to see if that has been redirected.  If it has, then we can return the redirected name.\n            const redirectedName = this.getRedirectedFieldName(expectedName);\n            if (redirectedName) {\n                return redirectedName;\n            }\n\n            // if it hasn't been redirected, and there is a property by that name,\n            const property = this.getFieldByName(expectedName);\n            if (property) {\n                // does the property have an IR origin, if so, then this is not a good match (a hand-coded name shouldn't match a property that has an IR origin)\n                const provenance = this.registry.model.provenance(property.jsonPath);\n                if (provenance?.explicit) {\n                    // this is a good match, return the expected name\n                    return expectedName;\n                }\n                // this is not a good match (the hand-coded property should have been redirected)\n                // `BAD: getFieldName: ${this.fullyQualifiedName} for ${expectedName} found a IR-based property, but is being requested for an explicitly named property.`\n                // We should register a redirect\n                return `${expectedName}_`;\n            }\n\n            // there is no property by that name, so we're going to return the expected name\n            // `BAD: getFieldName: ${this.fullyQualifiedName} for ${expectedName} found no property by that name. You should register it before use.`\n            return expectedName;\n        }\n\n        // the origin is an IR node.\n\n        const property = this.getFieldByName(expectedName);\n        if (property) {\n            // there is an existing property by that name.\n            // if the property has an IR origin, then we're going to assume that these two are intended to be the same.\n            const provenance = this.registry.model.provenance(property.jsonPath);\n\n            if (provenance?.explicit) {\n                // if the origin is an IR node and the property has an explicitly named origin, then it will not be a match,\n                // this should have been redirected (this should be avoided if possible by making explicitly named properties created after properties that are IR-based)\n                // `BAD: getFieldName: ${this.fullyQualifiedName} for ${expectedName} found a IR-based property, but is being requested for an explicitly named property.`\n                // You should redirect the explicitly named property\n                return expectedName;\n            }\n\n            // this is a good match, (or at least it's not an explicitly named property) we'll return the name\n\n            return property.name;\n        }\n\n        // there is no registered property, we can check for a redirect\n        const actualName = this.getRedirectedFieldName(expectedName);\n\n        if (actualName) {\n            return actualName;\n        }\n\n        // there was no redirect. Is there a method by the expected name?\n        if (this.isMethod(expectedName)) {\n            // this means we have a method where we think we wanted a property.\n            // `BAD: getFieldName: ${this.fullyQualifiedName} for ${expectedName} found a method, but is being requested for a property.`\n            return undefined;\n        }\n\n        // there is no member by this name registered, I can't tell you that it is OK to use.\n        return undefined;\n    }\n}\n\n/**\n * Base class representing a member (field or method) within a TypeScope.\n */\nclass Member extends Identifier {\n    constructor(\n        registry: NameRegistry,\n        name: string,\n        public readonly scope: TypeScope,\n        jsonPath?: JsonPath\n    ) {\n        super(registry, name, jsonPath);\n    }\n}\n\n/**\n * Represents a field member within a type.\n */\nclass Field extends Member {\n    constructor(\n        registry: NameRegistry,\n        name: string,\n        scope: TypeScope,\n        jsonPath?: JsonPath,\n        readonly field?: AstField\n    ) {\n        super(registry, name, scope, jsonPath);\n    }\n}\n\n/**\n * Represents a method member within a type.\n */\nclass Method extends Member {}\n\n/**\n * Type/name canonicalization utilities for C# code generation.\n *\n * This class provides functionality to manage and canonicalize C# type names and namespaces\n * to avoid naming conflicts during code generation. It maintains registries of known types,\n * namespaces, and identifiers to ensure generated code follows C# naming conventions and\n * avoids conflicts with built-in types and namespaces.\n *\n * Key features:\n * - Type name conflict detection and resolution\n * - Namespace canonicalization and remapping\n * - Built-in type awareness and conflict avoidance\n * - Type registry persistence and restoration\n */\nexport class NameRegistry {\n    /**\n     * Registry mapping JSON paths from the IR to their ClassReference objects.\n     * Provides fast lookup of class references by their IR origin.\n     */\n    private readonly classReferenceByJsonPath = new Map<JsonPath, ClassReference>();\n\n    /**\n     * Registry mapping fully qualified type names to their canonical ClassReference objects.\n     * This registry tracks all known types and may contain remapped versions to avoid conflicts.\n     *\n     * Key format: \"Namespace.TypeName\" or \"Namespace.EnclosingType.TypeName\"\n     * Value: The canonical ClassReference for the type\n     */\n    private readonly typeRegistry = new Map<FullyQualifiedName, ClassReference>();\n\n    /**\n     * Registry mapping original namespace names to their canonical (potentially remapped) versions.\n     * This is used to track namespace remappings that occur during conflict resolution.\n     *\n     * Key: Original namespace name\n     * Value: Canonical namespace name (may be modified to avoid conflicts)\n     */\n    private readonly namespaceRegistry = new Map<string, string>();\n\n    /**\n     * Registry tracking type names that exist in multiple namespaces, making them ambiguous.\n     * These types should be explicitly qualified when used to avoid compilation errors.\n     *\n     * Key: Type name (e.g., \"String\", \"Object\")\n     * Value: Set of namespaces where this type name exists\n     */\n    private readonly typeNames = new Map<string, Set<string>>();\n\n    /**\n     * Registry tracking namespace names that appear in multiple contexts.\n     * Used for detecting ambiguous namespace references.\n     *\n     * Key: Namespace segment (e.g., \"Collections\", \"Data\")\n     * Value: Set of parent namespace paths where this segment appears\n     */\n    private readonly namespaceNames = new Map<string, Set<string>>();\n\n    /**\n     * Set of namespaces that are implicitly imported/available.\n     * Types in nested namespaces under these prefixes are tracked for ambiguity detection.\n     */\n    private readonly implicitNamespaces = new Set<string>();\n\n    /**\n     * Shortcut mapping JSON paths to field names for fast lookup.\n     * Enables quick field name resolution without needing to know the containing type.\n     */\n    private readonly shortcuts = new Map<string, string>();\n\n    /**\n     * Set of well-known C# identifiers that should be avoided or handled carefully during code generation.\n     * These include common .NET Framework namespaces and types that could cause naming conflicts.\n     *\n     * This set is populated with:\n     * - Common .NET Framework namespace segments\n     * - Built-in type names from the builtIns registry\n     * - Namespace segments from all known built-in types\n     */\n    private readonly knownBuiltInIdentifiers = new Set([\n        \"Text\",\n        \"Json\",\n        \"Xml\",\n        \"Security\",\n        \"Collections\",\n        \"Data\",\n        \"Diagnostics\",\n        \"Globalization\",\n        \"Math\",\n        \"Reflection\",\n        \"Runtime\",\n        \"Security\",\n        \"Serialization\",\n        \"Threading\",\n        \"Xml\"\n    ]);\n\n    constructor(readonly generation: Generation) {\n        this.initializeBuiltIns();\n    }\n\n    /**\n     * Gets the CSharp generation context.\n     * @returns The CSharp generation context\n     */\n    get csharp() {\n        return this.generation.csharp;\n    }\n\n    /**\n     * Gets the model navigator for accessing the IR.\n     * @returns The model navigator\n     */\n    get model() {\n        return this.generation.model;\n    }\n\n    /**\n     * Initializes the known identifiers set with all built-in types and namespace segments.\n     * This populates the registry with .NET Framework types to enable conflict detection\n     * and ensures generated code doesn't conflict with framework types.\n     */\n    private initializeBuiltIns(): void {\n        for (const [namespace, types] of Object.entries(builtIns)) {\n            // Add each namespace segment to known identifiers\n            namespace.split(\".\").forEach((segment) => this.knownBuiltInIdentifiers.add(segment));\n            // Add each built-in type name to known identifiers\n            types.forEach((type) => this.knownBuiltInIdentifiers.add(type));\n        }\n\n        // Initialize the typeNames registry with built-in types to enable conflict detection.\n        // This allows us to identify when user-defined types might conflict with .NET Framework types.\n        for (const [namespace, names] of Object.entries(builtIns)) {\n            for (const name of names) {\n                this.typeNames.set(name, new Set([namespace]));\n            }\n\n            // and the first word of the namespace itself\n            const firstWord = namespace.split(\".\")[0];\n            if (firstWord) {\n                this.typeNames.set(firstWord, new Set([namespace]));\n            }\n        }\n        this.typeNames.set(\"System\", new Set([\"System\"]));\n        this.typeNames.set(\"NUnit\", new Set([\"NUnit\"]));\n        this.typeNames.set(\"OneOf\", new Set([\"OneOf\"]));\n        // Also track NUnit and OneOf as known built-in identifiers so they\n        // are excluded from type-namespace conflict detection (just like System)\n        this.knownBuiltInIdentifiers.add(\"NUnit\");\n        this.knownBuiltInIdentifiers.add(\"OneOf\");\n    }\n\n    /**\n     * Registers a shortcut mapping from JSON path to field name.\n     * This enables fast field name lookup by IR origin without knowing the containing type.\n     * @param jsonPath - The JSON path from the IR\n     * @param name - The field name to associate with this JSON path\n     */\n    setFieldNameShortcut(jsonPath: JsonPath | undefined, name: string): void {\n        if (jsonPath) {\n            const current = this.shortcuts.get(jsonPath);\n            if (current && current !== name) {\n                fail(\n                    `BAD_BAD_BAD setFieldNameShortcut: ${jsonPath} already has a name: ${current} - while setting to ${name} - if this is happening, then you could be getting back the wrong name later!`\n                );\n            }\n            this.shortcuts.set(jsonPath, name);\n        }\n    }\n\n    /**\n     * Retrieves the name of a previously registered field using only its IR origin.\n     *\n     * This provides a shortcut for field name lookup without needing to know the containing type,\n     * which is particularly useful when generating examples and snippets.\n     *\n     * Note: It is remotely possible that two fields generated from the same IR origin node could\n     * have different names. This scenario is detected and logged by `setFieldNameShortcut`.\n     * If this becomes an issue, the type must be resolved before retrieving the field name.\n     *\n     * @param origin - The IR origin node for the field\n     * @returns The field name if found, `undefined` otherwise\n     */\n    getFieldNameByOrigin(origin: Origin | undefined): string | undefined {\n        return this.shortcuts.get(this.model.jsonPath(origin) ?? \">ignore<\");\n    }\n\n    /**\n     * Checks if the given identifier is a well-known C# identifier that should be handled carefully.\n     *\n     * @param identifier - The identifier to check (e.g., \"String\", \"Collections\", \"System\")\n     * @returns `true` if the identifier is a known C# identifier that could cause conflicts, `false` otherwise\n     *\n     * @example\n     * ```typescript\n     * nameRegistry.isKnownBuiltInIdentifier(\"String\"); // true - conflicts with System.String\n     * nameRegistry.isKnownBuiltInIdentifier(\"MyCustomType\"); // false - safe to use\n     * ```\n     */\n    public isKnownBuiltInIdentifier(identifier: string): boolean {\n        if (!identifier || typeof identifier !== \"string\") {\n            return false;\n        }\n        return this.knownBuiltInIdentifiers.has(identifier);\n    }\n\n    /**\n     * Checks if a namespace has been registered in the namespace registry.\n     * This includes both original namespaces and their canonical (potentially remapped) versions.\n     *\n     * @param namespace - The namespace to check\n     * @returns `true` if the namespace is known/registered, `false` otherwise\n     *\n     * @example\n     * ```typescript\n     * nameRegistry.isKnownNamespace(\"System\"); // true - registered during initialization\n     * nameRegistry.isKnownNamespace(\"MyNamespace\"); // false - not yet registered\n     * ```\n     */\n    public isKnownNamespace(namespace: string): boolean {\n        if (!namespace || typeof namespace !== \"string\") {\n            return false;\n        }\n        return this.namespaceRegistry.has(namespace);\n    }\n\n    /**\n     * Checks if a fully qualified type name is registered in the type registry.\n     * This indicates whether the type has been encountered and processed during code generation.\n     *\n     * @param typeName - The fully qualified type name to check (e.g., \"System.String\", \"MyNamespace.MyType\")\n     * @returns `true` if the type is registered, `false` otherwise\n     *\n     * @example\n     * ```typescript\n     * nameRegistry.isRegisteredTypeName(\"System.String\"); // true - built-in type\n     * nameRegistry.isRegisteredTypeName(\"MyNamespace.MyType\"); // false - not yet registered\n     * ```\n     */\n    public isRegisteredTypeName(typeName: string): boolean {\n        return this.typeRegistry.has(typeName);\n    }\n\n    /**\n     * Determines if a type name is ambiguous (exists in multiple namespaces).\n     * Ambiguous type names should be explicitly qualified when used to avoid compilation errors.\n     *\n     * @param name - The type name to check for ambiguity (optional)\n     * @returns `true` if the type name exists in multiple namespaces and is ambiguous, `false` otherwise\n     *\n     * @example\n     * ```typescript\n     * nameRegistry.isAmbiguousTypeName(\"String\"); // true - exists in System and other namespaces\n     * nameRegistry.isAmbiguousTypeName(\"MyUniqueType\"); // false - only exists in one namespace\n     * nameRegistry.isAmbiguousTypeName(); // false - no name provided\n     * ```\n     */\n    public isAmbiguousTypeName(name?: string): boolean {\n        return name ? (this.typeNames.get(name)?.size ?? 0) > 1 : false;\n    }\n\n    /**\n     * Determines if a namespace name is ambiguous (appears in multiple contexts).\n     * @param name - The namespace name to check for ambiguity (optional)\n     * @returns `true` if the namespace name appears in multiple contexts, `false` otherwise\n     */\n    public isAmbiguousNamespaceName(name?: string): boolean {\n        return name ? (this.namespaceNames.get(name)?.size ?? 0) > 1 : false;\n    }\n\n    /**\n     * Checks if a name is both a registered type name and a root-level namespace segment.\n     * This detects cases where a class name shadows a namespace root, causing CS0426 errors.\n     *\n     * For example, if there's a class `Candid` in namespace `Candid.Net`, then any reference\n     * to `Candid.Net.Something` from within the `Candid.Net` namespace tree will fail because\n     * the C# compiler resolves `Candid` to the class instead of the namespace.\n     *\n     * @param name - The name to check (optional)\n     * @returns `true` if the name is both a type name and a root namespace segment, `false` otherwise\n     */\n    public hasTypeNamespaceConflict(name?: string): boolean {\n        if (!name) {\n            return false;\n        }\n        // Exclude known built-in identifiers (System, NUnit, OneOf, etc.) since these\n        // are framework names that don't create shadowing conflicts in user code.\n        // The conflict we're detecting is when a USER-DEFINED type name (like a client\n        // class \"Candid\") matches a root namespace segment (like \"Candid\" in \"Candid.Net\").\n        if (this.knownBuiltInIdentifiers.has(name)) {\n            return false;\n        }\n        // Check if this name is a tracked type name AND a root-level namespace segment\n        // (i.e., it appears as the first segment of some namespace, indicated by having\n        // an empty string \"\" as a parent in the namespaceNames registry)\n        return this.typeNames.has(name) && (this.namespaceNames.get(name)?.has(\"\") ?? false);\n    }\n\n    /**\n     * Generates a fully qualified name string from a class reference identity.\n     * For nested types, includes the enclosing type in the qualified name.\n     *\n     * @param classReference - The class reference identity to convert to a qualified name\n     * @param classReference.name - The type name\n     * @param classReference.namespace - The namespace containing the type\n     * @param classReference.enclosingType - Optional enclosing type for nested types\n     * @returns A fully qualified name string (e.g., \"Namespace.TypeName\" or \"Namespace.EnclosingType.TypeName\")\n     */\n    public static fullyQualifiedNameOf(classReference: ClassReference.Identity): string {\n        // Create a consistent string representation for registry keys.\n        // Nested types use '+' separator (matching .NET IL convention) to structurally\n        // distinguish them from types in sub-namespaces that would otherwise produce\n        // the same dotted path. For example:\n        //   Nested:      namespace=A, enclosingType=B, name=C  → \"A.B+C\"\n        //   Sub-namespace: namespace=A.B, name=C               → \"A.B.C\"\n        if (classReference.enclosingType) {\n            const enclosingFqn =\n                classReference.enclosingType.fullyQualifiedName ??\n                `${classReference.namespace}.${classReference.enclosingType.name}`;\n            return `${enclosingFqn}+${classReference.name}`;\n        }\n        return `${classReference.namespace}.${classReference.name}`;\n    }\n\n    /**\n     * Registers a namespace mapping, recording when an original namespace is remapped to a different name.\n     * Logs an error if attempting to register conflicting mappings for the same namespace.\n     * @param from - The original namespace name\n     * @param to - The canonical namespace name (potentially modified to avoid conflicts)\n     */\n    registerNamespace(from: string, to: string): void {\n        if (this.namespaceRegistry.has(from) && this.namespaceRegistry.get(from) !== to) {\n            return;\n        }\n\n        this.namespaceRegistry.set(from, to);\n    }\n\n    /**\n     * Registers a type in the type registry and updates related tracking data structures.\n     * This method is called when a new type is encountered during code generation.\n     * It handles JSON path mapping, namespace registration, and ambiguity tracking.\n     *\n     * @param classReference - The ClassReference to register\n     * @param originalFullyQualifiedName - Optional original fully qualified name before any remapping\n     * @returns The same ClassReference that was passed in (for method chaining)\n     *\n     * @example\n     * ```typescript\n     * const typeRef = csharp.classReference({ name: \"MyType\", namespace: \"MyNamespace\" });\n     * nameRegistry.trackType(typeRef); // Registers the type\n     * nameRegistry.trackType(typeRef, \"OriginalNamespace.MyType\"); // Also registers under original name\n     * ```\n     */\n    public trackType(classReference: ClassReference, originalFullyQualifiedName?: FullyQualifiedName): ClassReference {\n        const { name, namespace, enclosingType, fullyQualifiedName, origin } = classReference;\n\n        if (origin) {\n            const jsonPath =\n                this.model.jsonPath(origin) ??\n                fail(`JsonPath not found for origin: ${JSON.stringify(origin).substring(0, 100)}`);\n\n            this.classReferenceByJsonPath.set(jsonPath, classReference);\n        }\n\n        // if we were given an original name for the class reference, then register the type\n        if (\n            originalFullyQualifiedName &&\n            originalFullyQualifiedName !== fullyQualifiedName &&\n            !this.typeRegistry.has(originalFullyQualifiedName)\n        ) {\n            this.typeRegistry.set(originalFullyQualifiedName, classReference);\n        }\n\n        if (!this.typeRegistry.has(fullyQualifiedName)) {\n            // Register the type in the main registry\n            this.typeRegistry.set(fullyQualifiedName, classReference);\n\n            // Register all parent namespaces\n            for (const ns of this.allNamespacesOf(namespace)) {\n                this.registerNamespace(ns, ns);\n            }\n            // Track the type name and its namespace for ambiguity detection\n            if (!enclosingType) {\n                // Implementation Note:\n                // if the classReference is actually a nested type, we're going to skip\n                // tracking it for ambiguity for the moment, as the ambiguity would only be if the type\n                // was rendered in the enclosing type, and I don't think that happens.\n                // regardless, if we wanted to make sure that worked, we'd have to know the scope where\n                // the node was being rendered\n                // (ie, in the code generator, keep track of where we are, not *just* the current namespace)\n                this.trackTypeName(name, namespace);\n            }\n\n            for (const each of [this.generation.namespaces.root, ...this.implicitNamespaces]) {\n                if (namespace.startsWith(each)) {\n                    // get the next word of the namespace\n                    const trimmed = namespace.split(\".\")[each.split(\".\").length];\n\n                    if (trimmed) {\n                        this.trackTypeName(trimmed, namespace);\n                    }\n                }\n            }\n        }\n\n        return classReference;\n    }\n\n    /**\n     * Adds a namespace to the set of implicit namespaces.\n     * Implicit namespaces are used to automatically track type names from nested namespaces\n     * that start with the implicit namespace prefix.\n     *\n     * @param namespace - The namespace to add as an implicit namespace\n     *\n     * @example\n     * ```typescript\n     * nameRegistry.addImplicitNamespace(\"MyCompany\");\n     * // Now types in \"MyCompany.Products\" will automatically track \"Products\" as a type name\n     * ```\n     */\n    public addImplicitNamespace(namespace: string): void {\n        this.implicitNamespaces.add(namespace);\n    }\n\n    public isNamespaceImplicit(namespace: string): boolean {\n        return this.implicitNamespaces.has(namespace);\n    }\n\n    public get implicitlyImportedNamespaces(): string[] {\n        return [...this.implicitNamespaces];\n    }\n    /**\n     * Tracks a type name and its namespace for ambiguity detection.\n     * This method updates the typeNames registry to track which namespaces contain each type name,\n     * enabling detection of ambiguous type names that exist in multiple namespaces.\n     *\n     * @param name - The type name to track\n     * @param namespace - The namespace where this type name exists\n     *\n     * @example\n     * ```typescript\n     * nameRegistry.trackTypeName(\"String\", \"System\");\n     * nameRegistry.trackTypeName(\"String\", \"MyNamespace\");\n     * nameRegistry.isAmbiguousTypeName(\"String\"); // true - exists in multiple namespaces\n     * ```\n     */\n    public trackTypeName(name: string, namespace: string): void {\n        if (this.typeNames.has(name)) {\n            this.typeNames.get(name)?.add(namespace);\n        } else {\n            this.typeNames.set(name, new Set([namespace]));\n        }\n        // add namespace part names to the list of namespace names that we want to track for ambiguity\n        const parts = namespace.split(\".\");\n        let ns = \"\";\n        for (const each of parts) {\n            if (this.namespaceNames.has(each)) {\n                this.namespaceNames.get(each)?.add(ns);\n            } else {\n                this.namespaceNames.set(each, new Set([ns]));\n            }\n            ns = ns ? `${ns}.${each}` : each;\n        }\n    }\n\n    /**\n     * Generates all parent namespaces for a given namespace string.\n     * For example, \"System.Collections.Generic\" would return [\"System\", \"System.Collections\", \"System.Collections.Generic\"].\n     *\n     * @param namespace - The namespace to decompose into parent namespaces\n     * @returns A Set containing all parent namespaces, including the full namespace itself\n     *\n     * @example\n     * ```typescript\n     * nameRegistry.allNamespacesOf(\"System.Collections.Generic\");\n     * // Returns: Set([\"System\", \"System.Collections\", \"System.Collections.Generic\"])\n     * ```\n     */\n    public allNamespacesOf(namespace: string): Set<string> {\n        if (!namespace || typeof namespace !== \"string\") {\n            return new Set();\n        }\n\n        let fqNamespace = \"\";\n        const result = new Set<string>();\n\n        for (const part of namespace.split(\".\")) {\n            if (part.trim()) {\n                // Skip empty parts\n                fqNamespace = fqNamespace ? `${fqNamespace}.${part}` : `${part}`;\n                result.add(fqNamespace);\n            }\n        }\n\n        return result;\n    }\n\n    /**\n     * Creates and registers a new ClassReference with automatic conflict resolution.\n     * This is the primary method for creating class references. It ensures proper registration\n     * and resolves any naming conflicts with existing types or namespaces.\n     *\n     * The method performs several checks:\n     * - Looks up existing class references by IR origin (JSON path)\n     * - Resolves namespace remappings\n     * - Detects and resolves conflicts between types and namespaces\n     * - Handles duplicate type names from different IR origins\n     *\n     * @param classReferenceArgs - The arguments for creating the class reference\n     * @param expectedFQN - The expected fully qualified name before conflict resolution\n     * @returns A new or existing ClassReference, potentially with modified names to avoid conflicts\n     *\n     * @example\n     * ```typescript\n     * const classRef = nameRegistry.registerClassReference(\n     *   { name: \"MyType\", namespace: \"MyNamespace\", origin: irNode },\n     *   \"MyNamespace.MyType\"\n     * );\n     * ```\n     */\n    public registerClassReference(\n        classReferenceArgs: ClassReference.Args & { namespace: string },\n        expectedFQN: string\n    ): ClassReference {\n        let { name, namespace, enclosingType, origin } = classReferenceArgs;\n\n        // look it up by origin first, because if we have that, then we're dead-on accurate.\n        const callerJsonPath = this.model.jsonPath(origin);\n\n        // do we have a class reference already that matches (by origin, or failing that by name)\n        const classRef =\n            (callerJsonPath ? this.classReferenceByJsonPath.get(callerJsonPath) : undefined) ??\n            this.typeRegistry.get(expectedFQN);\n\n        const existingJsonPath = this.model.jsonPath(classRef?.origin);\n\n        // if the caller and the registered class reference have an origin, then then should be the same.\n        // if either of them don't have an origin, we can't make the comparison, and so have to trust the caller knows what they are asking for.\n        // (over time, we should be ensuring that all class references get an origin set.)\n        let quality =\n            existingJsonPath && callerJsonPath\n                ? existingJsonPath === callerJsonPath\n                    ? \"match\"\n                    : \"mismatch\"\n                : \"no origin\";\n\n        if (classRef && quality !== \"mismatch\") {\n            // we have a class reference that *should* be what we're looking for and\n            // either the origin matches or we don't have an origin on one end or the other to compare with.\n            // return the new instance of the class reference for the caller\n            // creates a clone\n\n            return new ClassReference(\n                {\n                    name: classRef.name,\n                    namespace: classRef.namespace,\n                    enclosingType: classRef.enclosingType,\n                    fullyQualifiedName: classRef.fullyQualifiedName,\n\n                    namespaceAlias: classReferenceArgs.namespaceAlias,\n                    fullyQualified: classReferenceArgs.fullyQualified,\n                    generics: classReferenceArgs.generics,\n                    global: classReferenceArgs.global,\n                    origin: classRef.origin ?? origin,\n                    isCollection: classRef.isCollection,\n                    isReferenceType: classRef.isReferenceType,\n                    multipartMethodName: classRef.multipartMethodName,\n                    multipartMethodNameForCollection: classRef.multipartMethodNameForCollection\n                },\n                // reuse the type scope from the existing class reference, because it's the common data across all copies of a class reference\n                classRef.scope,\n                this.generation\n            );\n        }\n\n        // no, we've never seen this class reference before.\n        // check to see if we have to adjust it to avoid conflicts\n        let modified = false;\n\n        // Resolve any namespace remappings first\n        const resolvedNamespace = this.resolveNamespace(namespace);\n        if (resolvedNamespace !== namespace) {\n            namespace = resolvedNamespace;\n            modified = true;\n        }\n\n        // Ensure no conflicts with existing types or namespaces\n        let fullyQualifiedName: FullyQualifiedName;\n        conflictResolution: while (true) {\n            fullyQualifiedName = NameRegistry.fullyQualifiedNameOf({ name, namespace, enclosingType });\n            let fqNamespace = \"\";\n            const parts = namespace.split(\".\");\n\n            // Check each namespace segment for conflicts with existing types\n            for (let i = 0; i < parts.length; i++) {\n                fqNamespace = fqNamespace ? `${fqNamespace}.${parts[i]}` : `${parts[i]}`;\n\n                if (this.typeRegistry.has(fqNamespace)) {\n                    // Found a conflict with an existing type, modify the namespace segment\n                    parts[i] = `${parts[i]}_`;\n                    namespace = parts.join(\".\");\n                    modified = true;\n\n                    // `RENAMING NAMESPACE: ${classReferenceArgs.namespace} to ${namespace} with existing fqNamespace: ${fqNamespace} caller: ${callerJsonPath} / existing: ${existingJsonPath}`\n\n                    continue conflictResolution;\n                }\n            }\n\n            // Cache namespace modifications\n            if (modified) {\n                this.registerNamespace(classReferenceArgs.namespace, namespace);\n            }\n\n            if (quality === \"mismatch\" && classRef?.name === name) {\n                // the origin mismatch means that the caller is asking for a different class reference, so we need to modify the type name\n                // this can be expected when there are multiple types with the same name (pagination!)\n\n                name = `${name}_`;\n                modified = true;\n                continue conflictResolution;\n            }\n\n            // Check if the fully qualified name conflicts with an existing namespace\n            if (this.namespaceRegistry.has(fullyQualifiedName)) {\n                // The type name conflicts with an existing namespace, modify the type name\n\n                name = `${name}_`;\n                modified = true;\n                continue conflictResolution;\n            }\n\n            // Check if the fully qualified name conflicts with an existing registered type\n            if (this.typeRegistry.has(fullyQualifiedName)) {\n                // The type name conflicts with an already-registered type (e.g., multiple endpoints\n                // with the same name producing test classes that all resolve to the same suffixed name)\n                name = `${name}_`;\n                modified = true;\n                continue conflictResolution;\n            }\n\n            // Cross-format ambiguity check: a nested type \"A.B+C\" and a non-nested type \"A.B.C\"\n            // would both resolve to \"A.B.C\" in C# source code, causing compilation ambiguity.\n            // Detect and resolve this by checking the alternate format.\n            if (enclosingType) {\n                // Nested type: check if a non-nested type with the same dotted path exists\n                const dottedFqn = fullyQualifiedName.replaceAll(\"+\", \".\");\n                if (this.typeRegistry.has(dottedFqn)) {\n                    name = `${name}_`;\n                    modified = true;\n                    continue conflictResolution;\n                }\n                // Nested type: also check if the dotted form conflicts with an existing namespace\n                // (the check at line 1186 uses the raw FQN which contains '+', so it won't match\n                // namespaces which only use '.' separators)\n                if (this.namespaceRegistry.has(dottedFqn)) {\n                    name = `${name}_`;\n                    modified = true;\n                    continue conflictResolution;\n                }\n            } else {\n                // Non-nested type: check all possible nested variations\n                // e.g., \"A.B.C.D\" could collide with \"A.B.C+D\", \"A.B+C+D\", \"A+B+C+D\", etc.\n                const segments = fullyQualifiedName.split(\".\");\n                for (let i = 1; i < segments.length; i++) {\n                    const nestedVariant = segments.slice(0, i).join(\".\") + \"+\" + segments.slice(i).join(\"+\");\n                    if (this.typeRegistry.has(nestedVariant)) {\n                        name = `${name}_`;\n                        modified = true;\n                        continue conflictResolution;\n                    }\n                }\n            }\n\n            // No conflicts found, we're good to go\n            break;\n        }\n\n        // Create and register the ClassReference\n        return this.trackType(\n            new ClassReference(\n                {\n                    name,\n                    namespace,\n                    enclosingType,\n                    namespaceAlias: classReferenceArgs.namespaceAlias,\n                    fullyQualified: classReferenceArgs.fullyQualified,\n                    generics: classReferenceArgs.generics,\n                    global: classReferenceArgs.global,\n                    fullyQualifiedName,\n                    origin,\n                    isCollection: classReferenceArgs.isCollection,\n                    isReferenceType: classReferenceArgs.isReferenceType,\n                    multipartMethodName: classReferenceArgs.multipartMethodName,\n                    multipartMethodNameForCollection: classReferenceArgs.multipartMethodNameForCollection\n                },\n                // the typescope is the common data across all copies of a class reference\n                new TypeScope(this, name, namespace, fullyQualifiedName),\n                this.generation\n            ),\n            expectedFQN\n        );\n    }\n\n    /**\n     * Resolves a namespace to its canonical version, checking for parent namespace remappings.\n     * This function handles cases where parent namespaces have been remapped due to conflicts.\n     *\n     * @param namespace - The namespace to resolve\n     * @returns The canonical namespace, which may be the original or a remapped version\n     *\n     * @example\n     * ```typescript\n     * // If \"System\" was remapped to \"System_\", then:\n     * nameRegistry.resolveNamespace(\"System.Collections\"); // Returns \"System_.Collections\"\n     * nameRegistry.resolveNamespace(\"MyNamespace\"); // Returns \"MyNamespace\" (unchanged)\n     * ```\n     */\n    public resolveNamespace(namespace: string): string {\n        const cached = this.namespaceRegistry.get(namespace);\n        if (cached !== undefined) {\n            return cached;\n        }\n\n        // Check if any parent namespaces have been remapped\n        const parts = namespace.split(\".\");\n\n        // Work backwards from the full namespace to each parent namespace\n        for (let i = parts.length - 1; i >= 0; i--) {\n            const parentNamespace = parts.slice(0, i).join(\".\");\n\n            if (this.namespaceRegistry.has(parentNamespace)) {\n                // Found a remapped parent namespace, construct the new full namespace\n                const remappedParent = this.namespaceRegistry.get(parentNamespace);\n                if (remappedParent !== undefined) {\n                    const remainingParts = parts.slice(i).join(\".\");\n                    const newNamespace = `${remappedParent}.${remainingParts}`;\n\n                    // Cache the result for future lookups\n                    this.registerNamespace(namespace, newNamespace);\n                    return newNamespace;\n                }\n            }\n        }\n\n        return namespace;\n    }\n\n    /**\n     * Canonicalizes a namespace by ensuring it doesn't conflict with existing types or namespaces.\n     * If conflicts are detected, the namespace is modified by appending underscores to conflicting segments.\n     *\n     * @param originalNamespace - The original namespace to canonicalize\n     * @returns The canonicalized namespace, which may be modified to avoid conflicts\n     *\n     * @example\n     * ```typescript\n     * // If \"System\" already exists as a type:\n     * nameRegistry.canonicalizeNamespace(\"System.MyNamespace\"); // Returns \"System_.MyNamespace\"\n     * nameRegistry.canonicalizeNamespace(\"MyNamespace\"); // Returns \"MyNamespace\" (unchanged)\n     * ```\n     */\n    public canonicalizeNamespace(originalNamespace: string): string {\n        const cached = this.namespaceRegistry.get(originalNamespace);\n        if (cached !== undefined) {\n            return cached;\n        }\n\n        let modified = false;\n        let namespace = originalNamespace;\n\n        // Ensure the namespace doesn't conflict with existing types or namespaces\n        conflictResolution: while (true) {\n            let fqNamespace = \"\";\n            const parts = namespace.split(\".\");\n\n            // Check each namespace segment for conflicts\n            for (let i = 0; i < parts.length; i++) {\n                fqNamespace = fqNamespace ? `${fqNamespace}.${parts[i]}` : `${parts[i]}`;\n\n                if (this.typeRegistry.has(fqNamespace)) {\n                    // Found a conflict with an existing type, modify the namespace segment\n                    parts[i] = `${parts[i]}_`;\n                    namespace = parts.join(\".\");\n                    modified = true;\n                    continue conflictResolution;\n                }\n            }\n\n            // No conflicts found, we're good to go\n            break;\n        }\n\n        // Cache the result if we made modifications\n        if (modified) {\n            this.registerNamespace(originalNamespace, namespace);\n        }\n\n        return namespace;\n    }\n}\n","/**\n * Type definition for built-in type mappings\n * Maps namespace names to arrays of type names within that namespace\n */\nexport type BuiltInTypeMap = Record<string, readonly string[]>;\n\n/**\n * Comprehensive mapping of built-in .NET types organized by namespace.\n *\n * This object contains all the standard .NET types that should be treated as built-ins\n * during code generation. Types listed here will be referenced directly rather than\n * generating wrapper classes or custom implementations.\n *\n * The structure is organized as:\n * - Key: Full namespace name (e.g., \"System\", \"System.Collections.Generic\")\n * - Value: Array of type names within that namespace\n *\n */\nexport const builtIns: BuiltInTypeMap = {\n    // Core System namespace - fundamental types, exceptions, and basic functionality\n    System: [\n        \"AccessViolationException\",\n        \"Action\",\n        \"Activator\",\n        \"AggregateException\",\n        \"AppContext\",\n        \"AppDomain\",\n        \"AppDomainSetup\",\n        \"AppDomainUnloadedException\",\n        \"ApplicationException\",\n        \"ApplicationId\",\n        \"ArgIterator\",\n        \"ArgumentException\",\n        \"ArgumentNullException\",\n        \"ArgumentOutOfRangeException\",\n        \"ArithmeticException\",\n        \"Array\",\n        \"ArrayTypeMismatchException\",\n        \"AssemblyLoadEventArgs\",\n        \"AssemblyLoadEventHandler\",\n        \"AsyncCallback\",\n        \"Attribute\",\n        \"AttributeTargets\",\n        \"AttributeUsageAttribute\",\n        \"BadImageFormatException\",\n        \"Base64FormattingOptions\",\n        \"BitConverter\",\n        \"Boolean\",\n        \"Buffer\",\n        \"Byte\",\n        \"CannotUnloadAppDomainException\",\n        \"Char\",\n        \"CharEnumerator\",\n        \"CLSCompliantAttribute\",\n        \"Console\",\n        \"ConsoleCancelEventArgs\",\n        \"ConsoleCancelEventHandler\",\n        \"ConsoleColor\",\n        \"ConsoleKey\",\n        \"ConsoleKeyInfo\",\n        \"ConsoleModifiers\",\n        \"ConsoleSpecialKey\",\n        \"ContextBoundObject\",\n        \"ContextMarshalException\",\n        \"ContextStaticAttribute\",\n        \"Convert\",\n        \"CultureAwareComparer\",\n        \"DataMisalignedException\",\n        \"DateOnly\",\n        \"DateTime\",\n        \"DateTimeKind\",\n        \"DateTimeOffset\",\n        \"DayOfWeek\",\n        \"DBNull\",\n        \"Decimal\",\n        \"Delegate\",\n        \"DivideByZeroException\",\n        \"DllNotFoundException\",\n        \"Double\",\n        \"DuplicateWaitObjectException\",\n        \"EntryPointNotFoundException\",\n        \"Enum\",\n        \"Environment\",\n        \"EnvironmentVariableTarget\",\n        \"EventArgs\",\n        \"EventHandler\",\n        \"Exception\",\n        \"ExecutionEngineException\",\n        \"FieldAccessException\",\n        \"FlagsAttribute\",\n        \"FormatException\",\n        \"FormattableString\",\n        \"GC\",\n        \"GCCollectionMode\",\n        \"GCGenerationInfo\",\n        \"GCKind\",\n        \"GCMemoryInfo\",\n        \"GCNotificationStatus\",\n        \"Guid\",\n        \"Half\",\n        \"HashCode\",\n        \"IAsyncDisposable\",\n        \"IAsyncResult\",\n        \"ICloneable\",\n        \"IComparable\",\n        \"IConvertible\",\n        \"ICustomFormatter\",\n        \"IDisposable\",\n        \"IFormatProvider\",\n        \"IFormattable\",\n        \"Index\",\n        \"IndexOutOfRangeException\",\n        \"InsufficientExecutionStackException\",\n        \"InsufficientMemoryException\",\n        \"Int128\",\n        \"Int16\",\n        \"Int32\",\n        \"Int64\",\n        \"IntPtr\",\n        \"InvalidCastException\",\n        \"InvalidOperationException\",\n        \"InvalidProgramException\",\n        \"InvalidTimeZoneException\",\n        \"ISpanFormattable\",\n        \"IUtf8SpanFormattable\",\n        \"LoaderOptimization\",\n        \"LoaderOptimizationAttribute\",\n        \"LocalDataStoreSlot\",\n        \"MarshalByRefObject\",\n        \"Math\",\n        \"MathF\",\n        \"MemberAccessException\",\n        \"MemoryExtensions\",\n        \"MethodAccessException\",\n        \"MidpointRounding\",\n        \"MissingFieldException\",\n        \"MissingMemberException\",\n        \"MissingMethodException\",\n        \"ModuleHandle\",\n        \"MTAThreadAttribute\",\n        \"MulticastDelegate\",\n        \"MulticastNotSupportedException\",\n        \"NonSerializedAttribute\",\n        \"NotFiniteNumberException\",\n        \"NotImplementedException\",\n        \"NotSupportedException\",\n        \"Nullable\",\n        \"NullReferenceException\",\n        \"Object\",\n        \"ObjectDisposedException\",\n        \"ObsoleteAttribute\",\n        \"OperatingSystem\",\n        \"OperationCanceledException\",\n        \"OrdinalComparer\",\n        \"OutOfMemoryException\",\n        \"OverflowException\",\n        \"ParamArrayAttribute\",\n        \"PlatformID\",\n        \"PlatformNotSupportedException\",\n        \"Random\",\n        \"Range\",\n        \"RankException\",\n        \"ResolveEventArgs\",\n        \"ResolveEventHandler\",\n        \"RuntimeArgumentHandle\",\n        \"RuntimeFieldHandle\",\n        \"RuntimeMethodHandle\",\n        \"RuntimeTypeHandle\",\n        \"SByte\",\n        \"SerializableAttribute\",\n        \"Single\",\n        \"StackOverflowException\",\n        \"STAThreadAttribute\",\n        \"String\",\n        \"StringComparer\",\n        \"StringComparison\",\n        \"StringNormalizationExtensions\",\n        \"StringSplitOptions\",\n        \"SystemException\",\n        \"ThreadStaticAttribute\",\n        \"TimeOnly\",\n        \"TimeoutException\",\n        \"TimeProvider\",\n        \"TimeSpan\",\n        \"TimeZone\",\n        \"TimeZoneInfo\",\n        \"TimeZoneNotFoundException\",\n        \"Tuple\",\n        \"TupleExtensions\",\n        \"Type\",\n        \"TypeAccessException\",\n        \"TypeCode\",\n        \"TypedReference\",\n        \"TypeInitializationException\",\n        \"TypeLoadException\",\n        \"TypeUnloadedException\",\n        \"UInt128\",\n        \"UInt16\",\n        \"UInt32\",\n        \"UInt64\",\n        \"UIntPtr\",\n        \"UnauthorizedAccessException\",\n        \"UnhandledExceptionEventArgs\",\n        \"UnhandledExceptionEventHandler\",\n        \"UnitySerializationHolder\",\n        \"ValueTuple\",\n        \"ValueType\",\n        \"Version\",\n        \"Void\",\n        \"WeakReference\",\n        \"Buffers\",\n        \"Collections\",\n        \"ComponentModel\",\n        \"Diagnostics\",\n        \"Globalization\",\n        \"IO\",\n        \"Linq\",\n        \"Net\",\n        \"Numerics\",\n        \"Reflection\",\n        \"Resources\",\n        \"Runtime\",\n        \"Security\",\n        \"Text\",\n        \"Threading\"\n    ],\n\n    // Generic collections and related types\n    \"System.Collections.Generic\": [\n        \"ByteEqualityComparer\",\n        \"CollectionExtensions\",\n        \"IEnumerable\",\n        \"KeyNotFoundException\",\n        \"KeyValuePair\",\n        \"NonRandomizedStringEqualityComparer\",\n        \"ReferenceEqualityComparer\"\n    ],\n\n    // File and stream I/O operations\n    \"System.IO\": [\n        \"BinaryReader\",\n        \"BinaryWriter\",\n        \"BufferedStream\",\n        \"Directory\",\n        \"DirectoryInfo\",\n        \"DirectoryNotFoundException\",\n        \"EndOfStreamException\",\n        \"EnumerationOptions\",\n        \"File\",\n        \"FileAccess\",\n        \"FileAttributes\",\n        \"FileInfo\",\n        \"FileLoadException\",\n        \"FileMode\",\n        \"FileNotFoundException\",\n        \"FileOptions\",\n        \"FileShare\",\n        \"FileStream\",\n        \"FileStreamOptions\",\n        \"FileSystemInfo\",\n        \"HandleInheritability\",\n        \"InvalidDataException\",\n        \"IOException\",\n        \"MatchCasing\",\n        \"MatchType\",\n        \"MemoryStream\",\n        \"Path\",\n        \"PathTooLongException\",\n        \"RandomAccess\",\n        \"SearchOption\",\n        \"SeekOrigin\",\n        \"Stream\",\n        \"StreamReader\",\n        \"StreamWriter\",\n        \"StringReader\",\n        \"StringWriter\",\n        \"TextReader\",\n        \"TextWriter\",\n        \"UnixFileMode\",\n        \"UnmanagedMemoryAccessor\",\n        \"UnmanagedMemoryStream\",\n        \"System.IO.Enumeration\"\n    ],\n\n    // Language Integrated Query (LINQ) functionality\n    \"System.Linq\": [\"Enumerable\"],\n\n    // HTTP client functionality\n    \"System.Net.Http\": [\"HttpClient\", \"HttpMethod\"],\n\n    // Threading and synchronization primitives\n    \"System.Threading\": [\n        \"AbandonedMutexException\",\n        \"ApartmentState\",\n        \"AsyncFlowControl\",\n        \"AutoResetEvent\",\n        \"CancellationToken\",\n        \"CancellationTokenRegistration\",\n        \"CancellationTokenSource\",\n        \"CompressedStack\",\n        \"ContextCallback\",\n        \"EventResetMode\",\n        \"EventWaitHandle\",\n        \"ExecutionContext\",\n        \"Interlocked\",\n        \"IOCompletionCallback\",\n        \"IThreadPoolWorkItem\",\n        \"ITimer\",\n        \"LazyInitializer\",\n        \"LazyThreadSafetyMode\",\n        \"Lock\",\n        \"LockRecursionException\",\n        \"LockRecursionPolicy\",\n        \"ManualResetEvent\",\n        \"ManualResetEventSlim\",\n        \"Monitor\",\n        \"Mutex\",\n        \"NativeOverlapped\",\n        \"Overlapped\",\n        \"ParameterizedThreadStart\",\n        \"PeriodicTimer\",\n        \"PreAllocatedOverlapped\",\n        \"ReaderWriterLockSlim\",\n        \"RegisteredWaitHandle\",\n        \"Semaphore\",\n        \"SemaphoreFullException\",\n        \"SemaphoreSlim\",\n        \"SendOrPostCallback\",\n        \"SpinLock\",\n        \"SpinWait\",\n        \"SynchronizationContext\",\n        \"SynchronizationLockException\",\n        \"Thread\",\n        \"ThreadAbortException\",\n        \"ThreadExceptionEventArgs\",\n        \"ThreadExceptionEventHandler\",\n        \"ThreadInterruptedException\",\n        \"ThreadPool\",\n        \"ThreadPoolBoundHandle\",\n        \"ThreadPriority\",\n        \"ThreadStart\",\n        \"ThreadStartException\",\n        \"ThreadState\",\n        \"ThreadStateException\",\n        \"Timeout\",\n        \"Timer\",\n        \"TimerCallback\",\n        \"Volatile\",\n        \"WaitCallback\",\n        \"WaitHandle\",\n        \"WaitHandleCannotBeOpenedException\",\n        \"WaitHandleExtensions\",\n        \"WaitOrTimerCallback\",\n        \"Tasks\"\n    ],\n\n    // Task-based asynchronous programming (TAP) model\n    \"System.Threading.Tasks\": [\n        \"ConcurrentExclusiveSchedulerPair\",\n        \"ConfigureAwaitOptions\",\n        \"Task\",\n        \"TaskAsyncEnumerableExtensions\",\n        \"TaskCanceledException\",\n        \"TaskCompletionSource\",\n        \"TaskContinuationOptions\",\n        \"TaskCreationOptions\",\n        \"TaskExtensions\",\n        \"TaskFactory\",\n        \"TaskScheduler\",\n        \"TaskSchedulerException\",\n        \"TaskStatus\",\n        \"TaskToAsyncResult\",\n        \"UnobservedTaskExceptionEventArgs\",\n        \"ValueTask\",\n        \"Sources\"\n    ]\n};\n","/**\n * LazyResult is a type that transparently unwraps functions with no required parameters to their return type.\n *\n * Functions with zero parameters `() => T` become properties of type `T`.\n * Functions with parameters `(arg: X) => T` remain as callable functions.\n *\n * @example\n * ```typescript\n * type Input = {\n *   foo: () => string;           // Zero params\n *   bar: (x: number) => string;  // One param\n *   baz: (x?: number) => string; // Optional param\n * };\n *\n * type Output = LazyResult<Input>;\n * // Output is:\n * // {\n * //   foo: string;                // Unwrapped to return type\n * //   bar: (x: number) => string; // Kept as function\n * //   baz: (x?: number) => string; // Kept as function\n * // }\n * ```\n */\nexport type LazyResult<T> = {\n    // If it's a function AND has no required parameters, check if it's truly zero-param\n    [K in keyof T]: T[K] extends (...args: infer Args) => infer R\n        ? Args extends [] // True zero-parameter function\n            ? R // Unwrap to return type\n            : T[K] // Keep as function (has parameters, even if optional)\n        : T[K]; // Not a function, keep as-is\n};\n\n/**\n * Creates an object with lazy-evaluated, cached properties from factory functions.\n *\n * This function transforms an object of factory functions into an object where:\n * - Zero-parameter functions become lazy-evaluated, cached properties (computed once on first access)\n * - Functions with parameters remain as regular methods (called every time)\n *\n * The distinction is made at runtime using `fn.length` (number of parameters).\n *\n * @param factories - An object where values are factory functions\n * @returns An object with the same keys, but zero-param functions become cached properties\n *\n * @example\n * ```typescript\n * const obj = lazy({\n *   // Zero-param: becomes a cached property\n *   name: () => computeExpensiveName(),\n *\n *   // With param: remains a callable method\n *   greet: (person: string) => `Hello, ${person}!`\n * });\n *\n * // Access as property (computed once, then cached)\n * console.log(obj.name); // string\n * console.log(obj.name); // Same value, from cache\n *\n * // Call as method (computed every time)\n * console.log(obj.greet(\"Alice\")); // \"Hello, Alice!\"\n * console.log(obj.greet(\"Bob\"));   // \"Hello, Bob!\"\n * ```\n */\nexport function lazy<T extends Record<string, (...args: never[]) => unknown>>(factories: T): LazyResult<T> {\n    const cache = {} as Record<string, unknown>;\n    const result: Record<string, unknown> = {};\n\n    for (const [key, fn] of Object.entries(factories)) {\n        if (fn.length === 0) {\n            // No parameters - make it a lazy cached property\n            Object.defineProperty(result, key, {\n                get() {\n                    if (!(key in cache)) {\n                        cache[key] = fn();\n                    }\n                    return cache[key];\n                },\n                enumerable: true,\n                configurable: true\n            });\n        } else {\n            // Has parameters - just assign the method directly\n            result[key] = fn;\n        }\n    }\n\n    return result as LazyResult<T>;\n}\n","import { type Type } from \"../ast/types/IType.js\";\nimport { type Generation } from \"../context/generation-info.js\";\nimport { lazy } from \"../utils/lazy.js\";\n\n/**\n * Provides access to external type references for C# code generation.\n * Offers pre-defined references to commonly used .NET Framework types, third-party libraries,\n * and testing frameworks.\n */\nexport class Extern {\n    constructor(private readonly generation: Generation) {}\n    protected get csharp() {\n        return this.generation.csharp;\n    }\n    /**\n     * Pre-defined references to commonly used System namespace classes and types.\n     * This object provides convenient access to standard .NET Framework types\n     * without having to manually create class references.\n     *\n     * All values are lazy initialized - simple references are cached, functions remain callable.\n     */\n    readonly System = lazy({\n        /**\n         * Creates a reference to System.Action<T> delegate.\n         *\n         * @param typeParameters - The generic type parameters (optional)\n         * @returns A ClassReference for Action<T>\n         */\n        Action: (typeParameters?: Type[]) =>\n            this.csharp.classReference({\n                name: \"Action\",\n                namespace: \"System\",\n                generics: typeParameters ? typeParameters : undefined,\n                multipartMethodName: null, // can not be added to multipart form\n                multipartMethodNameForCollection: null, // can not be added to multipart form\n                isReferenceType: true // is historically a \"reference\" type\n            }),\n        /**\n         * Creates a reference to System.Func<TArgs..., TResult> delegate.\n         *\n         * @param typeParameters - The parameter types (optional)\n         * @param returnType - The return type (optional)\n         * @returns A ClassReference for Func<TArgs..., TResult>\n         */\n        Func: (typeParameters?: Type[], returnType?: Type) =>\n            this.csharp.classReference({\n                name: \"Func\",\n                namespace: \"System\",\n                generics: typeParameters\n                    ? returnType\n                        ? [...typeParameters, returnType]\n                        : typeParameters\n                    : returnType\n                      ? [returnType]\n                      : undefined,\n                multipartMethodName: null, // can not be added to multipart form\n                multipartMethodNameForCollection: null, // can not be added to multipart form,\n                isReferenceType: true // is historically a \"reference\" type\n            }),\n        /**\n         * Reference to System.DateOnly class.\n         */\n        DateOnly: () =>\n            this.csharp.classReference({\n                name: \"DateOnly\",\n                namespace: \"System\"\n            }),\n        /**\n         * Reference to System.DateTime class.\n         */\n        DateTime: () =>\n            this.csharp.classReference({\n                name: \"DateTime\",\n                namespace: \"System\"\n            }),\n        /**\n         * Reference to System.Enum class.\n         */\n        Enum: () =>\n            this.csharp.classReference({\n                name: \"Enum\",\n                namespace: \"System\"\n            }),\n\n        /**\n         * Reference to System.Exception class.\n         */\n        Exception: () =>\n            this.csharp.classReference({\n                name: \"Exception\",\n                namespace: \"System\"\n            }),\n\n        /**\n         * Creates a reference to System.ReadOnlyMemory<T>.\n         *\n         * @param type - The element type\n         * @returns A ClassReference for ReadOnlyMemory<T>\n         */\n        ReadOnlyMemory: (type: Type) =>\n            this.csharp.classReference({\n                name: \"ReadOnlyMemory\",\n                namespace: \"System\",\n                generics: [type]\n            }),\n        /**\n         * Reference to System.SerializableAttribute class.\n         */\n        Serializable: () =>\n            this.csharp.classReference({\n                name: \"SerializableAttribute\",\n                namespace: \"System\"\n            }),\n\n        /**\n         * Reference to System.String class.\n         */\n        String: () =>\n            this.csharp.classReference({\n                name: \"String\",\n                namespace: \"System\"\n            }),\n\n        /**\n         * Reference to System.Type class.\n         *\n         * @returns A ClassReference for System.Type\n         */\n        Type: () =>\n            this.csharp.classReference({\n                name: \"Type\",\n                namespace: \"System\",\n                isReferenceType: true,\n                multipartMethodName: null, // can not be added to multipart form\n                multipartMethodNameForCollection: null, // can not be added to multipart form\n                fullyQualified: true\n            }),\n        /**\n         * Reference to System.TimeSpan class.\n         */\n        TimeSpan: () =>\n            this.csharp.classReference({\n                name: \"TimeSpan\",\n                namespace: \"System\"\n            }),\n        /**\n         * Reference to System.Uri class.\n         */\n        Uri: () =>\n            this.csharp.classReference({\n                name: \"Uri\",\n                namespace: \"System\"\n            }),\n        /**\n         * Reference to System.UriBuilder class.\n         */\n        UriBuilder: () =>\n            this.csharp.classReference({\n                name: \"UriBuilder\",\n                namespace: \"System\"\n            }),\n        /**\n         * Runtime namespace references.\n         */\n        Runtime: () =>\n            lazy({\n                /**\n                 * Serialization namespace references.\n                 */\n                Serialization: () =>\n                    lazy({\n                        /**\n                         * Reference to System.Runtime.Serialization.EnumMemberAttribute class.\n                         */\n                        EnumMember: () =>\n                            this.csharp.classReference({\n                                name: \"EnumMemberAttribute\",\n                                namespace: \"System.Runtime.Serialization\"\n                            })\n                    })\n            }),\n        /**\n         * Collections namespace references.\n         */\n        Collections: () =>\n            lazy({\n                /**\n                 * Generic collections namespace references.\n                 */\n                Generic: () =>\n                    lazy({\n                        /**\n                         * Creates a reference to IAsyncEnumerable<T>.\n                         *\n                         * @param elementType - The element type (optional)\n                         * @returns A ClassReference for IAsyncEnumerable<T>\n                         */\n                        IAsyncEnumerable: (elementType?: Type) => {\n                            return this.csharp.classReference({\n                                name: \"IAsyncEnumerable\",\n                                namespace: \"System.Collections.Generic\",\n                                generics: elementType ? [elementType] : undefined\n                            });\n                        },\n\n                        /**\n                         * Creates a reference to IEnumerable<T>.\n                         *\n                         * @param elementType - The element type (optional)\n                         * @returns A ClassReference for IEnumerable<T>\n                         */\n                        IEnumerable: (elementType?: Type) => {\n                            return this.csharp.classReference({\n                                name: \"IEnumerable\",\n                                namespace: \"System.Collections.Generic\",\n                                generics: elementType ? [elementType] : undefined\n                            });\n                        },\n\n                        /**\n                         * Creates a reference to KeyValuePair<TKey, TValue>.\n                         *\n                         * @param keyType - The key type (optional)\n                         * @param valueType - The value type (optional)\n                         * @returns A ClassReference for KeyValuePair<TKey, TValue>\n                         */\n                        KeyValuePair: (keyType?: Type, valueType?: Type) => {\n                            return this.csharp.classReference({\n                                name: \"KeyValuePair\",\n                                namespace: \"System.Collections.Generic\",\n                                generics: keyType && valueType ? [keyType, valueType] : undefined\n                            });\n                        },\n\n                        /**\n                         * Creates a reference to List<T>.\n                         *\n                         * @param elementType - The element type (optional)\n                         * @returns A ClassReference for List<T>\n                         */\n                        List: (elementType?: Type) => {\n                            return this.csharp.classReference({\n                                name: \"List\",\n                                namespace: \"System.Collections.Generic\",\n                                generics: elementType ? [elementType] : undefined,\n                                isCollection: true\n                            });\n                        },\n\n                        /**\n                         * Creates a reference to HashSet<T>.\n                         *\n                         * @param elementType - The element type (optional)\n                         * @returns A ClassReference for HashSet<T>\n                         */\n                        HashSet: (elementType?: Type) => {\n                            return this.csharp.classReference({\n                                name: \"HashSet\",\n                                namespace: \"System.Collections.Generic\",\n                                generics: elementType ? [elementType] : undefined,\n                                isCollection: true\n                            });\n                        },\n\n                        /**\n                         * Creates a reference to Dictionary<TKey, TValue>.\n                         *\n                         * @param keyType - The key type (optional)\n                         * @param valueType - The value type (optional)\n                         * @returns A ClassReference for Dictionary<TKey, TValue>\n                         */\n                        Dictionary: (keyType?: Type, valueType?: Type) => {\n                            return this.csharp.classReference({\n                                name: \"Dictionary\",\n                                namespace: \"System.Collections.Generic\",\n                                generics: keyType && valueType ? [keyType, valueType] : undefined,\n                                isCollection: true\n                            });\n                        },\n                        /**\n                         * Creates a reference to IDictionary<TKey, TValue>.\n                         *\n                         * @param keyType - The key type\n                         * @param valueType - The value type\n                         * @returns A ClassReference for IDictionary<TKey, TValue>\n                         */\n                        IDictionary: (keyType: Type, valueType: Type) =>\n                            this.csharp.classReference({\n                                name: \"IDictionary\",\n                                namespace: \"System.Collections.Generic\",\n                                generics: [keyType, valueType]\n                            })\n                    }),\n\n                /**\n                 * LINQ namespace references.\n                 */\n                Linq: () =>\n                    lazy({\n                        /**\n                         * Reference to System.Linq.Enumerable class.\n                         */\n                        Enumerable: () =>\n                            this.csharp.classReference({\n                                name: \"Enumerable\",\n                                namespace: \"System.Linq\"\n                            })\n                    })\n            }),\n        /**\n         * Globalization namespace references.\n         */\n        Globalization: () =>\n            lazy({\n                /**\n                 * Reference to System.Globalization.DateTimeStyles enum.\n                 */\n                DateTimeStyles: () =>\n                    this.csharp.classReference({\n                        name: \"DateTimeStyles\",\n                        namespace: \"System.Globalization\"\n                    })\n            }),\n\n        /**\n         * LINQ namespace references.\n         */\n        Linq: () =>\n            lazy({\n                /**\n                 * Reference to System.Linq.Enumerable class.\n                 */\n                Enumerable: () =>\n                    this.csharp.classReference({\n                        name: \"Enumerable\",\n                        namespace: \"System.Linq\"\n                    })\n            }),\n        /**\n         * Net namespace references.\n         */\n        Net: () =>\n            lazy({\n                /**\n                 * HTTP namespace references.\n                 */\n                Http: () =>\n                    lazy({\n                        /**\n                         * Reference to System.Net.Http.HttpClient class.\n                         */\n                        HttpClient: () =>\n                            this.csharp.classReference({\n                                name: \"HttpClient\",\n                                namespace: \"System.Net.Http\"\n                            }),\n\n                        /**\n                         * Reference to System.Net.Http.HttpMethod class.\n                         */\n                        HttpMethod: () =>\n                            this.csharp.classReference({\n                                name: \"HttpMethod\",\n                                namespace: \"System.Net.Http\"\n                            }),\n\n                        /**\n                         * Reference to System.Net.Http.Headers.HttpResponseHeaders class.\n                         */\n                        HttpResponseHeaders: () =>\n                            this.csharp.classReference({\n                                name: \"HttpResponseHeaders\",\n                                namespace: \"System.Net.Http.Headers\"\n                            })\n                    }),\n                /**\n                 * ServerSentEvents namespace references.\n                 */\n                ServerSentEvents: () =>\n                    lazy({\n                        /**\n                         * Reference to System.Net.ServerSentEvents.SseEvent class.\n                         */\n                        SseEvent: () =>\n                            this.csharp.classReference({\n                                name: \"SseEvent\",\n                                namespace: \"System.Net.ServerSentEvents\"\n                            }),\n                        /**\n                         * Reference to System.Net.ServerSentEvents.SseParser class.\n                         */\n                        SseParser: () =>\n                            this.csharp.classReference({\n                                name: \"SseParser\",\n                                namespace: \"System.Net.ServerSentEvents\"\n                            })\n                    }),\n                /**\n                 * WebSockets namespace references.\n                 */\n                WebSockets: () =>\n                    lazy({\n                        /**\n                         * Reference to System.Net.WebSockets.ClientWebSocketOptions class.\n                         */\n                        ClientWebSocketOptions: () =>\n                            this.csharp.classReference({\n                                name: \"ClientWebSocketOptions\",\n                                namespace: \"System.Net.WebSockets\"\n                            })\n                    })\n            }),\n        /**\n         * IO namespace references.\n         */\n        IO: () =>\n            lazy({\n                /**\n                 * Reference to System.IO.MemoryStream class.\n                 */\n                MemoryStream: () =>\n                    this.csharp.classReference({\n                        name: \"MemoryStream\",\n                        namespace: \"System.IO\"\n                    }),\n                /**\n                 * Reference to System.IO.Stream class.\n                 */\n                Stream: () =>\n                    this.csharp.classReference({\n                        name: \"Stream\",\n                        namespace: \"System.IO\"\n                    }),\n                /**\n                 * Reference to System.IO.StreamReader class.\n                 */\n                StreamReader: () =>\n                    this.csharp.classReference({\n                        name: \"StreamReader\",\n                        namespace: \"System.IO\"\n                    })\n            }),\n        /**\n         * Text namespace references.\n         */\n        Text: () =>\n            lazy({\n                /**\n                 * Reference to System.Text.Encoding class.\n                 */\n                Encoding: () =>\n                    this.csharp.classReference({\n                        name: \"Encoding\",\n                        namespace: \"System.Text\"\n                    }),\n\n                /**\n                 * Reference to System.Text.Encoding.UTF8 class.\n                 */\n                Encoding_UTF8: () =>\n                    this.csharp.classReference({\n                        name: \"UTF8\",\n                        enclosingType: this.csharp.classReference({\n                            name: \"Encoding\",\n                            namespace: \"System.Text\"\n                        })\n                    }),\n                /**\n                 * JSON namespace references.\n                 */\n                Json: () =>\n                    lazy({\n                        /**\n                         * Reference to System.Text.Json.JsonElement class.\n                         */\n                        JsonElement: () =>\n                            this.csharp.classReference({\n                                name: \"JsonElement\",\n                                namespace: \"System.Text.Json\"\n                            }),\n\n                        /**\n                         * Reference to System.Text.Json.JsonDocument class.\n                         */\n                        JsonDocument: () =>\n                            this.csharp.classReference({\n                                name: \"JsonDocument\",\n                                namespace: \"System.Text.Json\"\n                            }),\n\n                        /**\n                         * Reference to System.Text.Json.JsonException class.\n                         */\n                        JsonException: () =>\n                            this.csharp.classReference({\n                                name: \"JsonException\",\n                                namespace: \"System.Text.Json\"\n                            }),\n\n                        /**\n                         * Reference to System.Text.Json.Utf8JsonReader class.\n                         */\n                        Utf8JsonReader: () =>\n                            this.csharp.classReference({\n                                name: \"Utf8JsonReader\",\n                                namespace: \"System.Text.Json\"\n                            }),\n\n                        /**\n                         * Reference to System.Text.Json.JsonSerializerOptions class.\n                         */\n                        JsonSerializerOptions: () =>\n                            this.csharp.classReference({\n                                name: \"JsonSerializerOptions\",\n                                namespace: \"System.Text.Json\"\n                            }),\n\n                        /**\n                         * Reference to System.Text.Json.JsonSerializer class.\n                         */\n                        JsonSerializer: () =>\n                            this.csharp.classReference({\n                                name: \"JsonSerializer\",\n                                namespace: \"System.Text.Json\"\n                            }),\n\n                        /**\n                         * Reference to System.Text.Json.Utf8JsonWriter class.\n                         */\n                        Utf8JsonWriter: () =>\n                            this.csharp.classReference({\n                                name: \"Utf8JsonWriter\",\n                                namespace: \"System.Text.Json\"\n                            }),\n\n                        /**\n                         * JSON Nodes namespace references.\n                         */\n                        Nodes: () =>\n                            lazy({\n                                /**\n                                 * Reference to System.Text.Json.Nodes.JsonNode class.\n                                 */\n                                JsonNode: () =>\n                                    this.csharp.classReference({\n                                        name: \"JsonNode\",\n                                        namespace: \"System.Text.Json.Nodes\"\n                                    }),\n\n                                /**\n                                 * Reference to System.Text.Json.Nodes.JsonObject class.\n                                 */\n                                JsonObject: () =>\n                                    this.csharp.classReference({\n                                        name: \"JsonObject\",\n                                        namespace: \"System.Text.Json.Nodes\"\n                                    })\n                            }),\n                        /**\n                         * JSON Serialization namespace references.\n                         */\n                        Serialization: () =>\n                            lazy({\n                                /**\n                                 * Reference to System.Text.Json.Serialization.IJsonOnDeserialized interface.\n                                 */\n                                IJsonOnDeserialized: () =>\n                                    this.csharp.classReference({\n                                        name: \"IJsonOnDeserialized\",\n                                        namespace: \"System.Text.Json.Serialization\"\n                                    }),\n\n                                /**\n                                 * Reference to System.Text.Json.Serialization.IJsonOnSerializing interface.\n                                 */\n                                IJsonOnSerializing: () =>\n                                    this.csharp.classReference({\n                                        name: \"IJsonOnSerializing\",\n                                        namespace: \"System.Text.Json.Serialization\"\n                                    }),\n\n                                /**\n                                 * Reference to System.Text.Json.Serialization.JsonOnDeserializedAttribute class.\n                                 */\n                                JsonOnDeserializedAttribute: () =>\n                                    this.csharp.classReference({\n                                        name: \"JsonOnDeserializedAttribute\",\n                                        namespace: \"System.Text.Json.Serialization\"\n                                    }),\n\n                                /**\n                                 * Reference to System.Text.Json.Serialization.JsonExtensionDataAttribute class.\n                                 */\n                                JsonExtensionData: () =>\n                                    this.csharp.classReference({\n                                        name: \"JsonExtensionDataAttribute\",\n                                        namespace: \"System.Text.Json.Serialization\"\n                                    }),\n\n                                /**\n                                 * Creates a reference to JsonConverter<T>.\n                                 *\n                                 * @param typeToConvert - The type to convert (optional)\n                                 * @returns A ClassReference for JsonConverter<T>\n                                 */\n                                JsonConverter: (typeToConvert?: Type) => {\n                                    return this.csharp.classReference({\n                                        name: \"JsonConverter\",\n                                        namespace: \"System.Text.Json.Serialization\",\n                                        generics: typeToConvert ? [typeToConvert] : undefined\n                                    });\n                                },\n\n                                /**\n                                 * Reference to System.Text.Json.Serialization.JsonIgnoreAttribute class.\n                                 */\n                                JsonIgnore: () =>\n                                    this.csharp.classReference({\n                                        name: \"JsonIgnoreAttribute\",\n                                        namespace: \"System.Text.Json.Serialization\"\n                                    }),\n\n                                /**\n                                 * Reference to System.Text.Json.Serialization.JsonPropertyNameAttribute class.\n                                 */\n                                JsonPropertyName: () =>\n                                    this.csharp.classReference({\n                                        name: \"JsonPropertyNameAttribute\",\n                                        namespace: \"System.Text.Json.Serialization\"\n                                    })\n                            })\n                    })\n            }),\n        /**\n         * Threading namespace references.\n         */\n        Threading: () =>\n            lazy({\n                /**\n                 * Reference to System.Threading.CancellationToken struct.\n                 */\n                CancellationToken: () =>\n                    this.csharp.classReference({\n                        name: \"CancellationToken\",\n                        namespace: \"System.Threading\"\n                    }),\n\n                /**\n                 * Tasks namespace references.\n                 */\n                Tasks: () =>\n                    lazy({\n                        /**\n                         * Creates a reference to Task<T>.\n                         *\n                         * @param ofType - The result type (optional)\n                         * @returns A ClassReference for Task<T>\n                         */\n                        Task: (ofType?: Type) => {\n                            return this.csharp.classReference({\n                                name: \"Task\",\n                                namespace: \"System.Threading.Tasks\",\n                                generics: ofType ? [ofType] : undefined\n                            });\n                        },\n                        /**\n                         * Creates a reference to ValueTask or ValueTask<T>.\n                         *\n                         * @param ofType - The result type (optional)\n                         * @returns A ClassReference for ValueTask<T>\n                         */\n                        ValueTask: (ofType?: Type) => {\n                            return this.csharp.classReference({\n                                name: \"ValueTask\",\n                                namespace: \"System.Threading.Tasks\",\n                                generics: ofType ? [ofType] : undefined\n                            });\n                        }\n                    })\n            }),\n        /**\n         * ComponentModel namespace references.\n         */\n        ComponentModel: () =>\n            lazy({\n                /**\n                 * Reference to System.ComponentModel.INotifyPropertyChanged interface.\n                 */\n                INotifyPropertyChanged: () =>\n                    this.csharp.classReference({\n                        name: \"INotifyPropertyChanged\",\n                        namespace: \"System.ComponentModel\"\n                    }),\n                /**\n                 * Reference to System.ComponentModel.PropertyChangedEventHandler delegate.\n                 */\n                PropertyChangedEventHandler: () =>\n                    this.csharp.classReference({\n                        name: \"PropertyChangedEventHandler\",\n                        namespace: \"System.ComponentModel\"\n                    })\n            }),\n        /**\n         * Reference to System.IAsyncDisposable interface.\n         */\n        IAsyncDisposable: () =>\n            this.csharp.classReference({\n                name: \"IAsyncDisposable\",\n                namespace: \"System\"\n            }),\n        /**\n         * Reference to System.IDisposable interface.\n         */\n        IDisposable: () =>\n            this.csharp.classReference({\n                name: \"IDisposable\",\n                namespace: \"System\"\n            })\n    });\n\n    /**\n     * Pre-defined references to NUnit testing framework classes and attributes.\n     * This object provides convenient access to NUnit test attributes\n     * for generating test classes and methods.\n     *\n     * All values are lazy initialized - simple references are cached.\n     */\n    readonly NUnit = lazy({\n        /**\n         * NUnit Framework namespace references.\n         */\n        Framework: () =>\n            lazy({\n                /**\n                 * Reference to NUnit.Framework.TestFixtureAttribute class.\n                 */\n                TestFixture: () =>\n                    this.csharp.classReference({\n                        name: \"TestFixture\",\n                        namespace: \"NUnit.Framework\"\n                    }),\n\n                /**\n                 * Reference to NUnit.Framework.TestAttribute class.\n                 */\n                Test: () =>\n                    this.csharp.classReference({\n                        name: \"Test\",\n                        namespace: \"NUnit.Framework\"\n                    }),\n                /**\n                 * Reference to NUnit.Framework.OneTimeTearDownAttribute class.\n                 */\n                OneTimeTearDown: () =>\n                    this.csharp.classReference({\n                        name: \"OneTimeTearDown\",\n                        namespace: \"NUnit.Framework\"\n                    }),\n                /**\n                 * Reference to NUnit.Framework.OneTimeSetUpAttribute class.\n                 */\n                OneTimeSetUp: () =>\n                    this.csharp.classReference({\n                        name: \"OneTimeSetUp\",\n                        namespace: \"NUnit.Framework\"\n                    }),\n                /**\n                 * Reference to NUnit.Framework.SetUpFixtureAttribute class.\n                 */\n                SetUpFixture: () =>\n                    this.csharp.classReference({\n                        name: \"SetUpFixture\",\n                        namespace: \"NUnit.Framework\"\n                    }),\n                /**\n                 * Reference to NUnit.Framework.ParallelizableAttribute class.\n                 */\n                Parallelizable: () =>\n                    this.csharp.classReference({\n                        name: \"Parallelizable\",\n                        namespace: \"NUnit.Framework\"\n                    })\n            })\n    });\n\n    /**\n     * Pre-defined references to OneOf library classes for union types.\n     * This object provides convenient access to OneOf union type classes\n     * for creating discriminated unions in C#.\n     *\n     * Functions with parameters remain callable.\n     */\n    readonly OneOf = lazy({\n        /**\n         * Creates a reference to OneOf<T1, T2, ...>.\n         *\n         * @param generics - Array of generic type parameters (optional)\n         * @returns A ClassReference for OneOf<T1, T2, ...>\n         */\n        OneOf: (generics?: Type[]) => {\n            return this.csharp.classReference({\n                name: \"OneOf\",\n                namespace: \"OneOf\",\n                generics\n            });\n        },\n\n        /**\n         * Creates a reference to OneOfBase<T1, T2, ...>.\n         *\n         * @param generics - Array of generic type parameters (optional)\n         * @returns A ClassReference for OneOfBase<T1, T2, ...>\n         */\n        OneOfBase: (generics?: Type[]) => {\n            return this.csharp.classReference({\n                name: \"OneOfBase\",\n                namespace: \"OneOf\",\n                generics\n            });\n        }\n    });\n\n    /**\n     * Pre-defined references to Google Protocol Buffers classes.\n     * This object provides convenient access to Google.Protobuf types\n     * for working with Protocol Buffer well-known types.\n     *\n     * All values are lazy initialized - simple references are cached.\n     */\n    readonly Google = lazy({\n        /**\n         * Protocol Buffers namespace references.\n         */\n        Protobuf: () =>\n            lazy({\n                /**\n                 * Reference to Google.Protobuf.ByteString class.\n                 */\n                ByteString: () =>\n                    this.csharp.classReference({\n                        name: \"ByteString\",\n                        namespace: \"Google.Protobuf\"\n                    }),\n\n                /**\n                 * Well-known types namespace references with namespace alias.\n                 */\n                WellKnownTypes: () =>\n                    lazy({\n                        /**\n                         * Reference to Google.Protobuf.WellKnownTypes.Struct class.\n                         */\n                        Struct: () =>\n                            this.csharp.classReference({\n                                name: \"Struct\",\n                                namespace: \"Google.Protobuf.WellKnownTypes\",\n                                namespaceAlias: \"WellKnownProto\"\n                            }),\n\n                        /**\n                         * Reference to Google.Protobuf.WellKnownTypes.Value class.\n                         */\n                        Value: () =>\n                            this.csharp.classReference({\n                                name: \"Value\",\n                                namespace: \"Google.Protobuf.WellKnownTypes\",\n                                namespaceAlias: \"WellKnownProto\"\n                            }),\n\n                        /**\n                         * Reference to Google.Protobuf.WellKnownTypes.ListValue class.\n                         */\n                        ListValue: () =>\n                            this.csharp.classReference({\n                                name: \"ListValue\",\n                                namespace: \"Google.Protobuf.WellKnownTypes\",\n                                namespaceAlias: \"WellKnownProto\"\n                            }),\n\n                        /**\n                         * Reference to Google.Protobuf.WellKnownTypes.Timestamp class.\n                         */\n                        Timestamp: () =>\n                            this.csharp.classReference({\n                                name: \"Timestamp\",\n                                namespace: \"Google.Protobuf.WellKnownTypes\",\n                                namespaceAlias: \"WellKnownProto\"\n                            })\n                    })\n            })\n    });\n\n    /**\n     * Pre-defined references to WireMock.Net testing/mocking library classes.\n     * This object provides convenient access to WireMock types for creating mock servers\n     * and testing HTTP interactions.\n     *\n     * All values are lazy initialized - simple references are cached.\n     */\n    readonly WireMock = lazy({\n        /**\n         * Reference to WireMock.Server.WireMockServer class.\n         */\n        Server: () =>\n            this.csharp.classReference({\n                name: \"WireMockServer\",\n                namespace: \"WireMock.Server\"\n            }),\n        /**\n         * Reference to WireMock.Settings.WireMockServerSettings class.\n         */\n        WireMockServerSettings: () =>\n            this.csharp.classReference({\n                name: \"WireMockServerSettings\",\n                namespace: \"WireMock.Settings\"\n            }),\n        /**\n         * Reference to WireMock.Logging.WireMockConsoleLogger class.\n         */\n        WireMockConsoleLogger: () =>\n            this.csharp.classReference({\n                name: \"WireMockConsoleLogger\",\n                namespace: \"WireMock.Logging\"\n            })\n    });\n\n    /**\n     * Pre-defined references to gRPC library classes.\n     * This object provides convenient access to Grpc.Core types for working with\n     * gRPC remote procedure calls.\n     *\n     * All values are lazy initialized - simple references are cached.\n     */\n    readonly Grpc = lazy({\n        /**\n         * Grpc.Core namespace references.\n         */\n        Core: () =>\n            lazy({\n                /**\n                 * Reference to Grpc.Core.RpcException class.\n                 */\n                RpcException: () =>\n                    this.csharp.classReference({\n                        name: \"RpcException\",\n                        namespace: \"Grpc.Core\"\n                    })\n            })\n    });\n}\n","import { FernIr as DynamicFernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { FernIr } from \"@fern-fern/ir-sdk\";\nimport { fail } from \"../utils/fail.js\";\n\nimport { type TypesOf } from \"../utils/type-extractor.js\";\nimport { is } from \"../utils/type-guards.js\";\nimport { type Generation } from \"./generation-info.js\";\n\n/**\n * JsonPath is a string that represents a path of nodes in the Intermediate Representation (IR) to a given node.\n *\n * The path uses dot notation to traverse the object hierarchy:\n * - For arrays, you will see numbers in the path (e.g., \"types.0.properties.1\")\n * - For explicitly named nodes (hand-coded names), there will be a '+' in the path (e.g., \"types+Value\")\n */\nexport type JsonPath = string;\n\n/**\n * Provenance tracks metadata about where an AST (Abstract Syntax Tree) node came from in the IR.\n *\n * This interface provides a way to trace back from generated code to its origin in the IR,\n * which is essential for understanding why something is named the way it is and for tracking\n * relationships between generated code and source specifications.\n */\nexport interface Provenance {\n    /** The dot-notation path in the IR to this node (trimmed to remove name case variants) */\n    jsonPath: string;\n\n    /** The property name or key used to access this node in its parent */\n    name: string;\n\n    /** The actual IR node object that this provenance describes */\n    node: IrNode;\n\n    /** Optional parent provenance, forming a chain back to the root of the IR */\n    parent?: Provenance;\n\n    /** True if this is an explicitly named node (hand-coded name) not directly bound to an IR node */\n    explicit?: boolean;\n}\n\n/**\n * IrNode represents any valid node type from the Intermediate Representation.\n *\n * This union type includes all possible node types that can appear in the IR tree,\n * including types, services, channels, declarations, and error names. The `Exclude<..., undefined>`\n * ensures that undefined is never considered a valid IR node.\n */\nexport type IrNode = Exclude<\n    | TypesOf<FernIr.IntermediateRepresentation>\n    | TypesOf<DynamicFernIr.dynamic.DynamicIntermediateRepresentation>\n    | FernIr.TypeDeclaration\n    | FernIr.ProtobufService\n    | FernIr.WebSocketChannel\n    | DynamicFernIr.dynamic.NamedType\n    | DynamicFernIr.dynamic.Declaration\n    | FernIr.DeclaredErrorName\n    | FernIr.DeclaredTypeName, // hack hack hack! Why did it not work without that?\n    undefined\n>;\n\n/**\n * Origin represents the source of a generated piece of code in the IR.\n *\n * An Origin can be either:\n * - An IrNode: A direct reference to a node in the IR\n * - A Provenance: A reference that includes metadata about the node's location and lineage,\n *   which may represent an explicitly named member (hand-coded name) that doesn't directly\n *   correspond to an IR node but is generated on behalf of one\n */\nexport type Origin = IrNode | Provenance;\n\n/**\n * Trims a JsonPath by removing naming-related properties to normalize paths for comparison.\n *\n * This function filters out path segments related to name casing (camelCase, snakeCase, etc.)\n * to ensure that two paths referring to the same logical node are considered equivalent\n * regardless of which case variant was used to access the name.\n *\n * @param jsonPath - The full JsonPath to trim\n * @returns The trimmed JsonPath with name case properties removed\n *\n * @example\n * trim(\"types.User.name.pascalCase\") → \"types.User\"\n */\n/**\n * Set of IR path segments that represent name casing variants.\n * These segments are \"transparent\" in path construction - they don't contribute\n * to the canonical path because all case variants of a name resolve to the same\n * logical entity. Skipping them during path building avoids the expensive\n * split/filter/join that the old trim() function performed on every node.\n */\nconst TRIMMED_KEYS = new Set([\"name\", \"camelCase\", \"snakeCase\", \"screamingSnakeCase\", \"pascalCase\"]);\n\n/**\n * Builds a canonical JsonPath by appending a key to a parent path,\n * skipping keys that are in the TRIMMED_KEYS set.\n *\n * This replaces the old trim() function which called split/filter/join\n * on the entire path string for every node in the IR tree. Since parent\n * paths are already canonical (built incrementally), we only need to\n * check the current key.\n */\nfunction buildPath(parentPath: string | undefined, key: string): string {\n    if (TRIMMED_KEYS.has(key)) {\n        return parentPath ?? \"\";\n    }\n    return parentPath ? `${parentPath}.${key}` : key;\n}\n\n/**\n * ModelNavigator provides navigation and lookup capabilities for the Intermediate Representation (IR).\n *\n * This class builds and maintains indexes of the IR tree structure, allowing for efficient lookups\n * and tracking of node provenance. It enables the code generator to:\n *\n * - Navigate the IR tree structure and find nodes by object reference or JsonPath\n * - Track the origin and provenance of generated code elements\n * - Handle explicit (hand-coded) names that don't directly map to IR nodes\n * - Dereference type references to their full declarations\n * - Extract properly formatted names for classes, properties, and enum values\n *\n * The navigator creates multiple indexes during construction to enable fast lookups:\n * - indexByObject: Maps IR nodes to their provenance\n * - indexByPath: Maps JsonPaths to their provenance\n * - explicitByObject: Maps IR nodes to their explicit child provenances\n * - explicitByPath: Maps JsonPaths to explicit provenances\n */\nexport class ModelNavigator {\n    /** Maps IR node objects to their provenance metadata */\n    private indexByObject = new Map<IrNode, Provenance>();\n\n    /** Maps JsonPaths (string) to their provenance metadata */\n    private indexByPath = new Map<string, Provenance>();\n\n    /** Maps IR nodes to sets of explicit (hand-coded) child provenances */\n    private explicitByObject: Map<IrNode, Set<Provenance>> = new Map();\n\n    /** Maps JsonPaths to explicit (hand-coded) provenance entries */\n    private explicitByPath: Map<string, Provenance> = new Map();\n\n    /** The root provenance node representing the entire IR tree */\n    readonly root: Provenance;\n\n    /** The Intermediate Representation being navigated */\n    readonly ir: FernIr.IntermediateRepresentation | DynamicFernIr.dynamic.DynamicIntermediateRepresentation;\n\n    /**\n     * Provides access to C# code generation utilities.\n     * @returns The C# generation context from the generation info\n     */\n    get csharp() {\n        return this.generation.csharp;\n    }\n\n    /**\n     * Provides access to the type registry for looking up generated type names.\n     * @returns The type registry from the generation info\n     */\n    get registry() {\n        return this.generation.registry;\n    }\n\n    /**\n     * Creates a new ModelNavigator for the given IR.\n     *\n     * The constructor builds complete indexes of the IR tree, creating provenance\n     * entries for every node and enabling fast lookups by both object reference and path.\n     *\n     * @param instance - The root IR node (IntermediateRepresentation or DynamicIntermediateRepresentation)\n     * @param generation - The generation context providing access to code generation utilities\n     */\n    constructor(\n        instance: IrNode,\n        private readonly generation: Generation\n    ) {\n        this.root = this.createIndex(instance);\n        this.ir = instance as\n            | FernIr.IntermediateRepresentation\n            | DynamicFernIr.dynamic.DynamicIntermediateRepresentation;\n    }\n\n    /**\n     * Recursively builds indexes for all nodes in the IR tree.\n     *\n     * This private method traverses the entire IR object graph and creates provenance entries\n     * for each node. It handles path collisions by using an incremental path building strategy -\n     * keys in TRIMMED_KEYS (name casing variants like \"camelCase\", \"pascalCase\") are skipped\n     * during path construction, causing them to share the parent's canonical path.\n     *\n     * Performance optimizations:\n     * - Uses incremental path building (buildPath) instead of split/filter/join on every node\n     * - When a trimmed key's children are also trimmed keys (e.g., name.camelCase, name.pascalCase),\n     *   registers them in indexByObject without recursing further since their children are only\n     *   primitive string values (safeName/unsafeName)\n     *\n     * @param instance - The current IR node being indexed\n     * @param key - The property name/key used to access this node (empty string for root)\n     * @param parentProvenance - The provenance of the parent node (undefined for root)\n     * @returns The provenance for this node (may be parent's provenance if path collision occurred)\n     */\n    private createIndex(instance: IrNode, key = \"\", parentProvenance?: Provenance) {\n        const jsonPath = buildPath(parentProvenance?.jsonPath, key);\n\n        if (this.indexByPath.has(jsonPath)) {\n            // if the name was already taken that means that we've trimmed the path so we're not going to store this node\n            // in the byPath index because we want lookups to find the parent\n            // (this means if we use an xyz.name.name node we'll get back 'xyz' which is the resolved equivalent of the node)\n\n            if (!parentProvenance) {\n                fail(`Parent provenance not found for node: ${JSON.stringify(instance).substring(0, 100)}`);\n            }\n\n            // if someone looks up this object, dial them back to the parent provenance\n            this.indexByObject.set(instance, parentProvenance);\n\n            // Process children, but optimize for trimmed-key branches:\n            // Children of trimmed keys (e.g., \"name\") that are themselves trimmed keys\n            // (e.g., \"camelCase\", \"pascalCase\") only contain primitive string values\n            // (safeName/unsafeName), so we can register them without full recursion.\n            const isTrimmedKey = TRIMMED_KEYS.has(key);\n            for (const [childKey, childValue] of Object.entries(instance)) {\n                if (typeof childValue === \"object\" && childValue !== null) {\n                    if (isTrimmedKey && TRIMMED_KEYS.has(childKey)) {\n                        // This is a name case variant (e.g., camelCase under name).\n                        // Its children are only strings (safeName/unsafeName),\n                        // so just register the object mapping and skip recursion.\n                        this.indexByObject.set(childValue as IrNode, parentProvenance);\n                    } else {\n                        this.createIndex(childValue as IrNode, childKey, parentProvenance);\n                    }\n                }\n            }\n\n            return parentProvenance;\n        }\n\n        // otherwise, we can store the node in the indexes\n        const provenance = {\n            jsonPath,\n            name: key,\n            node: instance,\n            parent: parentProvenance\n        };\n        this.indexByObject.set(instance, provenance);\n        this.indexByPath.set(jsonPath, provenance);\n\n        // process the children nodes\n        for (const [childKey, childValue] of Object.entries(instance)) {\n            if (typeof childValue === \"object\" && childValue !== null) {\n                this.createIndex(childValue as IrNode, childKey, provenance);\n            }\n        }\n\n        return provenance;\n    }\n\n    /**\n     * Creates a provenance for a static explicit name at the root IR level.\n     *\n     * This is a convenience method that creates an explicit provenance as a child of\n     * the root IR node. Use this when you need to generate code with a hand-coded name\n     * that relates to the IR as a whole rather than a specific node.\n     *\n     * @param name - The explicit name to create\n     * @returns A new Provenance with the explicit flag set\n     */\n    staticExplicit(name: string): Provenance {\n        return this.explicit(this.ir, name);\n    }\n\n    /**\n     * Creates an explicit provenance for a hand-coded name that doesn't directly map to an IR node.\n     *\n     * This method is used when generating code elements that are not directly bound to items in the IR\n     * but are logically children of an IR node. For example, a hand-coded \"Value\" property on an enum\n     * that is generated but doesn't correspond to an actual IR node.\n     *\n     * The explicit provenance:\n     * - Has its jsonPath marked with a '+' prefix to indicate it's explicit (e.g., \"types.MyEnum+Value\")\n     * - Maintains a parent-child relationship with the origin node\n     * - Is tracked separately in explicitByObject and explicitByPath indexes\n     * - Has the explicit flag set to true\n     *\n     * @param node - The origin node (either an IrNode or existing Provenance) that is the logical parent\n     * @param member - The name of the explicit member being created\n     * @returns A new Provenance representing the explicit member\n     * @throws Error if provenance for the parent node cannot be found\n     */\n    explicit(node: Origin, member: string): Provenance {\n        const parentProvenance =\n            this.provenance(node) ?? fail(`Provenance not found for node: ${JSON.stringify(node).substring(0, 100)}`);\n\n        const element = {\n            ...parentProvenance,\n            // The '+' separator means member names won't match TRIMMED_KEYS segments,\n            // so we can directly concatenate without needing to trim.\n            jsonPath: `${parentProvenance.jsonPath}+${member}`,\n            name: member,\n            node: parentProvenance.node,\n            parent: parentProvenance,\n            explicit: true\n        };\n        const set = this.explicitByObject.get(parentProvenance.node);\n        if (set) {\n            set.add(element);\n        } else {\n            this.explicitByObject.set(parentProvenance.node, new Set([element]));\n        }\n        this.explicitByPath.set(element.jsonPath, element);\n        return element;\n    }\n\n    /**\n     * Retrieves the provenance for a given source (JsonPath, IrNode, or existing Provenance).\n     *\n     * This is the primary lookup method for finding provenance information. It supports multiple\n     * input types for flexibility:\n     * - JsonPath (string): Looks up by path, checking explicit paths first, then regular paths\n     * - Provenance: Validates and returns the provenance (checking explicit paths first)\n     * - IrNode: Looks up the provenance by object reference\n     * - undefined: Returns undefined\n     *\n     * Note: When looking up an IrNode, if the node's path was trimmed during indexing\n     * (due to path collision), this will return the parent provenance instead.\n     *\n     * @param source - The JsonPath, IrNode, Provenance, or undefined to look up\n     * @returns The Provenance for the source, or undefined if not found or source is undefined\n     */\n    provenance(source: JsonPath | IrNode | Provenance | undefined): Provenance | undefined {\n        if (source === undefined) {\n            return undefined;\n        }\n\n        if (is.string(source)) {\n            return this.explicitByPath.get(source) ?? this.indexByPath.get(source);\n        }\n        if (is.Provenance(source)) {\n            return this.explicitByPath.get(source.jsonPath) ?? this.indexByPath.get(source.jsonPath);\n        }\n\n        // get the provenance for the node requested (may return the parent provenance if the node was trimmed)\n        return this.indexByObject.get(source);\n    }\n\n    /**\n     * Retrieves the Origin for a given source.\n     *\n     * An Origin is either:\n     * - A Provenance (if the source is an explicit/hand-coded member)\n     * - An IrNode (if the source is a regular IR node)\n     *\n     * This method first looks up the provenance, then determines whether to return\n     * the provenance itself (if explicit) or just the underlying IrNode.\n     *\n     * @param source - The IrNode, JsonPath, Provenance, or undefined to look up\n     * @returns The Origin (either Provenance or IrNode), or undefined if not found\n     */\n    origin(source: IrNode | JsonPath | Provenance | undefined): Origin | undefined {\n        const provenance = this.provenance(source);\n        return provenance?.explicit ? provenance : provenance?.node;\n    }\n\n    /**\n     * Retrieves the actual IR node for a given source.\n     *\n     * This method always returns the underlying IrNode, regardless of whether the\n     * source is an explicit provenance or a regular node. It's useful when you need\n     * the actual IR data rather than metadata about it.\n     *\n     * @param source - The IrNode, JsonPath, Provenance, or undefined to look up\n     * @returns The underlying IrNode, or undefined if not found\n     */\n    irNode(source: IrNode | JsonPath | Provenance | undefined): IrNode | undefined {\n        return this.provenance(source)?.node;\n    }\n\n    /**\n     * Retrieves the JsonPath for a given source.\n     *\n     * This method extracts the JsonPath from the provenance of the source.\n     * The JsonPath represents the location of the node in the IR tree.\n     *\n     * @param source - The IrNode, JsonPath, Provenance, or undefined to look up\n     * @returns The JsonPath string, or undefined if not found\n     */\n    jsonPath(source: IrNode | JsonPath | Provenance | undefined): JsonPath | undefined {\n        return this.provenance(source)?.jsonPath;\n    }\n\n    /**\n     * Gets the C# property name for an enum value.\n     *\n     * This method resolves the property name that should be used in generated C# code\n     * for a specific enum value. It:\n     * 1. Extracts the name from either a NameAndWireValue or ExampleEnumType\n     * 2. Finds the matching enum member in the enum's values array\n     * 3. Returns the formatted property name for that member\n     *\n     * @param typeEnum - The enum type definition containing all possible values\n     * @param valueName - The enum value to look up (either a NameAndWireValue or ExampleEnumType)\n     * @returns The property name to use in generated C# code\n     * @throws Error if the enum value name cannot be found in the enum definition\n     */\n    getEnumValueName(typeEnum: FernIr.Type.Enum, valueName: FernIr.NameAndWireValue | FernIr.ExampleEnumType): string {\n        // get the name of the enum value\n        const name = is.IR.ExampleEnumType(valueName) ? valueName.value.name : valueName.name;\n        // match the name given to the name in the actual type\n        const member = typeEnum.values.find((v) => this.nameEquals(v.name.name, name));\n        // return the property name for that value\n        return member ? this.getPropertyNameFor(member) : fail(`Unexpected - can't find enum value ${name} in enum`);\n    }\n\n    /**\n     * Gets the C# property name for any property-like Origin.\n     *\n     * This method determines the appropriate property name for use in generated C# code.\n     * It follows a priority chain to extract the name:\n     *\n     * 1. Checks the registry for a pre-registered field name (fast path)\n     * 2. If the origin is a Provenance, uses its name directly\n     * 3. If the origin has a 'name' property:\n     *    - NameAndWireValue: Uses the PascalCase safe name\n     *    - Name: Uses the PascalCase safe name\n     *    - string: Uses the string directly\n     * 4. If the origin has a 'pascalCase' property: Uses the safe name\n     * 5. Otherwise: Throws an error\n     *\n     * @param property - The origin representing a property (can be an IrNode or Provenance)\n     * @returns The property name formatted for use in C# code\n     * @throws Error if the property type cannot be determined or doesn't have a name\n     */\n    getPropertyNameFor(property: Origin): string {\n        const fast = this.registry.getFieldNameByOrigin(property);\n        if (fast) {\n            return fast;\n        }\n        if (is.Provenance(property)) {\n            return property.name;\n        }\n        if (\"name\" in property) {\n            if (is.IR.NameAndWireValue(property.name)) {\n                return property.name.name.pascalCase.safeName;\n            }\n            if (is.IR.Name(property.name)) {\n                return property.name.pascalCase.safeName;\n            }\n            if (typeof property.name === \"string\") {\n                return property.name;\n            }\n        }\n        if (\"pascalCase\" in property) {\n            return property.pascalCase.safeName;\n        }\n\n        throw new Error(`Unknown property type: ${this.jsonPath(property)}`);\n    }\n\n    /**\n     * Gets the C# class name for any class-like Origin.\n     *\n     * This method determines the appropriate class name for use in generated C# code.\n     * It follows a priority chain similar to getPropertyNameFor:\n     *\n     * 1. If the origin is a Provenance, uses its name directly\n     * 2. If the origin has a 'name' property:\n     *    - TypeDeclaration: Uses the PascalCase safe name from the type's name\n     *    - NameAndWireValue: Uses the PascalCase safe name\n     *    - Name: Uses the PascalCase safe name\n     *    - string: Uses the string directly\n     * 3. If the origin has a 'pascalCase' property: Uses the safe name\n     * 4. Otherwise: Throws an error\n     *\n     * @param classDeclaration - The origin representing a class/type (can be an IrNode or Provenance)\n     * @returns The class name formatted for use in C# code\n     * @throws Error if the class type cannot be determined or doesn't have a name\n     */\n    getClassNameFor(classDeclaration: Origin): string {\n        if (is.Provenance(classDeclaration)) {\n            return classDeclaration.name;\n        }\n        if (\"name\" in classDeclaration) {\n            if (is.IR.TypeDeclaration(classDeclaration)) {\n                return classDeclaration.name.name.pascalCase.safeName;\n            }\n            if (is.IR.NameAndWireValue(classDeclaration.name)) {\n                return classDeclaration.name.name.pascalCase.safeName;\n            }\n            if (is.IR.Name(classDeclaration.name)) {\n                return classDeclaration.name.pascalCase.safeName;\n            }\n            if (typeof classDeclaration.name === \"string\") {\n                return classDeclaration.name;\n            }\n        }\n        if (\"pascalCase\" in classDeclaration) {\n            return classDeclaration.pascalCase.safeName;\n        }\n\n        throw new Error(`Unknown property type: ${JSON.stringify(classDeclaration)}`);\n    }\n\n    /**\n     * Compares two IR Name objects for equality.\n     *\n     * Names in the IR can have multiple case variants (camelCase, PascalCase, snake_case, etc.).\n     * This method determines if two names refer to the same logical entity by comparing their\n     * camelCase safeName representations. Using camelCase as the canonical form ensures\n     * consistent equality checks regardless of which case variant is used.\n     *\n     * @param name1 - The first Name object to compare\n     * @param name2 - The second Name object to compare\n     * @returns true if the names are equal (same camelCase safeName), false otherwise\n     */\n    nameEquals(name1: FernIr.Name, name2: FernIr.Name): boolean {\n        return name1.camelCase.safeName === name2.camelCase.safeName;\n    }\n\n    /**\n     * Dereferences a type reference to get its full type declaration.\n     *\n     * In the IR, types can be referenced in several ways (by ID string, by NamedType,\n     * by DeclaredTypeName, by ExampleNamedType, or by TypeDeclaration directly).\n     * This method resolves any of these references to the actual TypeDeclaration\n     * stored in the IR's types map.\n     *\n     * The method:\n     * 1. Extracts the typeId from whatever form of type reference is provided\n     * 2. Looks up the type in the IR's types map using that typeId\n     * 3. Returns both the typeId and the full TypeDeclaration\n     *\n     * This overload signature requires that the result be a standard TypeDeclaration\n     * (not a dynamic NamedType), which is enforced by the input types.\n     *\n     * @param typeIdOrDeclaration - A type reference in any supported form\n     * @returns An object containing the typeId and the resolved TypeDeclaration\n     * @throws Error if the typeId cannot be resolved to a TypeDeclaration\n     */\n    dereferenceType(\n        typeIdOrDeclaration:\n            | FernIr.TypeDeclaration\n            | FernIr.NamedType\n            | FernIr.DeclaredTypeName\n            | FernIr.ExampleNamedType\n            | string\n    ): {\n        typeId: string;\n        typeDeclaration: FernIr.TypeDeclaration;\n    };\n    /**\n     * Dereferences a type reference to get its full type declaration (dynamic IR variant).\n     *\n     * This overload is similar to the standard dereferenceType but supports resolving\n     * to either a standard TypeDeclaration or a dynamic DynamicFernIr.dynamic.NamedType.\n     * The commented-out DynamicFernIr.dynamic.NamedType in the input types suggests this\n     * may be partially implemented or in transition.\n     *\n     * @param typeIdOrDeclaration - A type reference in any supported form (excluding ExampleNamedType)\n     * @returns An object containing the typeId and the resolved TypeDeclaration or dynamic NamedType\n     * @throws Error if the typeId cannot be resolved to a type declaration\n     */\n    dereferenceType(\n        typeIdOrDeclaration:\n            | FernIr.TypeDeclaration\n            | FernIr.NamedType\n            | FernIr.DeclaredTypeName /* | FernIr.dynamic.NamedType */\n            | string\n    ): {\n        typeId: string;\n        typeDeclaration: FernIr.TypeDeclaration | DynamicFernIr.dynamic.NamedType;\n    } {\n        // get the typeId and name\n        const typeId = is.string(typeIdOrDeclaration)\n            ? typeIdOrDeclaration\n            : is.IR.NamedType(typeIdOrDeclaration) || is.IR.DeclaredTypeName(typeIdOrDeclaration)\n              ? typeIdOrDeclaration.typeId\n              : is.IR.ExampleNamedType(typeIdOrDeclaration)\n                ? typeIdOrDeclaration.typeName.typeId\n                : typeIdOrDeclaration.name.typeId;\n\n        // resolve the typeId to the actual type in the bottom of the IR\n        const declaration = this.irNode(this.ir.types[typeId]);\n        if (is.IR.TypeDeclaration(declaration)) {\n            return {\n                typeId,\n                typeDeclaration: declaration\n            };\n        }\n        fail(`dereferenceType: typeId ${typeId} not resolved.`);\n    }\n}\n","import { type Generation } from \"./context/generation-info.js\";\n\n/**\n * A trivial class of convenience properties that a generator class can inherit from to gain access to the portable context features.\n *\n * This base class provides convenient access to common generation context properties through protected getters,\n * eliminating the need to repeatedly access `this.ctx.generation.*` throughout generator implementations.\n */\nexport class WithGeneration {\n    public constructor(protected readonly generation: Generation) {}\n\n    /** Provides access to C# code generation utilities */\n    protected get csharp() {\n        return this.generation.csharp;\n    }\n\n    /** Provides access to generation settings and configuration */\n    protected get settings() {\n        return this.generation.settings;\n    }\n\n    /** Provides access to generation constants */\n    protected get constants() {\n        return this.generation.constants;\n    }\n\n    /** Provides access to namespace management utilities */\n    protected get namespaces() {\n        return this.generation.namespaces;\n    }\n\n    /** Provides access to naming utilities for generating consistent identifiers */\n    protected get names() {\n        return this.generation.names;\n    }\n\n    /** Provides access to the model navigation and inspection utilities */\n    protected get model() {\n        return this.generation.model;\n    }\n    /** Provides access to text formatting utilities */\n    protected get format() {\n        return this.generation.format;\n    }\n\n    /** Provides access to the type registry for looking up generated types */\n    protected get registry() {\n        return this.generation.registry;\n    }\n    /** Provides access to type information and utilities */\n    protected get Types() {\n        return this.generation.Types;\n    }\n\n    /** Provides access to .NET System namespace types and utilities */\n    public get System() {\n        return this.generation.extern.System;\n    }\n\n    /** Provides access to NUnit testing framework types */\n    public get NUnit() {\n        return this.generation.extern.NUnit;\n    }\n\n    /** Provides access to OneOf discriminated union library types */\n    public get OneOf() {\n        return this.generation.extern.OneOf;\n    }\n\n    /** Provides access to Google protocol buffer types */\n    public get Google() {\n        return this.generation.extern.Google;\n    }\n    public get Grpc() {\n        return this.generation.extern.Grpc;\n    }\n    /** Provides access to WireMock.Net testing/mocking library types */\n    public get WireMock() {\n        return this.generation.extern.WireMock;\n    }\n    /** Provides access to primitive types */\n    public get Primitive() {\n        return this.generation.Primitive;\n    }\n    /** Provides access to value types */\n    public get Value() {\n        return this.generation.Value;\n    }\n    /** Provides access to collection types */\n    public get Collection() {\n        return this.generation.Collection;\n    }\n}\n","import { DiscriminatedUnionTypeInstance, NamedArgument, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { ast, WithGeneration } from \"@fern-api/csharp-codegen\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport declare namespace DynamicLiteralMapper {\n    interface Args {\n        typeReference: FernIr.dynamic.TypeReference;\n        value: unknown;\n        as?: ConvertedAs;\n        fallbackToDefault?: string;\n    }\n\n    // Identifies what the type is being converted as, which sometimes influences how\n    // the type is instantiated.\n    type ConvertedAs = \"key\";\n}\n\nexport class DynamicLiteralMapper extends WithGeneration {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        super(context.generation);\n        this.context = context;\n    }\n\n    public convert(args: DynamicLiteralMapper.Args): ast.Literal {\n        // eslint-disable-next-line eqeqeq\n        if (args.value === null) {\n            if (this.context.isNullable(args.typeReference)) {\n                return this.csharp.Literal.null();\n            }\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Expected non-null value, but got null\"\n            });\n            return this.csharp.Literal.nop();\n        }\n        if (args.value === undefined && !args.fallbackToDefault) {\n            return this.csharp.Literal.nop();\n        }\n        switch (args.typeReference.type) {\n            case \"list\":\n                return this.convertList({\n                    list: args.typeReference.value,\n                    value: args.value,\n                    fallbackToDefault: args.fallbackToDefault\n                });\n            case \"literal\":\n                return this.convertLiteral({\n                    literal: args.typeReference.value,\n                    value: args.value\n                });\n            case \"map\":\n                return this.convertMap({\n                    map: args.typeReference,\n                    value: args.value,\n                    fallbackToDefault: args.fallbackToDefault\n                });\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named == null) {\n                    return this.csharp.Literal.nop();\n                }\n                return this.convertNamed({\n                    named,\n                    value: args.value,\n                    as: args.as,\n                    fallbackToDefault: args.fallbackToDefault\n                });\n            }\n            case \"nullable\":\n                return this.convert({\n                    typeReference: args.typeReference.value,\n                    value: args.value,\n                    as: args.as\n                });\n            case \"optional\":\n                return this.convert({\n                    typeReference: args.typeReference.value,\n                    value: args.value,\n                    as: args.as\n                });\n            case \"primitive\":\n                return this.convertPrimitive({\n                    primitive: args.typeReference.value,\n                    value: args.value,\n                    as: args.as,\n                    fallbackToDefault: args.fallbackToDefault\n                });\n            case \"set\":\n                return this.convertSet({\n                    set: args.typeReference.value,\n                    value: args.value,\n                    fallbackToDefault: args.fallbackToDefault\n                });\n            case \"unknown\":\n                return this.convertUnknown({ value: args.value, fallbackToDefault: args.fallbackToDefault });\n            default:\n                assertNever(args.typeReference);\n        }\n    }\n\n    private convertList({\n        list,\n        value,\n        fallbackToDefault\n    }: {\n        list: FernIr.dynamic.TypeReference;\n        value: unknown;\n        fallbackToDefault?: string;\n    }): ast.Literal {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return this.csharp.Literal.nop();\n        }\n        return this.csharp.Literal.list({\n            valueType: this.context.dynamicTypeMapper.convert({ typeReference: list, unboxOptionals: true }),\n            values: value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: list, value: v });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertLiteral({\n        literal,\n        value,\n        fallbackToDefault\n    }: {\n        literal: FernIr.dynamic.LiteralType;\n        value: unknown;\n        fallbackToDefault?: string;\n    }): ast.Literal {\n        switch (literal.type) {\n            case \"boolean\": {\n                const bool = this.context.getValueAsBoolean({ value });\n                if (bool == null) {\n                    return this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.boolean(bool);\n            }\n            case \"string\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.string.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.string(str);\n            }\n            default:\n                assertNever(literal);\n        }\n    }\n\n    private convertSet({\n        set,\n        value,\n        fallbackToDefault\n    }: {\n        set: FernIr.dynamic.TypeReference;\n        value: unknown;\n        fallbackToDefault?: string;\n    }): ast.Literal {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return this.csharp.Literal.nop();\n        }\n        return this.csharp.Literal.set({\n            valueType: this.context.dynamicTypeMapper.convert({ typeReference: set, unboxOptionals: true }),\n            values: value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: set, value: v });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertMap({\n        map,\n        value,\n        fallbackToDefault\n    }: {\n        map: FernIr.dynamic.MapType;\n        value: unknown;\n        fallbackToDefault?: string;\n    }): ast.Literal {\n        if (typeof value !== \"object\" || value == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n            });\n            return this.csharp.Literal.nop();\n        }\n        return this.csharp.Literal.dictionary({\n            keyType: this.context.dynamicTypeMapper.convert({ typeReference: map.key }),\n            valueType:\n                map.value.type === \"unknown\"\n                    ? this.context.dynamicTypeMapper.convert({ typeReference: map.value }).asOptional()\n                    : this.context.dynamicTypeMapper.convert({ typeReference: map.value }),\n            entries: Object.entries(value).map(([key, value]) => {\n                this.context.errors.scope(key);\n                try {\n                    return {\n                        key: this.convert({ typeReference: map.key, value: key, as: \"key\" }),\n                        value: this.convert({ typeReference: map.value, value })\n                    };\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertNamed({\n        named,\n        value,\n        as,\n        fallbackToDefault\n    }: {\n        named: FernIr.dynamic.NamedType;\n        value: unknown;\n        as?: DynamicLiteralMapper.ConvertedAs;\n        fallbackToDefault?: string;\n    }): ast.Literal {\n        switch (named.type) {\n            case \"alias\":\n                return this.convert({ typeReference: named.typeReference, value, as, fallbackToDefault });\n            case \"discriminatedUnion\":\n                if (this.settings.shouldGeneratedDiscriminatedUnions) {\n                    return this.convertDiscriminatedUnion({ discriminatedUnion: named, value, fallbackToDefault });\n                }\n                return this.convertUnknown({ value, fallbackToDefault });\n            case \"enum\":\n                return this.getEnumValue(named, value);\n            case \"object\":\n                return this.convertObject({ object_: named, value, fallbackToDefault });\n            case \"undiscriminatedUnion\":\n                return this.convertUndiscriminatedUnion({ undiscriminatedUnion: named, value, fallbackToDefault });\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertDiscriminatedUnion({\n        discriminatedUnion,\n        value,\n        fallbackToDefault\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n        fallbackToDefault?: string;\n    }): ast.Literal {\n        const classReference = this.csharp.classReference({\n            origin: discriminatedUnion.declaration,\n            namespace: this.context.getNamespace(discriminatedUnion.declaration.fernFilepath)\n        });\n        const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n            discriminatedUnion,\n            value\n        });\n        if (discriminatedUnionTypeInstance == null) {\n            return this.csharp.Literal.nop();\n        }\n        const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n        const baseProperties = this.getBaseProperties({\n            discriminatedUnionTypeInstance,\n            singleDiscriminatedUnionType: unionVariant\n        });\n        switch (unionVariant.type) {\n            case \"samePropertiesAsObject\": {\n                const named = this.context.resolveNamedType({\n                    typeId: unionVariant.typeId\n                });\n                if (named == null) {\n                    return this.csharp.Literal.nop();\n                }\n                return this.instantiateUnionWithBaseProperties({\n                    classReference,\n                    baseProperties,\n                    arguments_: [this.convertNamed({ named, value: discriminatedUnionTypeInstance.value })]\n                });\n            }\n            case \"singleProperty\": {\n                const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n                if (record == null) {\n                    return this.csharp.Literal.nop();\n                }\n                try {\n                    const innerClassName = [\"Value\", \"Type\"].includes(\n                        unionVariant.discriminantValue.name.pascalCase.safeName\n                    )\n                        ? `${unionVariant.discriminantValue.name.pascalCase.safeName}Inner`\n                        : unionVariant.discriminantValue.name.pascalCase.safeName;\n\n                    this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n                    return this.instantiateUnionWithBaseProperties({\n                        classReference,\n                        baseProperties,\n                        arguments_: [\n                            this.csharp.instantiateClass({\n                                classReference: this.csharp.classReference({\n                                    // origin: discriminatedUnionTypeInstance.discriminantValue,\n                                    name: innerClassName,\n                                    enclosingType: classReference\n                                }),\n                                arguments_: [\n                                    this.convert({\n                                        typeReference: unionVariant.typeReference,\n                                        value: unionVariant.discriminantValue.wireValue\n                                    })\n                                ]\n                            })\n                        ]\n                    });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }\n            case \"noProperties\":\n                return this.instantiateUnionWithBaseProperties({\n                    classReference,\n                    baseProperties,\n                    arguments_: [\n                        // Unions with no properties require the discriminant property to be set.\n                        this.csharp.instantiateClass({\n                            classReference: this.csharp.classReference({\n                                origin: discriminatedUnionTypeInstance.discriminantValue,\n                                enclosingType: classReference\n                            }),\n                            arguments_: []\n                        })\n                    ]\n                });\n            default:\n                assertNever(unionVariant);\n        }\n    }\n\n    private getBaseProperties({\n        discriminatedUnionTypeInstance,\n        singleDiscriminatedUnionType\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        singleDiscriminatedUnionType: FernIr.dynamic.SingleDiscriminatedUnionType;\n    }): NamedArgument[] {\n        const properties = this.context.associateByWireValue({\n            parameters: singleDiscriminatedUnionType.properties ?? [],\n            values: this.context.getRecord(discriminatedUnionTypeInstance.value) ?? {},\n\n            // We're only selecting the base properties here. The rest of the properties\n            // are handled by the union variant.\n            ignoreMissingParameters: true\n        });\n        return properties.map((property) => {\n            this.context.errors.scope(property.name.wireValue);\n            try {\n                return {\n                    name: this.context.getPropertyName(property.name.name),\n                    assignment: this.convert(property)\n                };\n            } finally {\n                this.context.errors.unscope();\n            }\n        });\n    }\n\n    private instantiateUnionWithBaseProperties({\n        classReference,\n        arguments_,\n        baseProperties\n    }: {\n        classReference: ast.ClassReference;\n        arguments_: ast.AstNode[];\n        baseProperties: NamedArgument[];\n    }): ast.Literal {\n        const instantiation = this.csharp.instantiateClass({\n            classReference,\n            arguments_,\n            multiline: true\n        });\n        if (baseProperties.length === 0) {\n            return this.csharp.Literal.reference(instantiation);\n        }\n        return this.csharp.Literal.reference(\n            this.csharp.codeblock((writer) => {\n                writer.write(instantiation, \" \");\n                writer.pushScope();\n                for (const baseProperty of baseProperties) {\n                    writer.write(baseProperty.name, \" = \", baseProperty.assignment, \",\");\n                }\n                writer.popScope(false);\n            })\n        );\n    }\n\n    private getEnumValue(enum_: FernIr.dynamic.EnumType, wireValue: unknown): ast.Literal {\n        if (typeof wireValue !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected enum value string, got: ${typeof wireValue}`\n            });\n            return this.csharp.Literal.nop();\n        }\n        const enumValue = enum_.values.find((v) => v.wireValue === wireValue);\n        if (enumValue == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `An enum value named \"${wireValue}\" does not exist in this context`\n            });\n            return this.csharp.Literal.nop();\n        }\n        const reference = this.csharp.classReference({\n            origin: enum_.declaration,\n            namespace: this.context.getNamespace(enum_.declaration.fernFilepath)\n        });\n\n        const valueName = reference.registerField(this.model.getPropertyNameFor(enumValue), enumValue);\n\n        return this.csharp.Literal.reference(\n            this.csharp.enumInstantiation({\n                reference,\n                value: valueName\n            })\n        );\n    }\n\n    private convertObject({\n        object_,\n        value,\n        fallbackToDefault\n    }: {\n        object_: FernIr.dynamic.ObjectType;\n        value: unknown;\n        fallbackToDefault?: string;\n    }): ast.Literal {\n        const properties = this.context.associateByWireValue({\n            parameters: object_.properties,\n            values: this.context.getRecord(value) ?? {}\n        });\n\n        return this.csharp.Literal.class_({\n            reference: this.csharp.classReference({\n                origin: object_.declaration,\n                namespace: this.context.getNamespace(object_.declaration.fernFilepath)\n            }),\n            fields: properties.map((property) => {\n                this.context.errors.scope(property.name.wireValue);\n                try {\n                    return {\n                        name: this.context.getClassName(property.name.name),\n                        value: this.convert(property)\n                    };\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertUndiscriminatedUnion({\n        undiscriminatedUnion,\n        value,\n        fallbackToDefault\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n        fallbackToDefault?: string;\n    }): ast.Literal {\n        const result = this.findMatchingUndiscriminatedUnionType({\n            undiscriminatedUnion,\n            value\n        });\n        if (result == null) {\n            return this.csharp.Literal.nop();\n        }\n        return result.typeLiteral;\n    }\n\n    private findMatchingUndiscriminatedUnionType({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): { valueTypeReference: FernIr.dynamic.TypeReference; typeLiteral: ast.Literal } | undefined {\n        for (const typeReference of undiscriminatedUnion.types) {\n            try {\n                const typeLiteral = this.convert({ typeReference, value });\n                return { valueTypeReference: typeReference, typeLiteral };\n            } catch (e) {\n                continue;\n            }\n        }\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value`\n        });\n        return undefined;\n    }\n\n    private convertUnknown({ value, fallbackToDefault }: { value: unknown; fallbackToDefault?: string }): ast.Literal {\n        return this.csharp.Literal.unknown(value);\n    }\n\n    private convertPrimitive({\n        primitive,\n        value,\n        as,\n        fallbackToDefault\n    }: {\n        primitive: FernIr.dynamic.PrimitiveTypeV1;\n        value: unknown;\n        as?: DynamicLiteralMapper.ConvertedAs;\n        fallbackToDefault?: string;\n    }): ast.Literal {\n        switch (primitive) {\n            case \"INTEGER\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.integer.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.integer(num);\n            }\n            case \"LONG\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.long.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.long(num);\n            }\n            case \"UINT\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.uint.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.uint(num);\n            }\n            case \"UINT_64\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.ulong.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.ulong(num);\n            }\n            case \"FLOAT\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.float.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.float(num);\n            }\n            case \"DOUBLE\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.double.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.double(num);\n            }\n            case \"BOOLEAN\": {\n                const bool = this.getValueAsBoolean({ value, as });\n                if (bool == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.boolean.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.boolean(bool);\n            }\n            case \"STRING\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.string.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.string(str);\n            }\n            case \"DATE\": {\n                const date = this.context.getValueAsString({ value });\n                if (date == null) {\n                    return fallbackToDefault\n                        ? this.Value.dateOnly.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.date(date);\n            }\n            case \"DATE_TIME\": {\n                const dateTime = this.context.getValueAsString({ value });\n                if (dateTime == null) {\n                    return fallbackToDefault\n                        ? this.Value.dateTime.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.datetime(dateTime);\n            }\n            case \"UUID\": {\n                const uuid = this.context.getValueAsString({ value });\n                if (uuid == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.string.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.string(uuid);\n            }\n            case \"BASE_64\": {\n                const base64 = this.context.getValueAsString({ value });\n                if (base64 == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.string.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.string(base64);\n            }\n            case \"BIG_INTEGER\": {\n                const bigInt = this.context.getValueAsString({ value });\n                if (bigInt == null) {\n                    return fallbackToDefault\n                        ? this.Primitive.string.getDeterminsticDefault(fallbackToDefault)\n                        : this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.string(bigInt);\n            }\n            default:\n                assertNever(primitive);\n        }\n    }\n\n    private getValueAsNumber({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicLiteralMapper.ConvertedAs;\n    }): number | undefined {\n        const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n        return this.context.getValueAsNumber({ value: num });\n    }\n\n    private getValueAsBoolean({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicLiteralMapper.ConvertedAs;\n    }): boolean | undefined {\n        const bool =\n            as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : value === \"false\" ? false : value) : value;\n        return this.context.getValueAsBoolean({ value: bool });\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { ast, WithGeneration } from \"@fern-api/csharp-codegen\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport declare namespace DynamicTypeMapper {\n    interface Args {\n        typeReference: FernIr.dynamic.TypeReference;\n        unboxOptionals?: boolean;\n    }\n}\n\nexport class DynamicTypeMapper extends WithGeneration {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        super(context.generation);\n        this.context = context;\n    }\n\n    public convert(args: DynamicTypeMapper.Args): ast.Type {\n        switch (args.typeReference.type) {\n            case \"list\":\n                return this.Collection.list(\n                    this.convert({ typeReference: args.typeReference.value, unboxOptionals: true })\n                );\n            case \"literal\":\n                return this.convertLiteral({ literal: args.typeReference.value });\n            case \"map\": {\n                return this.Collection.map(\n                    this.convert({ typeReference: args.typeReference.key }),\n                    this.convert({ typeReference: args.typeReference.value })\n                );\n            }\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named == null) {\n                    return this.convertUnknown();\n                }\n                return this.convertNamed({ named });\n            }\n            case \"optional\":\n            case \"nullable\": {\n                const value = this.convert({ typeReference: args.typeReference.value });\n                return args.unboxOptionals ? value.asNonOptional() : value.asOptional();\n            }\n            case \"primitive\":\n                return this.convertPrimitive({ primitive: args.typeReference.value });\n            case \"set\":\n                return this.Collection.set(\n                    this.convert({ typeReference: args.typeReference.value, unboxOptionals: true })\n                );\n            case \"unknown\":\n                return this.convertUnknown();\n            default:\n                assertNever(args.typeReference);\n        }\n    }\n\n    convertToClassReference(named: FernIr.dynamic.NamedType): ast.ClassReference {\n        return this.csharp.classReference({\n            origin: named.declaration,\n            namespace: this.context.getNamespace(named.declaration.fernFilepath)\n        });\n    }\n\n    private convertNamed({ named }: { named: FernIr.dynamic.NamedType }): ast.Type {\n        switch (named.type) {\n            case \"alias\":\n                return this.convert({ typeReference: named.typeReference });\n            case \"enum\":\n            case \"object\":\n                return this.csharp.classReference({\n                    origin: named.declaration,\n                    namespace: this.context.getNamespace(named.declaration.fernFilepath)\n                });\n\n            case \"discriminatedUnion\":\n                if (!this.settings.shouldGeneratedDiscriminatedUnions) {\n                    return this.Primitive.object;\n                }\n                return this.csharp.classReference({\n                    origin: named.declaration,\n                    namespace: this.context.getNamespace(named.declaration.fernFilepath)\n                });\n\n            case \"undiscriminatedUnion\":\n                if (this.settings.shouldGenerateUndiscriminatedUnions) {\n                    return this.csharp.classReference({\n                        origin: named.declaration,\n                        namespace: this.context.getNamespace(named.declaration.fernFilepath)\n                    });\n                }\n                return this.OneOf.OneOf(\n                    named.types.map((typeReference) => {\n                        return this.convert({ typeReference });\n                    })\n                );\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertLiteral({ literal }: { literal: FernIr.dynamic.LiteralType }): ast.Type {\n        switch (literal.type) {\n            case \"boolean\":\n                return this.Primitive.boolean;\n            case \"string\":\n                return this.Primitive.string;\n        }\n    }\n\n    private convertUnknown(): ast.Type {\n        return this.Primitive.object;\n    }\n\n    private convertPrimitive({ primitive }: { primitive: FernIr.dynamic.PrimitiveTypeV1 }): ast.Type {\n        switch (primitive) {\n            case \"INTEGER\":\n                return this.Primitive.integer;\n            case \"UINT\":\n                return this.Primitive.uint;\n            case \"LONG\":\n                return this.Primitive.long;\n            case \"UINT_64\":\n                return this.Primitive.ulong;\n            case \"FLOAT\":\n                return this.Primitive.float;\n            case \"DOUBLE\":\n                return this.Primitive.double;\n            case \"BOOLEAN\":\n                return this.Primitive.boolean;\n            case \"STRING\":\n                return this.Primitive.string;\n            case \"DATE\":\n                return this.Value.dateOnly;\n            case \"DATE_TIME\":\n                return this.Value.dateTime;\n            case \"UUID\":\n                return this.Primitive.string;\n            case \"BASE_64\":\n                return this.Primitive.string;\n            case \"BIG_INTEGER\":\n                return this.Primitive.string;\n            default:\n                assertNever(primitive);\n        }\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { ast, is, WithGeneration } from \"@fern-api/csharp-codegen\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport interface FilePropertyInfo {\n    fileFields: ast.ConstructorField[];\n    bodyPropertyFields: ast.ConstructorField[];\n}\n\nexport class FilePropertyMapper extends WithGeneration {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        super(context.generation);\n        this.context = context;\n    }\n\n    public getFilePropertyInfo({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.FileUploadRequestBody;\n        value: unknown;\n    }): FilePropertyInfo {\n        const result: FilePropertyInfo = {\n            fileFields: [],\n            bodyPropertyFields: []\n        };\n        const record = this.context.getRecord(value) ?? {};\n        for (const property of body.properties) {\n            switch (property.type) {\n                case \"file\":\n                    // if we don't have a record, we can fake some data for it.\n                    if (is.Record.missingKey(record, property.wireValue)) {\n                        record[property.wireValue] = \"[bytes]\";\n                    }\n                    result.fileFields.push({\n                        name: this.context.getPropertyName(property.name),\n                        value: this.getSingleFileProperty({ property, record })\n                    });\n                    break;\n                case \"fileArray\":\n                    // if we don't have a record, we can fake some data for it.\n                    if (is.Record.missingKey(record, property.wireValue)) {\n                        record[property.wireValue] = [\"[bytes]\"];\n                    }\n                    result.fileFields.push({\n                        name: this.context.getPropertyName(property.name),\n                        value: this.getArrayFileProperty({ property, record })\n                    });\n                    break;\n                case \"bodyProperty\":\n                    // if we don't have a record, we can try fake some data for it.\n                    if (is.Record.missingKey(record, property.name.wireValue)) {\n                        switch (property.typeReference.type) {\n                            case \"optional\": {\n                                // ignore missing optional values\n                                break;\n                            }\n                            case \"primitive\": {\n                                // for primitives, we can return a sample value.\n                                switch (property.typeReference.value.toLowerCase()) {\n                                    case \"integer\": {\n                                        record[property.name.wireValue] = 123;\n                                        break;\n                                    }\n                                    case \"string\": {\n                                        record[property.name.wireValue] = \"[string]\";\n                                        break;\n                                    }\n                                    case \"boolean\": {\n                                        record[property.name.wireValue] = true;\n                                        break;\n                                    }\n                                    case \"double\": {\n                                        record[property.name.wireValue] = 123.456;\n                                        break;\n                                    }\n                                    case \"float\": {\n                                        record[property.name.wireValue] = 123.456;\n                                        break;\n                                    }\n                                    case \"long\": {\n                                        record[property.name.wireValue] = 123456789;\n                                        break;\n                                    }\n                                    case \"uint\": {\n                                        record[property.name.wireValue] = 123;\n                                        break;\n                                    }\n                                    case \"uint64\": {\n                                        record[property.name.wireValue] = 12345;\n                                        break;\n                                    }\n                                    case \"date\": {\n                                        record[property.name.wireValue] = new Date(2021, 1, 1);\n                                        break;\n                                    }\n                                    case \"datetime\": {\n                                        record[property.name.wireValue] = new Date(2021, 1, 1, 12, 0, 0);\n                                        break;\n                                    }\n                                    case \"uuid\": {\n                                        record[property.name.wireValue] = \"123e4567-e89b-12d3-a456-426614174000\";\n                                        break;\n                                    }\n                                    case \"base64\": {\n                                        record[property.name.wireValue] = \"SGVsbG8gd29ybGQh\";\n                                        break;\n                                    }\n                                    case \"biginteger\": {\n                                        record[property.name.wireValue] = \"12345678901234567890\";\n                                        break;\n                                    }\n                                }\n                                break;\n                            }\n\n                            default: {\n                                // todo: optionally synthesize a value for a other types in the future\n                                break;\n                            }\n                        }\n                    }\n                    result.bodyPropertyFields.push({\n                        name: this.context.getPropertyName(property.name.name),\n                        value: this.getBodyProperty({ property, record })\n                    });\n                    break;\n                default:\n                    assertNever(property);\n            }\n        }\n        return result;\n    }\n\n    private getSingleFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): ast.Literal {\n        const fileValue = this.context.getSingleFileValue({ property, record });\n        if (fileValue == null) {\n            return this.csharp.Literal.nop();\n        }\n        return this.context.getFileParameterForString(fileValue);\n    }\n\n    private getArrayFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): ast.Literal {\n        const fileValues = this.context.getFileArrayValues({ property, record });\n        if (fileValues == null) {\n            return this.csharp.Literal.nop();\n        }\n        return this.csharp.Literal.list({\n            valueType: this.Types.FileParameter,\n            values: fileValues.map((value) => this.context.getFileParameterForString(value))\n        });\n    }\n\n    private getBodyProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.NamedParameter;\n        record: Record<string, unknown>;\n    }): ast.Literal {\n        const bodyPropertyValue = record[property.name.wireValue];\n        if (bodyPropertyValue == null) {\n            return this.csharp.Literal.nop();\n        }\n        return this.context.dynamicLiteralMapper.convert({\n            typeReference: property.typeReference,\n            value: bodyPropertyValue\n        });\n    }\n}\n","import { NamedArgument, Options, Scope, Severity, Style } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { ast, is, WithGeneration } from \"@fern-api/csharp-codegen\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { camelCase, upperFirst } from \"lodash-es\";\nimport { Config } from \"./Config.js\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper.js\";\n\nexport class EndpointSnippetGenerator extends WithGeneration {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        super(context.generation);\n        this.context = context;\n    }\n\n    public async generateSnippet({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): Promise<string> {\n        const code = this.buildCodeBlock({ endpoint, snippet: request, options });\n        return code.toString({\n            namespace: \"Usage\",\n            generation: this.generation,\n            allNamespaceSegments: new Set(),\n            allTypeClassReferences: new Map(),\n            // Snippets are user-facing code (READMEs, docs) — skip global:: qualifiers\n            // so the output looks clean. With empty allNamespaceSegments/allTypeClassReferences,\n            // the ambiguity and type-namespace conflict checks are already no-ops;\n            // this flag additionally suppresses the unconditional System prefix.\n            skipGlobalQualifier: true\n        });\n    }\n\n    public generateSnippetSync({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): string {\n        const code = this.buildCodeBlock({ endpoint, snippet: request, options });\n        return code.toString({\n            namespace: \"Usage\",\n            generation: this.generation,\n            allNamespaceSegments: new Set(),\n            allTypeClassReferences: new Map(),\n            // See generateSnippet for rationale.\n            skipGlobalQualifier: true\n        });\n    }\n\n    public async generateSnippetAst({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): Promise<ast.AstNode> {\n        throw new Error(\"Unsupported\");\n    }\n\n    private buildCodeBlock({\n        endpoint,\n        snippet,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): ast.AstNode {\n        // if we're actually passed the examples, we need to\n        // check that the endpoint that we're generating has an example that matches the snippet\n        if (\n            endpoint.examples &&\n            !endpoint.examples?.find((each) => is.DynamicIR.EndpointExample(snippet) && each.id === snippet.id)\n        ) {\n            // the dsg expects us to just throw when there is nothing to generate.\n            throw new Error(\"Endpoint does not have an example that matches the snippet\");\n        }\n\n        const body = this.csharp.codeblock((writer) => {\n            writer.writeNodeStatement(this.constructClient({ endpoint, snippet }));\n            writer.newLine();\n            writer.writeNodeStatement(this.callMethod({ endpoint, snippet }));\n        });\n        const style = this.getStyle(options);\n        switch (style) {\n            case Style.Concise:\n                return body;\n            case Style.Full:\n                return this.buildFullCodeBlock({ body, options });\n            default:\n                assertNever(style);\n        }\n    }\n\n    private buildFullCodeBlock({ body, options }: { body: ast.CodeBlock; options: Options }): ast.AstNode {\n        const config = this.getConfig(options);\n        const class_ = this.csharp.class_({\n            name: config.fullStyleClassName ?? \"Example\",\n            namespace: \"Usage\",\n            access: ast.Access.Public\n        });\n\n        // before we add the method, we're going to make the class aware of the root client namespace\n        // which can help when finding out if we're going to have an ambiguous type of some kind.\n        class_.addNamespaceReference(this.Types.RootClientForSnippets.namespace);\n\n        class_.addMethod({\n            name: \"Do\",\n            access: ast.Access.Public,\n            isAsync: true,\n            parameters: [],\n            body\n        });\n        return class_;\n    }\n\n    private constructClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ast.CodeBlock {\n        return this.csharp.codeblock((writer) => {\n            writer.write(`var client = `);\n            writer.writeNode(this.getRootClientConstructorInvocation(this.getConstructorArgs({ endpoint, snippet })));\n        });\n    }\n\n    private callMethod({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ast.CodeBlock | ast.MethodInvocation {\n        // if the example has *any* sample with stream set to true, then the method is an async enumerable\n        const isAsyncEnumerable =\n            endpoint.response?.type === \"streaming\" || endpoint.response?.type === \"streamParameter\";\n\n        const invocation = this.csharp.invokeMethod({\n            on: this.csharp.codeblock(\"client\"),\n            method: this.getMethod({ endpoint }),\n            arguments_: this.getMethodArgs({ endpoint, snippet }),\n            async: true,\n            configureAwait: true,\n            multiline: true,\n            isAsyncEnumerable\n        });\n\n        if (isAsyncEnumerable) {\n            return this.csharp.codeblock((writer) => {\n                writer.write(\"await foreach (var item in \");\n                writer.writeNode(invocation);\n                writer.writeLine(\")\");\n                writer.pushScope();\n                writer.writeLine(\"/* consume each item */\");\n                writer.popScope();\n            });\n        }\n        return invocation;\n    }\n\n    private getConstructorArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): NamedArgument[] {\n        const authArgs: NamedArgument[] = [];\n\n        // Check if the API uses inferred auth by looking for a token endpoint\n        if (endpoint.auth != null) {\n            if (snippet.auth != null) {\n                authArgs.push(...this.getConstructorAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n            } else {\n                this.context.errors.add({\n                    severity: Severity.Warning,\n                    message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n                });\n            }\n        }\n        const optionArgs: NamedArgument[] = [];\n        const baseUrlArgs = this.getConstructorBaseUrlArgs({\n            baseUrl: snippet.baseURL,\n            environment: snippet.environment\n        });\n        if (baseUrlArgs.length > 0) {\n            optionArgs.push(...baseUrlArgs);\n        }\n        this.context.errors.scope(Scope.Headers);\n        const headerArgs: NamedArgument[] = [];\n        if (this.context.ir.headers != null && snippet.headers != null) {\n            headerArgs.push(\n                ...this.getConstructorHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n            );\n        }\n        this.context.errors.unscope();\n\n        if (this.settings.unifiedClientOptions) {\n            // In unified mode, all auth/header args become properties inside ClientOptions\n            const allClientOptionsArgs = [\n                ...authArgs.map((arg) => ({\n                    name: upperFirst(arg.name),\n                    assignment: arg.assignment\n                })),\n                ...headerArgs.map((arg) => ({\n                    name: upperFirst(arg.name),\n                    assignment: arg.assignment\n                })),\n                ...optionArgs.map((arg) => ({\n                    name: arg.name,\n                    assignment: arg.assignment\n                }))\n            ];\n            if (allClientOptionsArgs.length === 0) {\n                return [];\n            }\n            return [\n                {\n                    name: \"clientOptions\",\n                    assignment: this.csharp.instantiateClass({\n                        classReference: this.Types.ClientOptions,\n                        arguments_: allClientOptionsArgs,\n                        multiline: true\n                    })\n                }\n            ];\n        }\n\n        if (optionArgs.length === 0) {\n            return [...authArgs, ...headerArgs];\n        }\n        return [\n            ...authArgs,\n            ...headerArgs,\n            {\n                name: \"clientOptions\",\n                assignment: this.csharp.instantiateClass({\n                    classReference: this.Types.ClientOptions,\n                    arguments_: optionArgs.map((arg) => ({\n                        name: arg.name,\n                        assignment: arg.assignment\n                    })),\n                    multiline: true\n                })\n            }\n        ];\n    }\n\n    private getConstructorBaseUrlArgs({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): NamedArgument[] {\n        const baseUrlArg = this.getBaseUrlArg({ baseUrl, environment });\n        if (is.Literal.nop(baseUrlArg)) {\n            return [];\n        }\n        return [\n            {\n                name: this.getBaseUrlOptionName(),\n                assignment: baseUrlArg\n            }\n        ];\n    }\n\n    private getBaseUrlArg({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): ast.Literal {\n        if (baseUrl != null && environment != null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Cannot specify both baseUrl and environment options\"\n            });\n            return this.csharp.Literal.nop();\n        }\n        if (baseUrl != null) {\n            if (this.context.ir.environments?.environments.type === \"multipleBaseUrls\") {\n                this.context.errors.add({\n                    severity: Severity.Critical,\n                    message: \"The C# SDK doesn't support a baseUrl when multiple URL environments are configured\"\n                });\n                return this.csharp.Literal.nop();\n            }\n            return this.csharp.Literal.string(baseUrl);\n        }\n        if (environment != null) {\n            if (this.context.isSingleEnvironmentID(environment)) {\n                const classReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n                if (classReference == null) {\n                    this.context.errors.add({\n                        severity: Severity.Warning,\n                        message: `Environment ${JSON.stringify(environment)} was not found`\n                    });\n                    return this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.reference(classReference);\n            }\n            if (this.context.isMultiEnvironmentValues(environment)) {\n                if (!this.context.validateMultiEnvironmentUrlValues(environment)) {\n                    return this.csharp.Literal.nop();\n                }\n                return this.csharp.Literal.reference(\n                    this.csharp.instantiateClass({\n                        classReference: this.Types.Environments,\n                        arguments_: Object.entries(environment).map(([key, value]) => ({\n                            name: upperFirst(camelCase(key)),\n                            assignment: this.context.dynamicLiteralMapper.convert({\n                                typeReference: {\n                                    type: \"primitive\",\n                                    value: \"STRING\"\n                                },\n                                value\n                            })\n                        })),\n                        multiline: true\n                    })\n                );\n            }\n        }\n        return this.csharp.Literal.nop();\n    }\n\n    private getConstructorAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): NamedArgument[] {\n        if (values.type !== auth.type) {\n            this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n            return [];\n        }\n\n        switch (auth.type) {\n            case \"basic\":\n                return values.type === \"basic\" ? this.getConstructorBasicAuthArg({ auth, values }) : [];\n            case \"bearer\":\n                return values.type === \"bearer\" ? this.getConstructorBearerAuthArgs({ auth, values }) : [];\n            case \"header\":\n                return values.type === \"header\" ? this.getConstructorHeaderAuthArgs({ auth, values }) : [];\n            case \"oauth\":\n                return values.type === \"oauth\" ? this.getConstructorOAuthArgs({ auth, values }) : [];\n            case \"inferred\":\n                return values.type === \"inferred\" ? this.getConstructorInferredAuthArgs({ auth, values }) : [];\n            default:\n                assertNever(auth);\n        }\n    }\n\n    private addError(message: string): void {\n        this.context.errors.add({ severity: Severity.Critical, message });\n    }\n\n    private addWarning(message: string): void {\n        this.context.errors.add({ severity: Severity.Warning, message });\n    }\n\n    private getConstructorBasicAuthArg({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BasicAuth;\n        values: FernIr.dynamic.BasicAuthValues;\n    }): NamedArgument[] {\n        return [\n            {\n                name: this.context.getParameterName(auth.username),\n                assignment: this.csharp.Literal.string(values.username)\n            },\n            {\n                name: this.context.getParameterName(auth.password),\n                assignment: this.csharp.Literal.string(values.password)\n            }\n        ];\n    }\n\n    private getConstructorBearerAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BearerAuth;\n        values: FernIr.dynamic.BearerAuthValues;\n    }): NamedArgument[] {\n        return [\n            {\n                name: this.context.getParameterName(auth.token),\n                assignment: this.csharp.Literal.string(values.token)\n            }\n        ];\n    }\n\n    private getConstructorHeaderAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.HeaderAuth;\n        values: FernIr.dynamic.HeaderAuthValues;\n    }): NamedArgument[] {\n        return [\n            {\n                name: this.context.getParameterName(auth.header.name.name),\n                assignment: this.context.dynamicLiteralMapper.convert({\n                    typeReference: auth.header.typeReference,\n                    value: values.value,\n                    fallbackToDefault: auth.header.name.wireValue\n                })\n            }\n        ];\n    }\n\n    private getConstructorOAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.OAuth;\n        values: FernIr.dynamic.OAuthValues;\n    }): NamedArgument[] {\n        return [\n            {\n                name: this.context.getParameterName(auth.clientId),\n                assignment: this.csharp.Literal.string(values.clientId)\n            },\n            {\n                name: this.context.getParameterName(auth.clientSecret),\n                assignment: this.csharp.Literal.string(values.clientSecret)\n            }\n        ];\n    }\n\n    private getConstructorInferredAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.InferredAuth;\n        values: FernIr.dynamic.InferredAuthValues;\n    }): NamedArgument[] {\n        const args: NamedArgument[] = [];\n\n        // Use parameters from the IR\n        if (auth.parameters != null) {\n            for (const param of auth.parameters) {\n                const wireValue = param.name.wireValue;\n                const value = values.values?.[wireValue];\n\n                args.push({\n                    name: this.context.getParameterName(param.name.name),\n                    assignment: this.context.dynamicLiteralMapper.convert({\n                        typeReference: param.typeReference,\n                        value: value,\n                        fallbackToDefault: wireValue\n                    })\n                });\n            }\n        } else {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message:\n                    \"Inferred auth parameters are not defined in the IR. Please ensure you're using IR version 62.3.0 or later.\"\n            });\n        }\n\n        return args;\n    }\n\n    private getConstructorHeaderArgs({\n        headers,\n        values\n    }: {\n        headers: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): NamedArgument[] {\n        const args: NamedArgument[] = [];\n        for (const header of headers) {\n            const value = values[header.name.wireValue];\n            const arg = this.getConstructorHeaderArg({ header, value });\n            if (arg != null) {\n                args.push({\n                    name: this.context.getParameterName(header.name.name),\n                    assignment: arg\n                });\n            }\n        }\n        return args;\n    }\n\n    private getConstructorHeaderArg({\n        header,\n        value\n    }: {\n        header: FernIr.dynamic.NamedParameter;\n        value: unknown;\n    }): ast.Literal | undefined {\n        const typeLiteral = this.context.dynamicLiteralMapper.convert({\n            typeReference: header.typeReference,\n            value,\n            fallbackToDefault: header.name.wireValue\n        });\n        if (is.Literal.nop(typeLiteral)) {\n            // Literal header values (e.g. \"X-API-Version\") should not be included in the\n            // client constructor.\n            return undefined;\n        }\n        return typeLiteral;\n    }\n\n    private getMethodArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ast.Literal[] {\n        switch (endpoint.request.type) {\n            case \"inlined\":\n                return this.getMethodArgsForInlinedRequest({ request: endpoint.request, snippet });\n            case \"body\":\n                return this.getMethodArgsForBodyRequest({ request: endpoint.request, snippet });\n            default:\n                assertNever(endpoint.request);\n        }\n    }\n\n    private getMethodArgsForInlinedRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ast.Literal[] {\n        const args: ast.Literal[] = [];\n\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameterFields: ast.ConstructorField[] = [];\n        const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n        if (pathParameters.length > 0) {\n            pathParameterFields.push(...this.getPathParameters({ namedParameters: pathParameters, snippet }));\n        }\n        this.context.errors.unscope();\n\n        // TODO: Add support for file properties.\n        this.context.errors.scope(Scope.RequestBody);\n        const filePropertyInfo = this.getFilePropertyInfo({ request, snippet });\n        this.context.errors.unscope();\n\n        if (\n            !this.context.includePathParametersInWrappedRequest({\n                request,\n                inlinePathParameters: this.settings.shouldInlinePathParameters\n            })\n        ) {\n            args.push(...pathParameterFields.map((field) => field.value));\n        }\n        // For now, the C# SDK always requires the inlined request parameter.\n        args.push(\n            this.getInlinedRequestArg({\n                request,\n                snippet,\n                pathParameterFields: this.context.includePathParametersInWrappedRequest({\n                    request,\n                    inlinePathParameters: this.settings.shouldInlinePathParameters\n                })\n                    ? pathParameterFields\n                    : [],\n                filePropertyInfo\n            })\n        );\n        return args;\n    }\n\n    private getFilePropertyInfo({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): FilePropertyInfo {\n        if (request.body == null || !this.context.isFileUploadRequestBody(request.body)) {\n            return {\n                fileFields: [],\n                bodyPropertyFields: []\n            };\n        }\n        return this.context.filePropertyMapper.getFilePropertyInfo({\n            body: request.body,\n            value: snippet.requestBody\n        });\n    }\n\n    private getInlinedRequestArg({\n        request,\n        snippet,\n        pathParameterFields,\n        filePropertyInfo\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        pathParameterFields: ast.ConstructorField[];\n        filePropertyInfo: FilePropertyInfo;\n    }): ast.Literal {\n        this.context.errors.scope(Scope.QueryParameters);\n        const queryParameters = this.context.associateQueryParametersByWireValue({\n            parameters: request.queryParameters ?? [],\n            values: snippet.queryParameters ?? {}\n        });\n        const queryParameterFields = queryParameters.map((queryParameter) => ({\n            name: this.context.getPropertyName(queryParameter.name.name),\n            value: this.context.dynamicLiteralMapper.convert(queryParameter)\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.Headers);\n        const headers = this.context.associateByWireValue({\n            parameters: request.headers ?? [],\n            values: snippet.headers ?? {}\n        });\n        const headerFields = headers.map((header) => ({\n            name: this.context.getPropertyName(header.name.name),\n            value: this.context.dynamicLiteralMapper.convert({\n                ...header,\n                fallbackToDefault: header.name.wireValue\n            })\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const requestBodyFields =\n            request.body != null\n                ? this.getInlinedRequestBodyConstructorFields({\n                      body: request.body,\n                      value: snippet.requestBody,\n                      filePropertyInfo\n                  })\n                : [];\n        this.context.errors.unscope();\n\n        return this.csharp.Literal.class_({\n            reference: this.csharp.classReference({\n                origin: request.declaration,\n                namespace: this.context.getNamespace(request.declaration.fernFilepath)\n            }),\n            fields: [...pathParameterFields, ...queryParameterFields, ...headerFields, ...requestBodyFields]\n        });\n    }\n\n    private getInlinedRequestBodyConstructorFields({\n        body,\n        value,\n        filePropertyInfo\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        value: unknown;\n        filePropertyInfo: FilePropertyInfo;\n    }): ast.ConstructorField[] {\n        switch (body.type) {\n            case \"properties\":\n                return this.getInlinedRequestBodyPropertyConstructorFields({ parameters: body.value, value });\n            case \"referenced\":\n                return [this.getReferencedRequestBodyPropertyConstructorField({ body, value })];\n            case \"fileUpload\":\n                return this.getFileUploadRequestBodyConstructorFields({ filePropertyInfo });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getInlinedRequestBodyPropertyConstructorFields({\n        parameters,\n        value\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        value: unknown;\n    }): ast.ConstructorField[] {\n        const fields: ast.ConstructorField[] = [];\n\n        const bodyProperties = this.context.associateByWireValue({\n            parameters,\n            values: this.context.getRecord(value) ?? {}\n        });\n        for (const parameter of bodyProperties) {\n            fields.push({\n                name: this.context.getPropertyName(parameter.name.name),\n                value: this.context.dynamicLiteralMapper.convert({\n                    ...parameter,\n                    fallbackToDefault: parameter.name.wireValue\n                })\n            });\n        }\n\n        return fields;\n    }\n\n    private getFileUploadRequestBodyConstructorFields({\n        filePropertyInfo\n    }: {\n        filePropertyInfo: FilePropertyInfo;\n    }): ast.ConstructorField[] {\n        return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n    }\n\n    private getReferencedRequestBodyPropertyConstructorField({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBody;\n        value: unknown;\n    }): ast.ConstructorField {\n        return {\n            name: this.context.getPropertyName(body.bodyKey),\n            value: this.getReferencedRequestBodyPropertyLiteral({ body: body.bodyType, value })\n        };\n    }\n\n    private getReferencedRequestBodyPropertyLiteral({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): ast.Literal {\n        switch (body.type) {\n            case \"bytes\":\n                return this.getBytesBodyRequestArg({ value });\n            case \"typeReference\":\n                return this.context.dynamicLiteralMapper.convert({\n                    typeReference: body.value,\n                    value,\n                    fallbackToDefault: JSON.stringify(body.value)\n                });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getMethodArgsForBodyRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.BodyRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ast.Literal[] {\n        const args: ast.Literal[] = [];\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n        if (pathParameters.length > 0) {\n            args.push(\n                ...this.getPathParameters({ namedParameters: pathParameters, snippet }).map((field) => field.value)\n            );\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        if (request.body != null) {\n            args.push(this.getBodyRequestArg({ body: request.body, value: snippet.requestBody }));\n        }\n        this.context.errors.unscope();\n\n        return args;\n    }\n\n    private getBodyRequestArg({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): ast.Literal {\n        switch (body.type) {\n            case \"bytes\": {\n                return this.getBytesBodyRequestArg({ value });\n            }\n            case \"typeReference\":\n                // if the body type is optional, but not provided, then we should use null\n                // (the generated body arg parameter is currently required)\n                if (body.value.type === \"optional\" && value == undefined) {\n                    return this.csharp.Literal.null();\n                }\n                return this.context.dynamicLiteralMapper.convert({\n                    typeReference: body.value,\n                    value,\n                    fallbackToDefault: JSON.stringify(body.value)\n                });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getBytesBodyRequestArg({ value }: { value: unknown }): ast.Literal {\n        let str = this.context.getValueAsString({ value });\n        if (str == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"The bytes request body must be provided in string format\"\n            });\n\n            // if there is no value, then let's just use a random string\n            str = \"[bytes]\";\n        }\n        return this.csharp.Literal.reference(this.context.getMemoryStreamForString(str));\n    }\n\n    private getRootClientConstructorInvocation(arguments_: NamedArgument[]): ast.ClassInstantiation {\n        return this.csharp.instantiateClass({\n            classReference: this.Types.RootClientForSnippets,\n            arguments_,\n            forceUseConstructor: true,\n            multiline: true\n        });\n    }\n\n    private getPathParameters({\n        namedParameters,\n        snippet\n    }: {\n        namedParameters: FernIr.dynamic.NamedParameter[];\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ast.ConstructorField[] {\n        const args: ast.ConstructorField[] = [];\n        const pathParameters = this.context.associateByWireValueOrDefault({\n            parameters: namedParameters,\n            values: snippet.pathParameters ?? {}\n        });\n        for (const parameter of pathParameters) {\n            args.push({\n                name: this.context.getPropertyName(parameter.name.name),\n                value: this.context.dynamicLiteralMapper.convert({\n                    ...parameter,\n                    fallbackToDefault: parameter.name.wireValue\n                })\n            });\n        }\n        return args;\n    }\n\n    private getMethod({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n        if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n            return `${endpoint.declaration.fernFilepath.allParts\n                .map((val) => this.context.getClassName(val))\n                .join(\".\")}.${this.context.getMethodName(endpoint.declaration.name)}`;\n        }\n\n        return this.context.getMethodName(endpoint.declaration.name);\n    }\n\n    private getBaseUrlOptionName(): string {\n        if (this.context.ir.environments?.environments.type === \"multipleBaseUrls\") {\n            return \"Environment\";\n        }\n        return \"BaseUrl\";\n    }\n\n    private getStyle(options: Options): Style {\n        return options.style ?? this.context.options.style ?? Style.Full;\n    }\n\n    private getConfig(options: Options): Config {\n        return options.config ?? this.context.options.config ?? {};\n    }\n}\n","export const __dirname = \"/\";\n","function unimplemented(name) {\r\n  throw new Error('Node.js process ' + name + ' is not supported by JSPM core outside of Node.js');\r\n}\r\n\r\nvar queue = [];\r\nvar draining = false;\r\nvar currentQueue;\r\nvar queueIndex = -1;\r\n\r\nfunction cleanUpNextTick() {\r\n  if (!draining || !currentQueue)\r\n    return;\r\n  draining = false;\r\n  if (currentQueue.length) {\r\n    queue = currentQueue.concat(queue);\r\n  }\r\n  else {\r\n    queueIndex = -1;\r\n  }\r\n  if (queue.length)\r\n    drainQueue();\r\n}\r\n\r\nfunction drainQueue() {\r\n  if (draining)\r\n    return;\r\n  var timeout = setTimeout(cleanUpNextTick, 0);\r\n  draining = true;\r\n\r\n  var len = queue.length;\r\n  while(len) {\r\n    currentQueue = queue;\r\n    queue = [];\r\n    while (++queueIndex < len) {\r\n      if (currentQueue)\r\n        currentQueue[queueIndex].run();\r\n    }\r\n    queueIndex = -1;\r\n    len = queue.length;\r\n  }\r\n  currentQueue = null;\r\n  draining = false;\r\n  clearTimeout(timeout);\r\n}\r\n\r\nfunction nextTick (fun) {\r\n  var args = new Array(arguments.length - 1);\r\n  if (arguments.length > 1) {\r\n    for (var i = 1; i < arguments.length; i++)\r\n      args[i - 1] = arguments[i];\r\n  }\r\n  queue.push(new Item(fun, args));\r\n  if (queue.length === 1 && !draining)\r\n    setTimeout(drainQueue, 0);\r\n}\r\n// v8 likes predictible objects\r\nfunction Item(fun, array) {\r\n  this.fun = fun;\r\n  this.array = array;\r\n}\r\nItem.prototype.run = function () {\r\n  this.fun.apply(null, this.array);\r\n};\r\n\r\nvar title = 'browser';\r\nvar arch = 'x64';\r\nvar platform = 'browser';\r\nvar env = {\r\n  PATH: '/usr/bin',\r\n  LANG: typeof navigator !== 'undefined' ? navigator.language + '.UTF-8' : undefined,\r\n  PWD: '/',\r\n  HOME: '/home',\r\n  TMP: '/tmp',\r\n};\r\nvar argv = ['/usr/bin/node'];\r\nvar execArgv = [];\r\nvar version = 'v16.8.0';\r\nvar versions = {};\r\n\r\nvar emitWarning = function(message, type) {\r\n  console.warn((type ? (type + ': ') : '') + message);\r\n};\r\n\r\nvar binding = function(name) { unimplemented('binding'); };\r\n\r\nvar umask = function(mask) { return 0; };\r\n\r\nvar cwd = function() { return '/'; };\r\nvar chdir = function(dir) {};\r\n\r\nvar release = {\r\n  name: 'node',\r\n  sourceUrl: '',\r\n  headersUrl: '',\r\n  libUrl: '',\r\n};\r\n\r\nfunction noop() {}\r\n\r\nvar browser = true;\r\nvar _rawDebug = noop;\r\nvar moduleLoadList = [];\r\nfunction _linkedBinding(name) { unimplemented('_linkedBinding'); }\r\nvar domain = {};\r\nvar _exiting = false;\r\nvar config = {};\r\nfunction dlopen(name) { unimplemented('dlopen'); }\r\nfunction _getActiveRequests() { return []; }\r\nfunction _getActiveHandles() { return []; }\r\nvar reallyExit = noop;\r\nvar _kill = noop;\r\nvar cpuUsage = function() { return {}; };\r\nvar resourceUsage = cpuUsage;\r\nvar memoryUsage = cpuUsage;\r\nvar kill = noop;\r\nvar exit = noop;\r\nvar openStdin = noop;\r\nvar allowedNodeEnvironmentFlags = {};\r\nfunction assert(condition, message) {\r\n  if (!condition) throw new Error(message || 'assertion error');\r\n}\r\nvar features = {\r\n  inspector: false,\r\n  debug: false,\r\n  uv: false,\r\n  ipv6: false,\r\n  tls_alpn: false,\r\n  tls_sni: false,\r\n  tls_ocsp: false,\r\n  tls: false,\r\n  cached_builtins: true,\r\n};\r\nvar _fatalExceptions = noop;\r\nvar setUncaughtExceptionCaptureCallback = noop;\r\nfunction hasUncaughtExceptionCaptureCallback() { return false; }var _tickCallback = noop;\r\nvar _debugProcess = noop;\r\nvar _debugEnd = noop;\r\nvar _startProfilerIdleNotifier = noop;\r\nvar _stopProfilerIdleNotifier = noop;\r\nvar stdout = undefined;\r\nvar stderr = undefined;\r\nvar stdin = undefined;\r\nvar abort = noop;\r\nvar pid = 2;\r\nvar ppid = 1;\r\nvar execPath = '/bin/usr/node';\r\nvar debugPort = 9229;\r\nvar argv0 = 'node';\r\nvar _preload_modules = [];\r\nvar setSourceMapsEnabled = noop;\r\n\r\nvar _performance = {\r\n  now: typeof performance !== 'undefined' ? performance.now.bind(performance) : undefined,\r\n  timing: typeof performance !== 'undefined' ? performance.timing : undefined,\r\n};\r\nif (_performance.now === undefined) {\r\n  var nowOffset = Date.now();\r\n\r\n  if (_performance.timing && _performance.timing.navigationStart) {\r\n    nowOffset = _performance.timing.navigationStart;\r\n  }\r\n  _performance.now = () => Date.now() - nowOffset;\r\n}\r\n\r\nfunction uptime() {\r\n  return _performance.now() / 1000;\r\n}\r\n\r\nvar nanoPerSec = 1000000000;\r\nfunction hrtime(previousTimestamp) {\r\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\r\n  var clocktime = _performance.now() * 1e-3;\r\n  var seconds = Math.floor(clocktime) + baseNow;\r\n  var nanoseconds = Math.floor((clocktime % 1) * 1e9);\r\n  if (previousTimestamp) {\r\n    seconds = seconds - previousTimestamp[0];\r\n    nanoseconds = nanoseconds - previousTimestamp[1];\r\n    if (nanoseconds < 0) {\r\n      seconds--;\r\n      nanoseconds += nanoPerSec;\r\n    }\r\n  }\r\n  return [seconds, nanoseconds];\r\n}hrtime.bigint = function(time) {\r\n  var diff = hrtime(time);\r\n  if (typeof BigInt === 'undefined') {\r\n    return diff[0] * nanoPerSec + diff[1];\r\n  }\r\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\r\n};\r\n\r\nvar _maxListeners = 10;\r\nvar _events = {};\r\nvar _eventsCount = 0;\r\nfunction on () { return process }var addListener = on;\r\nvar once = on;\r\nvar off = on;\r\nvar removeListener = on;\r\nvar removeAllListeners = on;\r\nvar emit = noop;\r\nvar prependListener = on;\r\nvar prependOnceListener = on;\r\nfunction listeners (name) { return []; }\r\nvar process = {\r\n  version,\r\n  versions,\r\n  arch,\r\n  platform,\r\n  browser,\r\n  release,\r\n  _rawDebug,\r\n  moduleLoadList,\r\n  binding,\r\n  _linkedBinding,\r\n  _events,\r\n  _eventsCount,\r\n  _maxListeners,\r\n  on,\r\n  addListener,\r\n  once,\r\n  off,\r\n  removeListener,\r\n  removeAllListeners,\r\n  emit,\r\n  prependListener,\r\n  prependOnceListener,\r\n  listeners,\r\n  domain,\r\n  _exiting,\r\n  config,\r\n  dlopen,\r\n  uptime,\r\n  _getActiveRequests,\r\n  _getActiveHandles,\r\n  reallyExit,\r\n  _kill,\r\n  cpuUsage,\r\n  resourceUsage,\r\n  memoryUsage,\r\n  kill,\r\n  exit,\r\n  openStdin,\r\n  allowedNodeEnvironmentFlags,\r\n  assert,\r\n  features,\r\n  _fatalExceptions,\r\n  setUncaughtExceptionCaptureCallback,\r\n  hasUncaughtExceptionCaptureCallback,\r\n  emitWarning,\r\n  nextTick,\r\n  _tickCallback,\r\n  _debugProcess,\r\n  _debugEnd,\r\n  _startProfilerIdleNotifier,\r\n  _stopProfilerIdleNotifier,\r\n  stdout,\r\n  stdin,\r\n  stderr,\r\n  abort,\r\n  umask,\r\n  chdir,\r\n  cwd,\r\n  env,\r\n  title,\r\n  argv,\r\n  execArgv,\r\n  pid,\r\n  ppid,\r\n  execPath,\r\n  debugPort,\r\n  hrtime,\r\n  argv0,\r\n  _preload_modules,\r\n  setSourceMapsEnabled,\r\n};\n\nexport { _debugEnd, _debugProcess, _events, _eventsCount, _exiting, _fatalExceptions, _getActiveHandles, _getActiveRequests, _kill, _linkedBinding, _maxListeners, _preload_modules, _rawDebug, _startProfilerIdleNotifier, _stopProfilerIdleNotifier, _tickCallback, abort, addListener, allowedNodeEnvironmentFlags, arch, argv, argv0, assert, binding, browser, chdir, config, cpuUsage, cwd, debugPort, process as default, dlopen, domain, emit, emitWarning, env, execArgv, execPath, exit, features, hasUncaughtExceptionCaptureCallback, hrtime, kill, listeners, memoryUsage, moduleLoadList, nextTick, off, on, once, openStdin, pid, platform, ppid, prependListener, prependOnceListener, reallyExit, release, removeAllListeners, removeListener, resourceUsage, setSourceMapsEnabled, setUncaughtExceptionCaptureCallback, stderr, stdin, stdout, title, umask, uptime, version, versions };\n","export * as process from \"process\";\n","var exports$2 = {},\n  _dewExec$2 = false;\nfunction dew$2() {\n  if (_dewExec$2) return exports$2;\n  _dewExec$2 = true;\n  exports$2.byteLength = byteLength;\n  exports$2.toByteArray = toByteArray;\n  exports$2.fromByteArray = fromByteArray;\n  var lookup = [];\n  var revLookup = [];\n  var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i = 0, len = code.length; i < len; ++i) {\n    lookup[i] = code[i];\n    revLookup[code.charCodeAt(i)] = i;\n  }\n\n  // Support decoding URL-safe base64 strings, as Node.js does.\n  // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n  function getLens(b64) {\n    var len = b64.length;\n    if (len % 4 > 0) {\n      throw new Error(\"Invalid string. Length must be a multiple of 4\");\n    }\n\n    // Trim off extra bytes after placeholder bytes are found\n    // See: https://github.com/beatgammit/base64-js/issues/42\n    var validLen = b64.indexOf(\"=\");\n    if (validLen === -1) validLen = len;\n    var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n    return [validLen, placeHoldersLen];\n  }\n\n  // base64 is 4/3 + up to two characters of the original data\n  function byteLength(b64) {\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function _byteLength(b64, validLen, placeHoldersLen) {\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function toByteArray(b64) {\n    var tmp;\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n    var curByte = 0;\n\n    // if there are placeholders, only get up to the last complete 4 chars\n    var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n    var i;\n    for (i = 0; i < len; i += 4) {\n      tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n      arr[curByte++] = tmp >> 16 & 255;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 2) {\n      tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 1) {\n      tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    return arr;\n  }\n  function tripletToBase64(num) {\n    return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n  }\n  function encodeChunk(uint8, start, end) {\n    var tmp;\n    var output = [];\n    for (var i = start; i < end; i += 3) {\n      tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n      output.push(tripletToBase64(tmp));\n    }\n    return output.join(\"\");\n  }\n  function fromByteArray(uint8) {\n    var tmp;\n    var len = uint8.length;\n    var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n    var parts = [];\n    var maxChunkLength = 16383; // must be multiple of 3\n\n    // go through the array every three bytes, we'll deal with trailing stuff later\n    for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n      parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n    }\n\n    // pad the end with zeros, but make sure to not forget the extra bytes\n    if (extraBytes === 1) {\n      tmp = uint8[len - 1];\n      parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n    } else if (extraBytes === 2) {\n      tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n      parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n    }\n    return parts.join(\"\");\n  }\n  return exports$2;\n}\n\nvar exports$1 = {},\n  _dewExec$1 = false;\nfunction dew$1() {\n  if (_dewExec$1) return exports$1;\n  _dewExec$1 = true;\n  /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n  exports$1.read = function (buffer, offset, isLE, mLen, nBytes) {\n    var e, m;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i = isLE ? nBytes - 1 : 0;\n    var d = isLE ? -1 : 1;\n    var s = buffer[offset + i];\n    i += d;\n    e = s & (1 << -nBits) - 1;\n    s >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    m = e & (1 << -nBits) - 1;\n    e >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    if (e === 0) {\n      e = 1 - eBias;\n    } else if (e === eMax) {\n      return m ? NaN : (s ? -1 : 1) * Infinity;\n    } else {\n      m = m + Math.pow(2, mLen);\n      e = e - eBias;\n    }\n    return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n  };\n  exports$1.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n    var e, m, c;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n    var i = isLE ? 0 : nBytes - 1;\n    var d = isLE ? 1 : -1;\n    var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n      m = isNaN(value) ? 1 : 0;\n      e = eMax;\n    } else {\n      e = Math.floor(Math.log(value) / Math.LN2);\n      if (value * (c = Math.pow(2, -e)) < 1) {\n        e--;\n        c *= 2;\n      }\n      if (e + eBias >= 1) {\n        value += rt / c;\n      } else {\n        value += rt * Math.pow(2, 1 - eBias);\n      }\n      if (value * c >= 2) {\n        e++;\n        c /= 2;\n      }\n      if (e + eBias >= eMax) {\n        m = 0;\n        e = eMax;\n      } else if (e + eBias >= 1) {\n        m = (value * c - 1) * Math.pow(2, mLen);\n        e = e + eBias;\n      } else {\n        m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n        e = 0;\n      }\n    }\n    for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n    e = e << mLen | m;\n    eLen += mLen;\n    for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n    buffer[offset + i - d] |= s * 128;\n  };\n  return exports$1;\n}\n\nvar exports = {},\n  _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports;\n  _dewExec = true;\n  const base64 = dew$2();\n  const ieee754 = dew$1();\n  const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" // eslint-disable-line dot-notation\n  ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n  : null;\n  exports.Buffer = Buffer;\n  exports.SlowBuffer = SlowBuffer;\n  exports.INSPECT_MAX_BYTES = 50;\n  const K_MAX_LENGTH = 2147483647;\n  exports.kMaxLength = K_MAX_LENGTH;\n\n  /**\n   * If `Buffer.TYPED_ARRAY_SUPPORT`:\n   *   === true    Use Uint8Array implementation (fastest)\n   *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n   *               implementation (most compatible, even IE6)\n   *\n   * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n   * Opera 11.6+, iOS 4.2+.\n   *\n   * We report that the browser does not support typed arrays if the are not subclassable\n   * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n   * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n   * for __proto__ and has a buggy typed array implementation.\n   */\n  Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n  if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n  }\n  function typedArraySupport() {\n    // Can typed array instances can be augmented?\n    try {\n      const arr = new Uint8Array(1);\n      const proto = {\n        foo: function () {\n          return 42;\n        }\n      };\n      Object.setPrototypeOf(proto, Uint8Array.prototype);\n      Object.setPrototypeOf(arr, proto);\n      return arr.foo() === 42;\n    } catch (e) {\n      return false;\n    }\n  }\n  Object.defineProperty(Buffer.prototype, \"parent\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.buffer;\n    }\n  });\n  Object.defineProperty(Buffer.prototype, \"offset\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.byteOffset;\n    }\n  });\n  function createBuffer(length) {\n    if (length > K_MAX_LENGTH) {\n      throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n    // Return an augmented `Uint8Array` instance\n    const buf = new Uint8Array(length);\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n\n  /**\n   * The Buffer constructor returns instances of `Uint8Array` that have their\n   * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n   * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n   * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n   * returns a single octet.\n   *\n   * The `Uint8Array` prototype remains unmodified.\n   */\n\n  function Buffer(arg, encodingOrOffset, length) {\n    // Common case.\n    if (typeof arg === \"number\") {\n      if (typeof encodingOrOffset === \"string\") {\n        throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n      }\n      return allocUnsafe(arg);\n    }\n    return from(arg, encodingOrOffset, length);\n  }\n  Buffer.poolSize = 8192; // not used by this implementation\n\n  function from(value, encodingOrOffset, length) {\n    if (typeof value === \"string\") {\n      return fromString(value, encodingOrOffset);\n    }\n    if (ArrayBuffer.isView(value)) {\n      return fromArrayView(value);\n    }\n    if (value == null) {\n      throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n    }\n    if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof value === \"number\") {\n      throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n    }\n    const valueOf = value.valueOf && value.valueOf();\n    if (valueOf != null && valueOf !== value) {\n      return Buffer.from(valueOf, encodingOrOffset, length);\n    }\n    const b = fromObject(value);\n    if (b) return b;\n    if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n      return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n    }\n    throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n  }\n\n  /**\n   * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n   * if value is a number.\n   * Buffer.from(str[, encoding])\n   * Buffer.from(array)\n   * Buffer.from(buffer)\n   * Buffer.from(arrayBuffer[, byteOffset[, length]])\n   **/\n  Buffer.from = function (value, encodingOrOffset, length) {\n    return from(value, encodingOrOffset, length);\n  };\n\n  // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n  // https://github.com/feross/buffer/pull/148\n  Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n  Object.setPrototypeOf(Buffer, Uint8Array);\n  function assertSize(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n    } else if (size < 0) {\n      throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n  }\n  function alloc(size, fill, encoding) {\n    assertSize(size);\n    if (size <= 0) {\n      return createBuffer(size);\n    }\n    if (fill !== undefined) {\n      // Only pay attention to encoding if it's a string. This\n      // prevents accidentally sending in a number that would\n      // be interpreted as a start offset.\n      return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n    }\n    return createBuffer(size);\n  }\n\n  /**\n   * Creates a new filled Buffer instance.\n   * alloc(size[, fill[, encoding]])\n   **/\n  Buffer.alloc = function (size, fill, encoding) {\n    return alloc(size, fill, encoding);\n  };\n  function allocUnsafe(size) {\n    assertSize(size);\n    return createBuffer(size < 0 ? 0 : checked(size) | 0);\n  }\n\n  /**\n   * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n   * */\n  Buffer.allocUnsafe = function (size) {\n    return allocUnsafe(size);\n  };\n  /**\n   * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n   */\n  Buffer.allocUnsafeSlow = function (size) {\n    return allocUnsafe(size);\n  };\n  function fromString(string, encoding) {\n    if (typeof encoding !== \"string\" || encoding === \"\") {\n      encoding = \"utf8\";\n    }\n    if (!Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n    const length = byteLength(string, encoding) | 0;\n    let buf = createBuffer(length);\n    const actual = buf.write(string, encoding);\n    if (actual !== length) {\n      // Writing a hex string, for example, that contains invalid characters will\n      // cause everything after the first invalid character to be ignored. (e.g.\n      // 'abxxcd' will be treated as 'ab')\n      buf = buf.slice(0, actual);\n    }\n    return buf;\n  }\n  function fromArrayLike(array) {\n    const length = array.length < 0 ? 0 : checked(array.length) | 0;\n    const buf = createBuffer(length);\n    for (let i = 0; i < length; i += 1) {\n      buf[i] = array[i] & 255;\n    }\n    return buf;\n  }\n  function fromArrayView(arrayView) {\n    if (isInstance(arrayView, Uint8Array)) {\n      const copy = new Uint8Array(arrayView);\n      return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n    }\n    return fromArrayLike(arrayView);\n  }\n  function fromArrayBuffer(array, byteOffset, length) {\n    if (byteOffset < 0 || array.byteLength < byteOffset) {\n      throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n    }\n    if (array.byteLength < byteOffset + (length || 0)) {\n      throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n    }\n    let buf;\n    if (byteOffset === undefined && length === undefined) {\n      buf = new Uint8Array(array);\n    } else if (length === undefined) {\n      buf = new Uint8Array(array, byteOffset);\n    } else {\n      buf = new Uint8Array(array, byteOffset, length);\n    }\n\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function fromObject(obj) {\n    if (Buffer.isBuffer(obj)) {\n      const len = checked(obj.length) | 0;\n      const buf = createBuffer(len);\n      if (buf.length === 0) {\n        return buf;\n      }\n      obj.copy(buf, 0, 0, len);\n      return buf;\n    }\n    if (obj.length !== undefined) {\n      if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n        return createBuffer(0);\n      }\n      return fromArrayLike(obj);\n    }\n    if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n      return fromArrayLike(obj.data);\n    }\n  }\n  function checked(length) {\n    // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n    // length is NaN (which is otherwise coerced to zero.)\n    if (length >= K_MAX_LENGTH) {\n      throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n    }\n    return length | 0;\n  }\n  function SlowBuffer(length) {\n    if (+length != length) {\n      // eslint-disable-line eqeqeq\n      length = 0;\n    }\n    return Buffer.alloc(+length);\n  }\n  Buffer.isBuffer = function isBuffer(b) {\n    return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n  };\n  Buffer.compare = function compare(a, b) {\n    if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n    if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n    if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n      throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n    }\n    if (a === b) return 0;\n    let x = a.length;\n    let y = b.length;\n    for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n      if (a[i] !== b[i]) {\n        x = a[i];\n        y = b[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n  Buffer.isEncoding = function isEncoding(encoding) {\n    switch (String(encoding).toLowerCase()) {\n      case \"hex\":\n      case \"utf8\":\n      case \"utf-8\":\n      case \"ascii\":\n      case \"latin1\":\n      case \"binary\":\n      case \"base64\":\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return true;\n      default:\n        return false;\n    }\n  };\n  Buffer.concat = function concat(list, length) {\n    if (!Array.isArray(list)) {\n      throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n    }\n    if (list.length === 0) {\n      return Buffer.alloc(0);\n    }\n    let i;\n    if (length === undefined) {\n      length = 0;\n      for (i = 0; i < list.length; ++i) {\n        length += list[i].length;\n      }\n    }\n    const buffer = Buffer.allocUnsafe(length);\n    let pos = 0;\n    for (i = 0; i < list.length; ++i) {\n      let buf = list[i];\n      if (isInstance(buf, Uint8Array)) {\n        if (pos + buf.length > buffer.length) {\n          if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n          buf.copy(buffer, pos);\n        } else {\n          Uint8Array.prototype.set.call(buffer, buf, pos);\n        }\n      } else if (!Buffer.isBuffer(buf)) {\n        throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n      } else {\n        buf.copy(buffer, pos);\n      }\n      pos += buf.length;\n    }\n    return buffer;\n  };\n  function byteLength(string, encoding) {\n    if (Buffer.isBuffer(string)) {\n      return string.length;\n    }\n    if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n      return string.byteLength;\n    }\n    if (typeof string !== \"string\") {\n      throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n    }\n    const len = string.length;\n    const mustMatch = arguments.length > 2 && arguments[2] === true;\n    if (!mustMatch && len === 0) return 0;\n\n    // Use a for loop to avoid recursion\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return len;\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8ToBytes(string).length;\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return len * 2;\n        case \"hex\":\n          return len >>> 1;\n        case \"base64\":\n          return base64ToBytes(string).length;\n        default:\n          if (loweredCase) {\n            return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n          }\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.byteLength = byteLength;\n  function slowToString(encoding, start, end) {\n    let loweredCase = false;\n\n    // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n    // property of a typed array.\n\n    // This behaves neither like String nor Uint8Array in that we set start/end\n    // to their upper/lower bounds if the value passed is out of range.\n    // undefined is handled specially as per ECMA-262 6th Edition,\n    // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n    if (start === undefined || start < 0) {\n      start = 0;\n    }\n    // Return early if start > this.length. Done here to prevent potential uint32\n    // coercion fail below.\n    if (start > this.length) {\n      return \"\";\n    }\n    if (end === undefined || end > this.length) {\n      end = this.length;\n    }\n    if (end <= 0) {\n      return \"\";\n    }\n\n    // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n    end >>>= 0;\n    start >>>= 0;\n    if (end <= start) {\n      return \"\";\n    }\n    if (!encoding) encoding = \"utf8\";\n    while (true) {\n      switch (encoding) {\n        case \"hex\":\n          return hexSlice(this, start, end);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Slice(this, start, end);\n        case \"ascii\":\n          return asciiSlice(this, start, end);\n        case \"latin1\":\n        case \"binary\":\n          return latin1Slice(this, start, end);\n        case \"base64\":\n          return base64Slice(this, start, end);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return utf16leSlice(this, start, end);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (encoding + \"\").toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n\n  // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n  // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n  // reliably in a browserify context because there could be multiple different\n  // copies of the 'buffer' package in use. This method works even for Buffer\n  // instances that were created from another copy of the `buffer` package.\n  // See: https://github.com/feross/buffer/issues/154\n  Buffer.prototype._isBuffer = true;\n  function swap(b, n, m) {\n    const i = b[n];\n    b[n] = b[m];\n    b[m] = i;\n  }\n  Buffer.prototype.swap16 = function swap16() {\n    const len = this.length;\n    if (len % 2 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n    }\n    for (let i = 0; i < len; i += 2) {\n      swap(this, i, i + 1);\n    }\n    return this;\n  };\n  Buffer.prototype.swap32 = function swap32() {\n    const len = this.length;\n    if (len % 4 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n    }\n    for (let i = 0; i < len; i += 4) {\n      swap(this, i, i + 3);\n      swap(this, i + 1, i + 2);\n    }\n    return this;\n  };\n  Buffer.prototype.swap64 = function swap64() {\n    const len = this.length;\n    if (len % 8 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n    }\n    for (let i = 0; i < len; i += 8) {\n      swap(this, i, i + 7);\n      swap(this, i + 1, i + 6);\n      swap(this, i + 2, i + 5);\n      swap(this, i + 3, i + 4);\n    }\n    return this;\n  };\n  Buffer.prototype.toString = function toString() {\n    const length = this.length;\n    if (length === 0) return \"\";\n    if (arguments.length === 0) return utf8Slice(this, 0, length);\n    return slowToString.apply(this, arguments);\n  };\n  Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n  Buffer.prototype.equals = function equals(b) {\n    if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n    if (this === b) return true;\n    return Buffer.compare(this, b) === 0;\n  };\n  Buffer.prototype.inspect = function inspect() {\n    let str = \"\";\n    const max = exports.INSPECT_MAX_BYTES;\n    str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n    if (this.length > max) str += \" ... \";\n    return \"<Buffer \" + str + \">\";\n  };\n  if (customInspectSymbol) {\n    Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n  }\n  Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n    if (isInstance(target, Uint8Array)) {\n      target = Buffer.from(target, target.offset, target.byteLength);\n    }\n    if (!Buffer.isBuffer(target)) {\n      throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n    }\n    if (start === undefined) {\n      start = 0;\n    }\n    if (end === undefined) {\n      end = target ? target.length : 0;\n    }\n    if (thisStart === undefined) {\n      thisStart = 0;\n    }\n    if (thisEnd === undefined) {\n      thisEnd = this.length;\n    }\n    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n      throw new RangeError(\"out of range index\");\n    }\n    if (thisStart >= thisEnd && start >= end) {\n      return 0;\n    }\n    if (thisStart >= thisEnd) {\n      return -1;\n    }\n    if (start >= end) {\n      return 1;\n    }\n    start >>>= 0;\n    end >>>= 0;\n    thisStart >>>= 0;\n    thisEnd >>>= 0;\n    if (this === target) return 0;\n    let x = thisEnd - thisStart;\n    let y = end - start;\n    const len = Math.min(x, y);\n    const thisCopy = this.slice(thisStart, thisEnd);\n    const targetCopy = target.slice(start, end);\n    for (let i = 0; i < len; ++i) {\n      if (thisCopy[i] !== targetCopy[i]) {\n        x = thisCopy[i];\n        y = targetCopy[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n\n  // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n  // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n  //\n  // Arguments:\n  // - buffer - a Buffer to search\n  // - val - a string, Buffer, or number\n  // - byteOffset - an index into `buffer`; will be clamped to an int32\n  // - encoding - an optional encoding, relevant is val is a string\n  // - dir - true for indexOf, false for lastIndexOf\n  function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n    // Empty buffer means no match\n    if (buffer.length === 0) return -1;\n\n    // Normalize byteOffset\n    if (typeof byteOffset === \"string\") {\n      encoding = byteOffset;\n      byteOffset = 0;\n    } else if (byteOffset > 2147483647) {\n      byteOffset = 2147483647;\n    } else if (byteOffset < -2147483648) {\n      byteOffset = -2147483648;\n    }\n    byteOffset = +byteOffset; // Coerce to Number.\n    if (numberIsNaN(byteOffset)) {\n      // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n      byteOffset = dir ? 0 : buffer.length - 1;\n    }\n\n    // Normalize byteOffset: negative offsets start from the end of the buffer\n    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n    if (byteOffset >= buffer.length) {\n      if (dir) return -1;else byteOffset = buffer.length - 1;\n    } else if (byteOffset < 0) {\n      if (dir) byteOffset = 0;else return -1;\n    }\n\n    // Normalize val\n    if (typeof val === \"string\") {\n      val = Buffer.from(val, encoding);\n    }\n\n    // Finally, search either indexOf (if dir is true) or lastIndexOf\n    if (Buffer.isBuffer(val)) {\n      // Special case: looking for empty string/buffer always fails\n      if (val.length === 0) {\n        return -1;\n      }\n      return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n    } else if (typeof val === \"number\") {\n      val = val & 255; // Search for a byte value [0-255]\n      if (typeof Uint8Array.prototype.indexOf === \"function\") {\n        if (dir) {\n          return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n        } else {\n          return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n        }\n      }\n      return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n    }\n    throw new TypeError(\"val must be string, number or Buffer\");\n  }\n  function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n    let indexSize = 1;\n    let arrLength = arr.length;\n    let valLength = val.length;\n    if (encoding !== undefined) {\n      encoding = String(encoding).toLowerCase();\n      if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n        if (arr.length < 2 || val.length < 2) {\n          return -1;\n        }\n        indexSize = 2;\n        arrLength /= 2;\n        valLength /= 2;\n        byteOffset /= 2;\n      }\n    }\n    function read(buf, i) {\n      if (indexSize === 1) {\n        return buf[i];\n      } else {\n        return buf.readUInt16BE(i * indexSize);\n      }\n    }\n    let i;\n    if (dir) {\n      let foundIndex = -1;\n      for (i = byteOffset; i < arrLength; i++) {\n        if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n          if (foundIndex === -1) foundIndex = i;\n          if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n        } else {\n          if (foundIndex !== -1) i -= i - foundIndex;\n          foundIndex = -1;\n        }\n      }\n    } else {\n      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n      for (i = byteOffset; i >= 0; i--) {\n        let found = true;\n        for (let j = 0; j < valLength; j++) {\n          if (read(arr, i + j) !== read(val, j)) {\n            found = false;\n            break;\n          }\n        }\n        if (found) return i;\n      }\n    }\n    return -1;\n  }\n  Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n    return this.indexOf(val, byteOffset, encoding) !== -1;\n  };\n  Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n  };\n  Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n  };\n  function hexWrite(buf, string, offset, length) {\n    offset = Number(offset) || 0;\n    const remaining = buf.length - offset;\n    if (!length) {\n      length = remaining;\n    } else {\n      length = Number(length);\n      if (length > remaining) {\n        length = remaining;\n      }\n    }\n    const strLen = string.length;\n    if (length > strLen / 2) {\n      length = strLen / 2;\n    }\n    let i;\n    for (i = 0; i < length; ++i) {\n      const parsed = parseInt(string.substr(i * 2, 2), 16);\n      if (numberIsNaN(parsed)) return i;\n      buf[offset + i] = parsed;\n    }\n    return i;\n  }\n  function utf8Write(buf, string, offset, length) {\n    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  function asciiWrite(buf, string, offset, length) {\n    return blitBuffer(asciiToBytes(string), buf, offset, length);\n  }\n  function base64Write(buf, string, offset, length) {\n    return blitBuffer(base64ToBytes(string), buf, offset, length);\n  }\n  function ucs2Write(buf, string, offset, length) {\n    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  Buffer.prototype.write = function write(string, offset, length, encoding) {\n    // Buffer#write(string)\n    if (offset === undefined) {\n      encoding = \"utf8\";\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, encoding)\n    } else if (length === undefined && typeof offset === \"string\") {\n      encoding = offset;\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, offset[, length][, encoding])\n    } else if (isFinite(offset)) {\n      offset = offset >>> 0;\n      if (isFinite(length)) {\n        length = length >>> 0;\n        if (encoding === undefined) encoding = \"utf8\";\n      } else {\n        encoding = length;\n        length = undefined;\n      }\n    } else {\n      throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    }\n    const remaining = this.length - offset;\n    if (length === undefined || length > remaining) length = remaining;\n    if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n      throw new RangeError(\"Attempt to write outside buffer bounds\");\n    }\n    if (!encoding) encoding = \"utf8\";\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"hex\":\n          return hexWrite(this, string, offset, length);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Write(this, string, offset, length);\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return asciiWrite(this, string, offset, length);\n        case \"base64\":\n          // Warning: maxLength not taken into account in base64Write\n          return base64Write(this, string, offset, length);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return ucs2Write(this, string, offset, length);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  };\n  Buffer.prototype.toJSON = function toJSON() {\n    return {\n      type: \"Buffer\",\n      data: Array.prototype.slice.call(this._arr || this, 0)\n    };\n  };\n  function base64Slice(buf, start, end) {\n    if (start === 0 && end === buf.length) {\n      return base64.fromByteArray(buf);\n    } else {\n      return base64.fromByteArray(buf.slice(start, end));\n    }\n  }\n  function utf8Slice(buf, start, end) {\n    end = Math.min(buf.length, end);\n    const res = [];\n    let i = start;\n    while (i < end) {\n      const firstByte = buf[i];\n      let codePoint = null;\n      let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n      if (i + bytesPerSequence <= end) {\n        let secondByte, thirdByte, fourthByte, tempCodePoint;\n        switch (bytesPerSequence) {\n          case 1:\n            if (firstByte < 128) {\n              codePoint = firstByte;\n            }\n            break;\n          case 2:\n            secondByte = buf[i + 1];\n            if ((secondByte & 192) === 128) {\n              tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n              if (tempCodePoint > 127) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 3:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n              if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 4:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            fourthByte = buf[i + 3];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n              if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n                codePoint = tempCodePoint;\n              }\n            }\n        }\n      }\n      if (codePoint === null) {\n        // we did not generate a valid codePoint so insert a\n        // replacement char (U+FFFD) and advance only 1 byte\n        codePoint = 65533;\n        bytesPerSequence = 1;\n      } else if (codePoint > 65535) {\n        // encode to utf16 (surrogate pair dance)\n        codePoint -= 65536;\n        res.push(codePoint >>> 10 & 1023 | 55296);\n        codePoint = 56320 | codePoint & 1023;\n      }\n      res.push(codePoint);\n      i += bytesPerSequence;\n    }\n    return decodeCodePointsArray(res);\n  }\n\n  // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n  // the lowest limit is Chrome, with 0x10000 args.\n  // We go 1 magnitude less, for safety\n  const MAX_ARGUMENTS_LENGTH = 4096;\n  function decodeCodePointsArray(codePoints) {\n    const len = codePoints.length;\n    if (len <= MAX_ARGUMENTS_LENGTH) {\n      return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n    }\n\n    // Decode in chunks to avoid \"call stack size exceeded\".\n    let res = \"\";\n    let i = 0;\n    while (i < len) {\n      res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n    }\n    return res;\n  }\n  function asciiSlice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i] & 127);\n    }\n    return ret;\n  }\n  function latin1Slice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i]);\n    }\n    return ret;\n  }\n  function hexSlice(buf, start, end) {\n    const len = buf.length;\n    if (!start || start < 0) start = 0;\n    if (!end || end < 0 || end > len) end = len;\n    let out = \"\";\n    for (let i = start; i < end; ++i) {\n      out += hexSliceLookupTable[buf[i]];\n    }\n    return out;\n  }\n  function utf16leSlice(buf, start, end) {\n    const bytes = buf.slice(start, end);\n    let res = \"\";\n    // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n    for (let i = 0; i < bytes.length - 1; i += 2) {\n      res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n    }\n    return res;\n  }\n  Buffer.prototype.slice = function slice(start, end) {\n    const len = this.length;\n    start = ~~start;\n    end = end === undefined ? len : ~~end;\n    if (start < 0) {\n      start += len;\n      if (start < 0) start = 0;\n    } else if (start > len) {\n      start = len;\n    }\n    if (end < 0) {\n      end += len;\n      if (end < 0) end = 0;\n    } else if (end > len) {\n      end = len;\n    }\n    if (end < start) end = start;\n    const newBuf = this.subarray(start, end);\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(newBuf, Buffer.prototype);\n    return newBuf;\n  };\n\n  /*\n   * Need to make sure that buffer isn't trying to write out of bounds.\n   */\n  function checkOffset(offset, ext, length) {\n    if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n    if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n  }\n  Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      checkOffset(offset, byteLength, this.length);\n    }\n    let val = this[offset + --byteLength];\n    let mul = 1;\n    while (byteLength > 0 && (mul *= 256)) {\n      val += this[offset + --byteLength] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    return this[offset];\n  };\n  Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] | this[offset + 1] << 8;\n  };\n  Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] << 8 | this[offset + 1];\n  };\n  Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n  };\n  Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n  };\n  Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n    const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n    return BigInt(lo) + (BigInt(hi) << BigInt(32));\n  });\n  Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n    return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  });\n  Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let i = byteLength;\n    let mul = 1;\n    let val = this[offset + --i];\n    while (i > 0 && (mul *= 256)) {\n      val += this[offset + --i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    if (!(this[offset] & 128)) return this[offset];\n    return (255 - this[offset] + 1) * -1;\n  };\n  Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset] | this[offset + 1] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset + 1] | this[offset] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n  };\n  Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n  };\n  Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n    return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n  });\n  Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = (first << 24) +\n    // Overflow\n    this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n  });\n  Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, true, 23, 4);\n  };\n  Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, false, 23, 4);\n  };\n  Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, true, 52, 8);\n  };\n  Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, false, 52, 8);\n  };\n  function checkInt(buf, value, offset, ext, max, min) {\n    if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n    if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n  }\n  Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let mul = 1;\n    let i = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  function wrtBigUInt64LE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    return offset;\n  }\n  function wrtBigUInt64BE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset + 7] = lo;\n    lo = lo >> 8;\n    buf[offset + 6] = lo;\n    lo = lo >> 8;\n    buf[offset + 5] = lo;\n    lo = lo >> 8;\n    buf[offset + 4] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset + 3] = hi;\n    hi = hi >> 8;\n    buf[offset + 2] = hi;\n    hi = hi >> 8;\n    buf[offset + 1] = hi;\n    hi = hi >> 8;\n    buf[offset] = hi;\n    return offset + 8;\n  }\n  Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = 0;\n    let mul = 1;\n    let sub = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    let sub = 0;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n    if (value < 0) value = 255 + value + 1;\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n    return offset + 4;\n  };\n  Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    if (value < 0) value = 4294967295 + value + 1;\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  function checkIEEE754(buf, value, offset, ext, max, min) {\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n    if (offset < 0) throw new RangeError(\"Index out of range\");\n  }\n  function writeFloat(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 4);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 23, 4);\n    return offset + 4;\n  }\n  Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, false, noAssert);\n  };\n  function writeDouble(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 8);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 52, 8);\n    return offset + 8;\n  }\n  Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, false, noAssert);\n  };\n\n  // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n  Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n    if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n    if (!start) start = 0;\n    if (!end && end !== 0) end = this.length;\n    if (targetStart >= target.length) targetStart = target.length;\n    if (!targetStart) targetStart = 0;\n    if (end > 0 && end < start) end = start;\n\n    // Copy 0 bytes; we're done\n    if (end === start) return 0;\n    if (target.length === 0 || this.length === 0) return 0;\n\n    // Fatal error conditions\n    if (targetStart < 0) {\n      throw new RangeError(\"targetStart out of bounds\");\n    }\n    if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n    if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n\n    // Are we oob?\n    if (end > this.length) end = this.length;\n    if (target.length - targetStart < end - start) {\n      end = target.length - targetStart + start;\n    }\n    const len = end - start;\n    if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n      // Use built-in when available, missing from IE11\n      this.copyWithin(targetStart, start, end);\n    } else {\n      Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n    }\n    return len;\n  };\n\n  // Usage:\n  //    buffer.fill(number[, offset[, end]])\n  //    buffer.fill(buffer[, offset[, end]])\n  //    buffer.fill(string[, offset[, end]][, encoding])\n  Buffer.prototype.fill = function fill(val, start, end, encoding) {\n    // Handle string cases:\n    if (typeof val === \"string\") {\n      if (typeof start === \"string\") {\n        encoding = start;\n        start = 0;\n        end = this.length;\n      } else if (typeof end === \"string\") {\n        encoding = end;\n        end = this.length;\n      }\n      if (encoding !== undefined && typeof encoding !== \"string\") {\n        throw new TypeError(\"encoding must be a string\");\n      }\n      if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n        throw new TypeError(\"Unknown encoding: \" + encoding);\n      }\n      if (val.length === 1) {\n        const code = val.charCodeAt(0);\n        if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n          // Fast path: If `val` fits into a single byte, use that numeric value.\n          val = code;\n        }\n      }\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n    } else if (typeof val === \"boolean\") {\n      val = Number(val);\n    }\n\n    // Invalid ranges are not set to a default, so can range check early.\n    if (start < 0 || this.length < start || this.length < end) {\n      throw new RangeError(\"Out of range index\");\n    }\n    if (end <= start) {\n      return this;\n    }\n    start = start >>> 0;\n    end = end === undefined ? this.length : end >>> 0;\n    if (!val) val = 0;\n    let i;\n    if (typeof val === \"number\") {\n      for (i = start; i < end; ++i) {\n        this[i] = val;\n      }\n    } else {\n      const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n      const len = bytes.length;\n      if (len === 0) {\n        throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n      }\n      for (i = 0; i < end - start; ++i) {\n        this[i + start] = bytes[i % len];\n      }\n    }\n    return this;\n  };\n\n  // CUSTOM ERRORS\n  // =============\n\n  // Simplified versions from Node, changed for Buffer-only usage\n  const errors = {};\n  function E(sym, getMessage, Base) {\n    errors[sym] = class NodeError extends Base {\n      constructor() {\n        super();\n        Object.defineProperty(this, \"message\", {\n          value: getMessage.apply(this, arguments),\n          writable: true,\n          configurable: true\n        });\n\n        // Add the error code to the name to include it in the stack trace.\n        this.name = `${this.name} [${sym}]`;\n        // Access the stack to generate the error message including the error code\n        // from the name.\n        this.stack; // eslint-disable-line no-unused-expressions\n        // Reset the name to the actual name.\n        delete this.name;\n      }\n      get code() {\n        return sym;\n      }\n      set code(value) {\n        Object.defineProperty(this, \"code\", {\n          configurable: true,\n          enumerable: true,\n          value,\n          writable: true\n        });\n      }\n      toString() {\n        return `${this.name} [${sym}]: ${this.message}`;\n      }\n    };\n  }\n  E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`;\n    }\n    return \"Attempt to access memory outside buffer bounds\";\n  }, RangeError);\n  E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n  }, TypeError);\n  E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`;\n    let received = input;\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input));\n    } else if (typeof input === \"bigint\") {\n      received = String(input);\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received);\n      }\n      received += \"n\";\n    }\n    msg += ` It must be ${range}. Received ${received}`;\n    return msg;\n  }, RangeError);\n  function addNumericalSeparator(val) {\n    let res = \"\";\n    let i = val.length;\n    const start = val[0] === \"-\" ? 1 : 0;\n    for (; i >= start + 4; i -= 3) {\n      res = `_${val.slice(i - 3, i)}${res}`;\n    }\n    return `${val.slice(0, i)}${res}`;\n  }\n\n  // CHECK FUNCTIONS\n  // ===============\n\n  function checkBounds(buf, offset, byteLength) {\n    validateNumber(offset, \"offset\");\n    if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n      boundsError(offset, buf.length - (byteLength + 1));\n    }\n  }\n  function checkIntBI(value, min, max, buf, offset, byteLength) {\n    if (value > max || value < min) {\n      const n = typeof min === \"bigint\" ? \"n\" : \"\";\n      let range;\n      {\n        if (min === 0 || min === BigInt(0)) {\n          range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n        } else {\n          range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n        }\n      }\n      throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n    }\n    checkBounds(buf, offset, byteLength);\n  }\n  function validateNumber(value, name) {\n    if (typeof value !== \"number\") {\n      throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n    }\n  }\n  function boundsError(value, length, type) {\n    if (Math.floor(value) !== value) {\n      validateNumber(value, type);\n      throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n    }\n    if (length < 0) {\n      throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n    }\n    throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n  }\n\n  // HELPER FUNCTIONS\n  // ================\n\n  const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n  function base64clean(str) {\n    // Node takes equal signs as end of the Base64 encoding\n    str = str.split(\"=\")[0];\n    // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n    str = str.trim().replace(INVALID_BASE64_RE, \"\");\n    // Node converts strings with length < 2 to ''\n    if (str.length < 2) return \"\";\n    // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n    while (str.length % 4 !== 0) {\n      str = str + \"=\";\n    }\n    return str;\n  }\n  function utf8ToBytes(string, units) {\n    units = units || Infinity;\n    let codePoint;\n    const length = string.length;\n    let leadSurrogate = null;\n    const bytes = [];\n    for (let i = 0; i < length; ++i) {\n      codePoint = string.charCodeAt(i);\n\n      // is surrogate component\n      if (codePoint > 55295 && codePoint < 57344) {\n        // last char was a lead\n        if (!leadSurrogate) {\n          // no lead yet\n          if (codePoint > 56319) {\n            // unexpected trail\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          } else if (i + 1 === length) {\n            // unpaired lead\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          }\n\n          // valid lead\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // 2 leads in a row\n        if (codePoint < 56320) {\n          if ((units -= 3) > -1) bytes.push(239, 191, 189);\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // valid surrogate pair\n        codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n      } else if (leadSurrogate) {\n        // valid bmp char, but last char was a lead\n        if ((units -= 3) > -1) bytes.push(239, 191, 189);\n      }\n      leadSurrogate = null;\n\n      // encode utf8\n      if (codePoint < 128) {\n        if ((units -= 1) < 0) break;\n        bytes.push(codePoint);\n      } else if (codePoint < 2048) {\n        if ((units -= 2) < 0) break;\n        bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n      } else if (codePoint < 65536) {\n        if ((units -= 3) < 0) break;\n        bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else if (codePoint < 1114112) {\n        if ((units -= 4) < 0) break;\n        bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else {\n        throw new Error(\"Invalid code point\");\n      }\n    }\n    return bytes;\n  }\n  function asciiToBytes(str) {\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      // Node's code seems to be doing this and not & 0x7F..\n      byteArray.push(str.charCodeAt(i) & 255);\n    }\n    return byteArray;\n  }\n  function utf16leToBytes(str, units) {\n    let c, hi, lo;\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      if ((units -= 2) < 0) break;\n      c = str.charCodeAt(i);\n      hi = c >> 8;\n      lo = c % 256;\n      byteArray.push(lo);\n      byteArray.push(hi);\n    }\n    return byteArray;\n  }\n  function base64ToBytes(str) {\n    return base64.toByteArray(base64clean(str));\n  }\n  function blitBuffer(src, dst, offset, length) {\n    let i;\n    for (i = 0; i < length; ++i) {\n      if (i + offset >= dst.length || i >= src.length) break;\n      dst[i + offset] = src[i];\n    }\n    return i;\n  }\n\n  // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n  // the `instanceof` check but they should be treated as of that type.\n  // See: https://github.com/feross/buffer/issues/166\n  function isInstance(obj, type) {\n    return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n  }\n  function numberIsNaN(obj) {\n    // For IE11 support\n    return obj !== obj; // eslint-disable-line no-self-compare\n  }\n\n  // Create lookup table for `toString('hex')`\n  // See: https://github.com/feross/buffer/issues/219\n  const hexSliceLookupTable = function () {\n    const alphabet = \"0123456789abcdef\";\n    const table = new Array(256);\n    for (let i = 0; i < 16; ++i) {\n      const i16 = i * 16;\n      for (let j = 0; j < 16; ++j) {\n        table[i16 + j] = alphabet[i] + alphabet[j];\n      }\n    }\n    return table;\n  }();\n\n  // Return not function with Error if BigInt not supported\n  function defineBigIntMethod(fn) {\n    return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n  }\n  function BufferBigIntNotDefined() {\n    throw new Error(\"BigInt not supported\");\n  }\n  return exports;\n}\n\nexport { dew as d };\n","import { d as dew } from './chunk-DtuTasat.js';\n\nconst exports = dew();\nexports['Buffer']; exports['SlowBuffer']; exports['INSPECT_MAX_BYTES']; exports['kMaxLength'];\n\nvar Buffer = exports.Buffer;\r\nvar INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;\r\nvar kMaxLength = exports.kMaxLength;\n\nexport { Buffer, INSPECT_MAX_BYTES, exports as default, kMaxLength };\n","export { Buffer } from \"buffer\";\n","function unimplemented(name) {\r\n  throw new Error('Node.js process ' + name + ' is not supported by JSPM core outside of Node.js');\r\n}\r\n\r\nvar queue = [];\r\nvar draining = false;\r\nvar currentQueue;\r\nvar queueIndex = -1;\r\n\r\nfunction cleanUpNextTick() {\r\n  if (!draining || !currentQueue)\r\n    return;\r\n  draining = false;\r\n  if (currentQueue.length) {\r\n    queue = currentQueue.concat(queue);\r\n  }\r\n  else {\r\n    queueIndex = -1;\r\n  }\r\n  if (queue.length)\r\n    drainQueue();\r\n}\r\n\r\nfunction drainQueue() {\r\n  if (draining)\r\n    return;\r\n  var timeout = setTimeout(cleanUpNextTick, 0);\r\n  draining = true;\r\n\r\n  var len = queue.length;\r\n  while(len) {\r\n    currentQueue = queue;\r\n    queue = [];\r\n    while (++queueIndex < len) {\r\n      if (currentQueue)\r\n        currentQueue[queueIndex].run();\r\n    }\r\n    queueIndex = -1;\r\n    len = queue.length;\r\n  }\r\n  currentQueue = null;\r\n  draining = false;\r\n  clearTimeout(timeout);\r\n}\r\n\r\nfunction nextTick (fun) {\r\n  var args = new Array(arguments.length - 1);\r\n  if (arguments.length > 1) {\r\n    for (var i = 1; i < arguments.length; i++)\r\n      args[i - 1] = arguments[i];\r\n  }\r\n  queue.push(new Item(fun, args));\r\n  if (queue.length === 1 && !draining)\r\n    setTimeout(drainQueue, 0);\r\n}\r\n// v8 likes predictible objects\r\nfunction Item(fun, array) {\r\n  this.fun = fun;\r\n  this.array = array;\r\n}\r\nItem.prototype.run = function () {\r\n  this.fun.apply(null, this.array);\r\n};\r\n\r\nvar title = 'browser';\r\nvar arch = 'x64';\r\nvar platform = 'browser';\r\nvar env = {\r\n  PATH: '/usr/bin',\r\n  LANG: navigator.language + '.UTF-8',\r\n  PWD: '/',\r\n  HOME: '/home',\r\n  TMP: '/tmp',\r\n};\r\nvar argv = ['/usr/bin/node'];\r\nvar execArgv = [];\r\nvar version = 'v16.8.0';\r\nvar versions = {};\r\n\r\nvar emitWarning = function(message, type) {\r\n  console.warn((type ? (type + ': ') : '') + message);\r\n};\r\n\r\nvar binding = function(name) { unimplemented('binding'); };\r\n\r\nvar umask = function(mask) { return 0; };\r\n\r\nvar cwd = function() { return '/'; };\r\nvar chdir = function(dir) {};\r\n\r\nvar release = {\r\n  name: 'node',\r\n  sourceUrl: '',\r\n  headersUrl: '',\r\n  libUrl: '',\r\n};\r\n\r\nfunction noop() {}\r\n\r\nvar _rawDebug = noop;\r\nvar moduleLoadList = [];\r\nfunction _linkedBinding(name) { unimplemented('_linkedBinding'); }\r\nvar domain = {};\r\nvar _exiting = false;\r\nvar config = {};\r\nfunction dlopen(name) { unimplemented('dlopen'); }\r\nfunction _getActiveRequests() { return []; }\r\nfunction _getActiveHandles() { return []; }\r\nvar reallyExit = noop;\r\nvar _kill = noop;\r\nvar cpuUsage = function() { return {}; };\r\nvar resourceUsage = cpuUsage;\r\nvar memoryUsage = cpuUsage;\r\nvar kill = noop;\r\nvar exit = noop;\r\nvar openStdin = noop;\r\nvar allowedNodeEnvironmentFlags = {};\r\nfunction assert(condition, message) {\r\n  if (!condition) throw new Error(message || 'assertion error');\r\n}\r\nvar features = {\r\n  inspector: false,\r\n  debug: false,\r\n  uv: false,\r\n  ipv6: false,\r\n  tls_alpn: false,\r\n  tls_sni: false,\r\n  tls_ocsp: false,\r\n  tls: false,\r\n  cached_builtins: true,\r\n};\r\nvar _fatalExceptions = noop;\r\nvar setUncaughtExceptionCaptureCallback = noop;\r\nfunction hasUncaughtExceptionCaptureCallback() { return false; }var _tickCallback = noop;\r\nvar _debugProcess = noop;\r\nvar _debugEnd = noop;\r\nvar _startProfilerIdleNotifier = noop;\r\nvar _stopProfilerIdleNotifier = noop;\r\nvar stdout = undefined;\r\nvar stderr = undefined;\r\nvar stdin = undefined;\r\nvar abort = noop;\r\nvar pid = 2;\r\nvar ppid = 1;\r\nvar execPath = '/bin/usr/node';\r\nvar debugPort = 9229;\r\nvar argv0 = 'node';\r\nvar _preload_modules = [];\r\nvar setSourceMapsEnabled = noop;\r\n\r\nvar _performance = {\r\n  now: typeof performance !== 'undefined' ? performance.now.bind(performance) : undefined,\r\n  timing: typeof performance !== 'undefined' ? performance.timing : undefined,\r\n};\r\nif (_performance.now === undefined) {\r\n  var nowOffset = Date.now();\r\n\r\n  if (_performance.timing && _performance.timing.navigationStart) {\r\n    nowOffset = _performance.timing.navigationStart;\r\n  }\r\n  _performance.now = () => Date.now() - nowOffset;\r\n}\r\n\r\nfunction uptime() {\r\n  return _performance.now() / 1000;\r\n}\r\n\r\nvar nanoPerSec = 1000000000;\r\nfunction hrtime(previousTimestamp) {\r\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\r\n  var clocktime = _performance.now() * 1e-3;\r\n  var seconds = Math.floor(clocktime) + baseNow;\r\n  var nanoseconds = Math.floor((clocktime % 1) * 1e9);\r\n  if (previousTimestamp) {\r\n    seconds = seconds - previousTimestamp[0];\r\n    nanoseconds = nanoseconds - previousTimestamp[1];\r\n    if (nanoseconds < 0) {\r\n      seconds--;\r\n      nanoseconds += nanoPerSec;\r\n    }\r\n  }\r\n  return [seconds, nanoseconds];\r\n}hrtime.bigint = function(time) {\r\n  var diff = hrtime(time);\r\n  if (typeof BigInt === 'undefined') {\r\n    return diff[0] * nanoPerSec + diff[1];\r\n  }\r\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\r\n};\r\n\r\nvar _maxListeners = 10;\r\nvar _events = {};\r\nvar _eventsCount = 0;\r\nfunction on () { return process }var addListener = on;\r\nvar once = on;\r\nvar off = on;\r\nvar removeListener = on;\r\nvar removeAllListeners = on;\r\nvar emit = noop;\r\nvar prependListener = on;\r\nvar prependOnceListener = on;\r\nfunction listeners (name) { return []; }\r\nvar process = {\r\n  version,\r\n  versions,\r\n  arch,\r\n  platform,\r\n  release,\r\n  _rawDebug,\r\n  moduleLoadList,\r\n  binding,\r\n  _linkedBinding,\r\n  _events,\r\n  _eventsCount,\r\n  _maxListeners,\r\n  on,\r\n  addListener,\r\n  once,\r\n  off,\r\n  removeListener,\r\n  removeAllListeners,\r\n  emit,\r\n  prependListener,\r\n  prependOnceListener,\r\n  listeners,\r\n  domain,\r\n  _exiting,\r\n  config,\r\n  dlopen,\r\n  uptime,\r\n  _getActiveRequests,\r\n  _getActiveHandles,\r\n  reallyExit,\r\n  _kill,\r\n  cpuUsage,\r\n  resourceUsage,\r\n  memoryUsage,\r\n  kill,\r\n  exit,\r\n  openStdin,\r\n  allowedNodeEnvironmentFlags,\r\n  assert,\r\n  features,\r\n  _fatalExceptions,\r\n  setUncaughtExceptionCaptureCallback,\r\n  hasUncaughtExceptionCaptureCallback,\r\n  emitWarning,\r\n  nextTick,\r\n  _tickCallback,\r\n  _debugProcess,\r\n  _debugEnd,\r\n  _startProfilerIdleNotifier,\r\n  _stopProfilerIdleNotifier,\r\n  stdout,\r\n  stdin,\r\n  stderr,\r\n  abort,\r\n  umask,\r\n  chdir,\r\n  cwd,\r\n  env,\r\n  title,\r\n  argv,\r\n  execArgv,\r\n  pid,\r\n  ppid,\r\n  execPath,\r\n  debugPort,\r\n  hrtime,\r\n  argv0,\r\n  _preload_modules,\r\n  setSourceMapsEnabled,\r\n};\n\nexport { process as p };\n","import { p as process } from './chunk-DEMDiNwt.js';\n\nvar exports$1 = {},\n  _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports$1;\n  _dewExec = true;\n  var process$1 = process;\n  function assertPath(path) {\n    if (typeof path !== \"string\") {\n      throw new TypeError(\"Path must be a string. Received \" + JSON.stringify(path));\n    }\n  }\n\n  // Resolves . and .. elements in a path with directory names\n  function normalizeStringPosix(path, allowAboveRoot) {\n    var res = \"\";\n    var lastSegmentLength = 0;\n    var lastSlash = -1;\n    var dots = 0;\n    var code;\n    for (var i = 0; i <= path.length; ++i) {\n      if (i < path.length) code = path.charCodeAt(i);else if (code === 47 /*/*/) break;else code = 47 /*/*/;\n      if (code === 47 /*/*/) {\n        if (lastSlash === i - 1 || dots === 1) ; else if (lastSlash !== i - 1 && dots === 2) {\n          if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n            if (res.length > 2) {\n              var lastSlashIndex = res.lastIndexOf(\"/\");\n              if (lastSlashIndex !== res.length - 1) {\n                if (lastSlashIndex === -1) {\n                  res = \"\";\n                  lastSegmentLength = 0;\n                } else {\n                  res = res.slice(0, lastSlashIndex);\n                  lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n                }\n                lastSlash = i;\n                dots = 0;\n                continue;\n              }\n            } else if (res.length === 2 || res.length === 1) {\n              res = \"\";\n              lastSegmentLength = 0;\n              lastSlash = i;\n              dots = 0;\n              continue;\n            }\n          }\n          if (allowAboveRoot) {\n            if (res.length > 0) res += \"/..\";else res = \"..\";\n            lastSegmentLength = 2;\n          }\n        } else {\n          if (res.length > 0) res += \"/\" + path.slice(lastSlash + 1, i);else res = path.slice(lastSlash + 1, i);\n          lastSegmentLength = i - lastSlash - 1;\n        }\n        lastSlash = i;\n        dots = 0;\n      } else if (code === 46 /*.*/ && dots !== -1) {\n        ++dots;\n      } else {\n        dots = -1;\n      }\n    }\n    return res;\n  }\n  function _format(sep, pathObject) {\n    var dir = pathObject.dir || pathObject.root;\n    var base = pathObject.base || (pathObject.name || \"\") + (pathObject.ext || \"\");\n    if (!dir) {\n      return base;\n    }\n    if (dir === pathObject.root) {\n      return dir + base;\n    }\n    return dir + sep + base;\n  }\n  var posix = {\n    // path.resolve([from ...], to)\n    resolve: function resolve() {\n      var resolvedPath = \"\";\n      var resolvedAbsolute = false;\n      var cwd;\n      for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n        var path;\n        if (i >= 0) path = arguments[i];else {\n          if (cwd === undefined) cwd = process$1.cwd();\n          path = cwd;\n        }\n        assertPath(path);\n\n        // Skip empty entries\n        if (path.length === 0) {\n          continue;\n        }\n        resolvedPath = path + \"/\" + resolvedPath;\n        resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n      }\n\n      // At this point the path should be resolved to a full absolute path, but\n      // handle relative paths to be safe (might happen when process.cwd() fails)\n\n      // Normalize the path\n      resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n      if (resolvedAbsolute) {\n        if (resolvedPath.length > 0) return \"/\" + resolvedPath;else return \"/\";\n      } else if (resolvedPath.length > 0) {\n        return resolvedPath;\n      } else {\n        return \".\";\n      }\n    },\n    normalize: function normalize(path) {\n      assertPath(path);\n      if (path.length === 0) return \".\";\n      var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n      var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n      // Normalize the path\n      path = normalizeStringPosix(path, !isAbsolute);\n      if (path.length === 0 && !isAbsolute) path = \".\";\n      if (path.length > 0 && trailingSeparator) path += \"/\";\n      if (isAbsolute) return \"/\" + path;\n      return path;\n    },\n    isAbsolute: function isAbsolute(path) {\n      assertPath(path);\n      return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n    },\n    join: function join() {\n      if (arguments.length === 0) return \".\";\n      var joined;\n      for (var i = 0; i < arguments.length; ++i) {\n        var arg = arguments[i];\n        assertPath(arg);\n        if (arg.length > 0) {\n          if (joined === undefined) joined = arg;else joined += \"/\" + arg;\n        }\n      }\n      if (joined === undefined) return \".\";\n      return posix.normalize(joined);\n    },\n    relative: function relative(from, to) {\n      assertPath(from);\n      assertPath(to);\n      if (from === to) return \"\";\n      from = posix.resolve(from);\n      to = posix.resolve(to);\n      if (from === to) return \"\";\n\n      // Trim any leading backslashes\n      var fromStart = 1;\n      for (; fromStart < from.length; ++fromStart) {\n        if (from.charCodeAt(fromStart) !== 47 /*/*/) break;\n      }\n      var fromEnd = from.length;\n      var fromLen = fromEnd - fromStart;\n\n      // Trim any leading backslashes\n      var toStart = 1;\n      for (; toStart < to.length; ++toStart) {\n        if (to.charCodeAt(toStart) !== 47 /*/*/) break;\n      }\n      var toEnd = to.length;\n      var toLen = toEnd - toStart;\n\n      // Compare paths to find the longest common path from root\n      var length = fromLen < toLen ? fromLen : toLen;\n      var lastCommonSep = -1;\n      var i = 0;\n      for (; i <= length; ++i) {\n        if (i === length) {\n          if (toLen > length) {\n            if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n              // We get here if `from` is the exact base path for `to`.\n              // For example: from='/foo/bar'; to='/foo/bar/baz'\n              return to.slice(toStart + i + 1);\n            } else if (i === 0) {\n              // We get here if `from` is the root\n              // For example: from='/'; to='/foo'\n              return to.slice(toStart + i);\n            }\n          } else if (fromLen > length) {\n            if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n              // We get here if `to` is the exact base path for `from`.\n              // For example: from='/foo/bar/baz'; to='/foo/bar'\n              lastCommonSep = i;\n            } else if (i === 0) {\n              // We get here if `to` is the root.\n              // For example: from='/foo'; to='/'\n              lastCommonSep = 0;\n            }\n          }\n          break;\n        }\n        var fromCode = from.charCodeAt(fromStart + i);\n        var toCode = to.charCodeAt(toStart + i);\n        if (fromCode !== toCode) break;else if (fromCode === 47 /*/*/) lastCommonSep = i;\n      }\n      var out = \"\";\n      // Generate the relative path based on the path difference between `to`\n      // and `from`\n      for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n        if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n          if (out.length === 0) out += \"..\";else out += \"/..\";\n        }\n      }\n\n      // Lastly, append the rest of the destination (`to`) path that comes after\n      // the common path parts\n      if (out.length > 0) return out + to.slice(toStart + lastCommonSep);else {\n        toStart += lastCommonSep;\n        if (to.charCodeAt(toStart) === 47 /*/*/) ++toStart;\n        return to.slice(toStart);\n      }\n    },\n    _makeLong: function _makeLong(path) {\n      return path;\n    },\n    dirname: function dirname(path) {\n      assertPath(path);\n      if (path.length === 0) return \".\";\n      var code = path.charCodeAt(0);\n      var hasRoot = code === 47 /*/*/;\n      var end = -1;\n      var matchedSlash = true;\n      for (var i = path.length - 1; i >= 1; --i) {\n        code = path.charCodeAt(i);\n        if (code === 47 /*/*/) {\n          if (!matchedSlash) {\n            end = i;\n            break;\n          }\n        } else {\n          // We saw the first non-path separator\n          matchedSlash = false;\n        }\n      }\n      if (end === -1) return hasRoot ? \"/\" : \".\";\n      if (hasRoot && end === 1) return \"//\";\n      return path.slice(0, end);\n    },\n    basename: function basename(path, ext) {\n      if (ext !== undefined && typeof ext !== \"string\") throw new TypeError(\"\\\"ext\\\" argument must be a string\");\n      assertPath(path);\n      var start = 0;\n      var end = -1;\n      var matchedSlash = true;\n      var i;\n      if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n        if (ext.length === path.length && ext === path) return \"\";\n        var extIdx = ext.length - 1;\n        var firstNonSlashEnd = -1;\n        for (i = path.length - 1; i >= 0; --i) {\n          var code = path.charCodeAt(i);\n          if (code === 47 /*/*/) {\n            // If we reached a path separator that was not part of a set of path\n            // separators at the end of the string, stop now\n            if (!matchedSlash) {\n              start = i + 1;\n              break;\n            }\n          } else {\n            if (firstNonSlashEnd === -1) {\n              // We saw the first non-path separator, remember this index in case\n              // we need it if the extension ends up not matching\n              matchedSlash = false;\n              firstNonSlashEnd = i + 1;\n            }\n            if (extIdx >= 0) {\n              // Try to match the explicit extension\n              if (code === ext.charCodeAt(extIdx)) {\n                if (--extIdx === -1) {\n                  // We matched the extension, so mark this as the end of our path\n                  // component\n                  end = i;\n                }\n              } else {\n                // Extension does not match, so our result is the entire path\n                // component\n                extIdx = -1;\n                end = firstNonSlashEnd;\n              }\n            }\n          }\n        }\n        if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n        return path.slice(start, end);\n      } else {\n        for (i = path.length - 1; i >= 0; --i) {\n          if (path.charCodeAt(i) === 47 /*/*/) {\n            // If we reached a path separator that was not part of a set of path\n            // separators at the end of the string, stop now\n            if (!matchedSlash) {\n              start = i + 1;\n              break;\n            }\n          } else if (end === -1) {\n            // We saw the first non-path separator, mark this as the end of our\n            // path component\n            matchedSlash = false;\n            end = i + 1;\n          }\n        }\n        if (end === -1) return \"\";\n        return path.slice(start, end);\n      }\n    },\n    extname: function extname(path) {\n      assertPath(path);\n      var startDot = -1;\n      var startPart = 0;\n      var end = -1;\n      var matchedSlash = true;\n      // Track the state of characters (if any) we see before our first dot and\n      // after any path separator we find\n      var preDotState = 0;\n      for (var i = path.length - 1; i >= 0; --i) {\n        var code = path.charCodeAt(i);\n        if (code === 47 /*/*/) {\n          // If we reached a path separator that was not part of a set of path\n          // separators at the end of the string, stop now\n          if (!matchedSlash) {\n            startPart = i + 1;\n            break;\n          }\n          continue;\n        }\n        if (end === -1) {\n          // We saw the first non-path separator, mark this as the end of our\n          // extension\n          matchedSlash = false;\n          end = i + 1;\n        }\n        if (code === 46 /*.*/) {\n          // If this is our first dot, mark it as the start of our extension\n          if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n        } else if (startDot !== -1) {\n          // We saw a non-dot and non-path separator before our dot, so we should\n          // have a good chance at having a non-empty extension\n          preDotState = -1;\n        }\n      }\n      if (startDot === -1 || end === -1 ||\n      // We saw a non-dot character immediately before the dot\n      preDotState === 0 ||\n      // The (right-most) trimmed path component is exactly '..'\n      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n        return \"\";\n      }\n      return path.slice(startDot, end);\n    },\n    format: function format(pathObject) {\n      if (pathObject === null || typeof pathObject !== \"object\") {\n        throw new TypeError(\"The \\\"pathObject\\\" argument must be of type Object. Received type \" + typeof pathObject);\n      }\n      return _format(\"/\", pathObject);\n    },\n    parse: function parse(path) {\n      assertPath(path);\n      var ret = {\n        root: \"\",\n        dir: \"\",\n        base: \"\",\n        ext: \"\",\n        name: \"\"\n      };\n      if (path.length === 0) return ret;\n      var code = path.charCodeAt(0);\n      var isAbsolute = code === 47 /*/*/;\n      var start;\n      if (isAbsolute) {\n        ret.root = \"/\";\n        start = 1;\n      } else {\n        start = 0;\n      }\n      var startDot = -1;\n      var startPart = 0;\n      var end = -1;\n      var matchedSlash = true;\n      var i = path.length - 1;\n\n      // Track the state of characters (if any) we see before our first dot and\n      // after any path separator we find\n      var preDotState = 0;\n\n      // Get non-dir info\n      for (; i >= start; --i) {\n        code = path.charCodeAt(i);\n        if (code === 47 /*/*/) {\n          // If we reached a path separator that was not part of a set of path\n          // separators at the end of the string, stop now\n          if (!matchedSlash) {\n            startPart = i + 1;\n            break;\n          }\n          continue;\n        }\n        if (end === -1) {\n          // We saw the first non-path separator, mark this as the end of our\n          // extension\n          matchedSlash = false;\n          end = i + 1;\n        }\n        if (code === 46 /*.*/) {\n          // If this is our first dot, mark it as the start of our extension\n          if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n        } else if (startDot !== -1) {\n          // We saw a non-dot and non-path separator before our dot, so we should\n          // have a good chance at having a non-empty extension\n          preDotState = -1;\n        }\n      }\n      if (startDot === -1 || end === -1 ||\n      // We saw a non-dot character immediately before the dot\n      preDotState === 0 ||\n      // The (right-most) trimmed path component is exactly '..'\n      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n        if (end !== -1) {\n          if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n        }\n      } else {\n        if (startPart === 0 && isAbsolute) {\n          ret.name = path.slice(1, startDot);\n          ret.base = path.slice(1, end);\n        } else {\n          ret.name = path.slice(startPart, startDot);\n          ret.base = path.slice(startPart, end);\n        }\n        ret.ext = path.slice(startDot, end);\n      }\n      if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = \"/\";\n      return ret;\n    },\n    sep: \"/\",\n    delimiter: \":\",\n    win32: null,\n    posix: null\n  };\n  posix.posix = posix;\n  exports$1 = posix;\n  return exports$1;\n}\n\nconst exports = dew();\n\nexport { exports as e };\n","import { e as exports } from './chunk-BlJi4mNy.js';\nimport './chunk-DEMDiNwt.js';\n\nvar _makeLong = exports._makeLong;\r\nvar basename = exports.basename;\r\nvar delimiter = exports.delimiter;\r\nvar dirname = exports.dirname;\r\nvar extname = exports.extname;\r\nvar format = exports.format;\r\nvar isAbsolute = exports.isAbsolute;\r\nvar join = exports.join;\r\nvar normalize = exports.normalize;\r\nvar parse = exports.parse;\r\nvar posix = exports.posix;\r\nvar relative = exports.relative;\r\nvar resolve = exports.resolve;\r\nvar sep = exports.sep;\r\nvar win32 = exports.win32;\n\nexport { _makeLong, basename, exports as default, delimiter, dirname, extname, format, isAbsolute, join, normalize, parse, posix, relative, resolve, sep, win32 };\n","export { DynamicSnippetsGenerator } from \"./DynamicSnippetsGenerator.js\";\n","import {\n    AbstractAstNode,\n    AbstractDynamicSnippetsGenerator,\n    AbstractFormatter,\n    FernGeneratorExec,\n    Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator.js\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n    DynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator\n> {\n    private formatter: AbstractFormatter | undefined;\n\n    constructor({\n        ir,\n        config,\n        formatter\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        formatter?: AbstractFormatter;\n    }) {\n        super(new DynamicSnippetsGeneratorContext({ ir, config }));\n        this.formatter = formatter;\n    }\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options?: Options\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        return super.generate(request, options);\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options?: Options\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        return super.generateSync(request, options);\n    }\n\n    public async generateSnippetAst(request: FernIr.dynamic.EndpointSnippetRequest): Promise<AbstractAstNode> {\n        return super.generateSnippetAst(request);\n    }\n\n    protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n        return new EndpointSnippetGenerator({ context, formatter: this.formatter });\n    }\n}\n","// Force cache invalidation for CI - server URL templating feature\nexport { addPrefixToString } from \"./addPrefixToString.js\";\nexport { applyOpenAPIOverlay, type Overlay, type OverlayAction } from \"./applyOpenAPIOverlay.js\";\nexport {\n    assert,\n    assertDefined,\n    assertNever,\n    assertNeverNoThrow,\n    assertNonNull,\n    assertString,\n    assertVoidNoThrow\n} from \"./assert.js\";\nexport { delay } from \"./delay/delay.js\";\nexport { withMinimumTime } from \"./delay/withMinimumTime.js\";\nexport { EMPTY_ARRAY, EMPTY_OBJECT } from \"./empty.js\";\nexport * as Examples from \"./examples.js\";\nexport { extractErrorMessage } from \"./extractErrorMessage.js\";\nexport { getDuplicates } from \"./getDuplicates.js\";\nexport { identity } from \"./identity.js\";\nexport { isNonNullish } from \"./isNonNullish.js\";\nexport { MediaType } from \"./mediaType.js\";\nexport { mergeWithOverrides } from \"./mergeWithOverrides.js\";\nexport { noop } from \"./noop.js\";\nexport {\n    haveSameNullishness,\n    nullIfNullish,\n    nullIfSomeNullish,\n    undefinedIfNullish,\n    undefinedIfSomeNullish\n} from \"./nullishUtils.js\";\nexport { type ObjectPropertiesVisitor, visitObject, visitObjectAsync } from \"./ObjectPropertiesVisitor.js\";\nexport { type Entries, entries } from \"./objects/entries.js\";\nexport { isPlainObject } from \"./objects/isPlainObject.js\";\nexport { keys } from \"./objects/keys.js\";\nexport { mapValues } from \"./objects/mapValues.js\";\nexport { type Values, values } from \"./objects/values.js\";\nexport { parseEndpointLocator } from \"./parseEndpointLocator.js\";\nexport { PLATFORM, type Platform } from \"./platform.js\";\nexport { removeSuffix } from \"./removeSuffix.js\";\nexport { replaceEnvVariables } from \"./replaceEnvVars.js\";\nexport { SymbolRegistry, type SymbolRegistryOptions } from \"./SymbolRegistry.js\";\nexport { sanitizeChangelogEntry } from \"./sanitizeChangelogEntry.js\";\nexport { SKIP_MARKER, sanitizeNullValues } from \"./sanitizeNullValues.js\";\nexport { diffSemverOrThrow, parseSemverOrThrow } from \"./semverUtils.js\";\nexport { type SetRequired } from \"./setRequired.js\";\nexport { stripLeadingSlash } from \"./stripLeadingSlash.js\";\nexport { titleCase } from \"./titleCase.js\";\nexport type { ContainerRunner, Digit, Letter, LowercaseLetter, UppercaseLetter } from \"./types.js\";\nexport { validateAgainstJsonSchema } from \"./validateAgainstJsonSchema.js\";\nexport { visitDiscriminatedUnion } from \"./visitDiscriminatedUnion.js\";\nexport type { WithoutQuestionMarks } from \"./withoutQuestionMarks.js\";\n","/**\n * Asserts that a condition is truthy, throwing an exception with the specified message if it is falsy.\n */\nexport function assert(condition: unknown, message?: string): asserts condition {\n    if (!condition) {\n        throw new Error(message ?? \"Expected condition to be truthy but got falsy.\");\n    }\n}\n\nexport function assertDefined<T>(val: T, message?: string): asserts val is Exclude<T, undefined> {\n    if (val === undefined) {\n        throw new Error(message ?? \"Expected value to be defined but got undefined.\");\n    }\n}\n\nexport function assertNonNull<T>(val: T, message?: string): asserts val is Exclude<T, null> {\n    if (val === null) {\n        throw new Error(message ?? \"Expected value to be non-null but got null.\");\n    }\n}\n\nexport function assertString(val: unknown, message?: string): asserts val is string {\n    if (typeof val !== \"string\") {\n        throw new Error(message ?? `Expected value to be a string but got ${typeof val}.`);\n    }\n}\n\nexport function assertNever(x: never): never {\n    throw new Error(\"Unexpected value: \" + JSON.stringify(x));\n}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertNeverNoThrow(_: never): void {}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertVoidNoThrow(_x: void): void {}\n","export function keys<T extends object>(object: T): (keyof T)[] {\n    return Object.keys(object) as (keyof T)[];\n}\n","export { AbstractAstNode } from \"./AbstractAstNode.js\";\nexport { AbstractFormatter, NopFormatter } from \"./AbstractFormatter.js\";\nexport { AbstractWriter } from \"./AbstractWriter.js\";\nexport {\n    type Argument,\n    type Arguments,\n    hasNamedArgument,\n    isNamedArgument,\n    type NamedArgument,\n    type UnnamedArgument\n} from \"./Argument.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Ternary } from \"./Ternary.js\";\n","import { tag } from \"../utils/stacktrace.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport abstract class AbstractAstNode {\n    /**\n     * Every AST node knows how to write itself to a string.\n     */\n    public abstract write(writer: AbstractWriter): void;\n\n    public constructor() {\n        // when FERN_STACK_TRACK is defined this will track the stack trace of the current AstNode.\n        // otherwise this has absolutely no effect whatsoever.\n        tag(this);\n    }\n}\n","/**\n * Global flag that enables or disables stack tracing functionality throughout the application.\n * This is controlled via the FERN_STACK_TRACK environment variable.\n *\n * When enabled (truthy environment variable value), stack traces will be captured and processed\n * by the stacktrace functions in this module. When disabled, the stacktrace() function returns\n * an empty array for performance optimization.\n *\n * @example\n * // Enable tracing by setting the environment variable\n * // FERN_STACK_TRACK=1 <cmdline>\n */\nconst key = process.env[\"FERN_STACK_TRACK\"]?.toLowerCase() ?? \"\";\n\nexport const enableStackTracking = key !== \"\" && key !== \"0\" && key !== \"false\";\n\n/** The style of comments desired for the stack tracking comments\n *\n * can be \"single\", \"multiline\", or \"box\".\n * if not set to one of those, defaults to \"single\".\n */\nexport const trackingType = [\"single\", \"multiline\", \"box\"].includes(key) ? key : \"single\";\n\nif (enableStackTracking) {\n    // we're going to put a hard max limit on the stack trace to prevent infinite recursion and excessive stack generation\n    Error.stackTraceLimit = 50;\n}\n\n/**\n * Configuration options for controlling stack trace capture and filtering behavior.\n */\ninterface StackTraceOptions {\n    /**\n     * Maximum number of stack frames to return after filtering.\n     *\n     * Maximum may never exceed 50.\n     * @default 50\n     */\n    maxFrames?: number;\n\n    /**\n     * Number of frames to skip from the beginning of the filtered stack trace.\n     * Useful for omitting wrapper functions from the output.\n     * @default 0\n     */\n    skip?: number;\n\n    /**\n     * Array of function name substrings that trigger an early stop when encountered.\n     * When a frame's function name includes any of these strings, that frame and all\n     * subsequent frames will be excluded from the output.\n     *\n     * implicitly includes \"runInteractiveTask\"\n     * @default []\n     */\n    stopOn?: string[];\n\n    /**\n     * Array of file path substrings to filter out. Any frame whose path contains\n     * any of these strings will be excluded from the output.\n     * @default []\n     */\n    filterPaths?: string[];\n\n    /**\n     * Array of function name substrings to filter out. Any frame whose function name\n     * contains any of these strings will be excluded from the output.\n     *\n     * implicitly includes \"SdkGeneratorCLI\", \"runCli\",\"Frames.trace\",\"Frames.tag\", \"at\", \"stacktrace\"\n     * @default []\n     */\n    filterFunctions?: string[];\n\n    /**\n     * Whether to filter out Node.js internal frames (paths starting with \"node:\").\n     * @default true\n     */\n    filterNode?: boolean;\n\n    /**\n     * Whether to filter out .js files, which typically indicate non-source files\n     * without source map information.\n     * @default true\n     */\n    filterJs?: boolean;\n\n    /**\n     * A function to format the file path of the stack trace frame.\n     * @default (filename) => filename\n     */\n    formatFilename?: (filename: string) => string;\n}\n\n/**\n * Represents a single parsed stack trace frame containing function, file path, and position information.\n */\nexport interface StackTraceFrame {\n    /**\n     * The function name or context. May include special formatting like \"alias()=> { ... }\"\n     * for certain Object methods, or be an empty string for anonymous contexts.\n     */\n    fn: string;\n\n    /**\n     * The file path where this frame originated. This will typically be the full path\n     * to the source file.\n     */\n    path: string;\n\n    /**\n     * The line and column position in the format \"line:column\" (e.g., \"42:13\").\n     */\n    position: string;\n}\n\nconst globalFunctionFilters = new Set<string>([\"SdkGeneratorCLI\", \"runCli\", \"LoggerImpl\", \"Array.forEach\"]);\nconst globalFileFilters = new Set<string>([\"stacktrace\"]);\n\n/**\n * Adds a function name to the global function filters for stack traces\n * @param filter - The function name to add to the global function filters.\n */\nexport function addGlobalFunctionFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFunctionFilters.add(filter);\n    }\n}\n\n/**\n * Adds a file path to the global file filters for stack traces.\n * @param filter - The file path to add to the global file filters.\n */\nexport function addGlobalFileFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFileFilters.add(filter);\n    }\n}\n\n/**\n * Captures and parses the current call stack, returning an array of stack frames with filtering options.\n *\n * This function creates a new Error object to capture the stack trace, then parses each frame\n * to extract function names, file paths, and positions. It applies multiple filtering strategies\n * to exclude unwanted frames (e.g., Node.js internals, .js files, specific functions).\n *\n * The function only operates when `enableStackTracking` is true. If tracing is disabled, it returns\n * an empty array for performance optimization.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns Array of parsed stack trace frames, filtered and limited according to the options\n *\n * @example\n * // Capture the first 10 frames, skipping the first 2\n * const frames = stacktrace({ maxFrames: 10, skip: 2 });\n *\n * @example\n * // Capture frames until hitting \"main\" function, filter out test files\n * const frames = stacktrace({\n *   stopOn: [\"main\"],\n *   filterPaths: [\"/test/\"],\n *   filterFunctions: [\"runTests\"]\n * });\n *\n * @remarks\n * The function applies filters in the following order:\n * 1. Parses each stack frame using regex to extract function, path, line, and column\n * 2. Applies early-stop logic when encountering functions in the `stopOn` array\n * 3. Formats special function names (e.g., \"Object.alias\" → \"alias()=> { ... }\")\n * 4. Filters out:\n *    - The stacktrace function itself (\"at\", \"stacktrace\")\n *    - Functions matching `filterFunctions` (substring match)\n *    - Node.js internal frames (if `filterNode` is true)\n *    - .js files (if `filterJs` is true)\n *    - Paths matching `filterPaths` (substring match)\n * 5. Applies `skip` and `maxFrames` to limit the output\n */\nexport function stacktrace({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    formatFilename = (filename) => filename\n}: StackTraceOptions = {}): StackTraceFrame[] {\n    if (!enableStackTracking) {\n        return [];\n    }\n    filterFunctions = [...filterFunctions, ...globalFunctionFilters];\n    filterPaths = [...filterPaths, ...globalFileFilters];\n    stopOn = [...stopOn, \"runInteractiveTask\"];\n    let stop = false;\n    return (\n        (new Error().stack ?? \"\")\n            .split(\"\\n\")\n            .map((line) => {\n                const match = line.match(/at\\s+(.*)\\s+\\((.*):(\\d+):(\\d+)\\)/);\n                if (match && match.length === 5) {\n                    let [, fn, path, line, column] = match;\n                    if (!fn || !path || !line || !column) {\n                        return undefined;\n                    }\n\n                    if (stop || stopOn.some((s) => fn?.includes(s))) {\n                        stop = true;\n                        return undefined;\n                    }\n\n                    switch (fn) {\n                        case \"Object.<anonymous>\":\n                            fn = \"\";\n                            break;\n                        case \"Object.object\":\n                        case \"Object.alias\":\n                        case \"Object.union\":\n                        case \"Object.enum\":\n                        case \"Object.undiscriminatedUnion\":\n                            fn = `${fn.substring(fn.indexOf(\".\") + 1)}()=> { ... }`;\n                            break;\n                    }\n                    return {\n                        fn,\n                        path: formatFilename(path),\n                        position: `${line}:${column}`\n                    } as StackTraceFrame;\n                }\n                return undefined;\n            })\n            .filter(\n                (each) =>\n                    each &&\n                    !filterFunctions.some((f) => each.fn.includes(f)) && // substring match for filter functions\n                    !(filterNode && each.path?.startsWith(\"node:\")) && // starts with node:\n                    !(filterJs && each.path?.endsWith(\".js\")) && // ends with .js (meaning likely not a source file - no source map info)\n                    !filterPaths.some((p) => each.path.includes(p)) // substring match for filter paths\n            ) as StackTraceFrame[]\n    ).slice(skip, skip + maxFrames);\n}\n\n/**\n * Returns a formatted stack trace string at the current location for debugging purposes.\n *\n * This is a convenience function that wraps `stacktrace()` and formats the output as a\n * human-readable string. It's particularly useful for logging or debugging to understand\n * the execution flow and call hierarchy.\n *\n * The function supports both single-line and multi-line output formats. Single-line format\n * concatenates all frames into one line (useful for compact logging), while multi-line format\n * adds newlines and indentation for better readability.\n *\n * @param options - Configuration options for stack trace capture, filtering, and formatting\n * @param options.multiline - Whether to format the output with newlines and indentation.\n *                            When true, each frame is on its own line with 4-space indent.\n *                            When false (default), all frames are concatenated on one line.\n * @returns A formatted string containing the stack trace information, prefixed with \"stacktrace - \"\n *\n * @example\n * // Single-line format (compact)\n * console.log(at());\n * // Output: \"stacktrace - myFunction - /path/to/file.ts:42:13anotherFunc - /path/to/other.ts:17:5\"\n *\n * @example\n * // Multi-line format (readable)\n * console.log(at({ multiline: true, maxFrames: 5 }));\n * // Output:\n * // stacktrace -\n * //     myFunction - /path/to/file.ts:42:13\n * //     anotherFunc - /path/to/other.ts:17:5\n * //     main - /path/to/index.ts:10:1\n *\n * @example\n * // Custom filtering for specific use case\n * console.log(at({\n *   maxFrames: 10,\n *   skip: 1,\n *   filterPaths: [\"foo.ts\"],\n *   multiline: true\n * }));\n *\n * @remarks\n * This function automatically skips itself from the stack trace output by default.\n * The \"at\" function name is filtered by the underlying `stacktrace()` function.\n */\nexport function at({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [\"runInteractiveTask\"],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}): string {\n    return enableStackTracking\n        ? `${stacktrace({ maxFrames, skip, filterPaths, filterFunctions, stopOn, filterNode, filterJs, formatFilename })\n              .map((each) => `${multiline ? \"\\n    \" : \" > \"}${each.fn} - ${each.path}:${each.position}`)\n              .join(\"\")}`\n        : \"\";\n}\n\n/** This class allows the developer to attach stack trace information to objects  */\nexport class StackTraces {\n    private readonly maxFrames: number;\n    private readonly skip: number;\n    private readonly filterPaths: string[];\n    private readonly filterFunctions: string[];\n    private readonly stopOn: string[];\n    private readonly filterNode: boolean;\n    private readonly filterJs: boolean;\n    private readonly multiline: boolean;\n    private readonly formatFilename: (filename: string) => string;\n    private tracking = new WeakMap<object, Set<StackTraceFrame>>();\n\n    constructor({\n        maxFrames = 50,\n        skip = 0,\n        filterPaths = [],\n        filterFunctions = [],\n        stopOn = [],\n        filterNode = true,\n        filterJs = true,\n        multiline = false,\n        formatFilename = (filename) => filename\n    }: StackTraceOptions & { multiline?: boolean } = {}) {\n        this.maxFrames = maxFrames;\n        this.skip = skip;\n        this.filterPaths = filterPaths;\n        this.filterFunctions = filterFunctions;\n        this.stopOn = stopOn;\n        this.filterNode = filterNode;\n        this.filterJs = filterJs;\n        this.multiline = multiline;\n        this.formatFilename = formatFilename;\n    }\n\n    /**\n     * Tags the current stack trace with the given object.\n     *\n     * This can be called multiple times to add more stack trace information to the object.\n     *\n     * @param obj - The object to tag the stack trace with.\n     */\n    tag(obj: object): void {\n        const current = this.tracking.get(obj) || new Set<StackTraceFrame>();\n        stacktrace({\n            maxFrames: this.maxFrames,\n            skip: this.skip,\n            filterPaths: this.filterPaths,\n            filterFunctions: this.filterFunctions,\n            stopOn: this.stopOn,\n            filterNode: this.filterNode,\n            filterJs: this.filterJs,\n            formatFilename: this.formatFilename\n        }).forEach((frame) => current.add(frame));\n        this.tracking.set(obj, current);\n    }\n\n    /**\n     * Returns a formatted stack trace string for the given object.\n     * @param obj - The object to get the stack trace for.\n     * @returns A formatted string containing the stack trace information.\n     */\n    trace(obj: object): string {\n        if (!enableStackTracking) {\n            return \"\";\n        }\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return \"\";\n        }\n\n        return [...frames]\n            .map((each) => `${this.multiline ? \"\\n    \" : \"\"}${each.fn} - ${each.path}:${each.position}`)\n            .join(\"\");\n    }\n\n    /**\n     * Gets the stack trace frames for the given object.\n     *\n     * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n     *       Otherwise this will return an empty array.\n     *\n     * @param obj - The object to get the stack trace frames for.\n     * @returns The stack trace frames for the given object.\n     */\n    frames(obj: object): StackTraceFrame[] {\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return [];\n        }\n        return [...frames];\n    }\n\n    /**\n     * Frees the stack trace information for the given object.\n     * @param obj - The object to free the stack trace information for.\n     */\n    free(obj: object): void {\n        this.tracking.delete(obj);\n    }\n\n    /**\n     * Clears all stack trace information.\n     */\n    clear(): void {\n        this.tracking = new WeakMap<object, Set<StackTraceFrame>>();\n    }\n}\n\nlet stackTraces: StackTraces | undefined;\n/**\n * Starts tracking the stack trace of the current object.\n *\n * Note: This will only start tracking when FERN_STACK_TRACK is defined.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns The stack traces object.\n */\nexport function startTracking({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}) {\n    if (!enableStackTracking) {\n        return;\n    }\n    stackTraces ??= new StackTraces({\n        maxFrames,\n        skip,\n        filterPaths,\n        filterFunctions,\n        stopOn,\n        filterNode,\n        filterJs,\n        multiline,\n        formatFilename\n    });\n}\n\n/**\n * Tags the current stack trace with the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to tag the stack trace with.\n */\nexport function tag(obj: object) {\n    stackTraces?.tag(obj);\n}\n\n/**\n * Returns a formatted stack trace string for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to get the stack trace for.\n * @returns A formatted string containing the stack trace information.\n */\nexport function trace(obj: object) {\n    return stackTraces?.trace(obj) ?? \"\";\n}\n\n/**\n * Frees the stack trace information for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to free the stack trace information for.\n */\nexport function free(obj: object) {\n    stackTraces?.free(obj);\n}\n\n/**\n * Gets the stack trace frames for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will return an empty array.\n *\n * @param obj - The object to get the stack trace frames for.\n * @returns The stack trace frames for the given object.\n */\nexport function getFramesForTaggedObject(obj: object): StackTraceFrame[] {\n    return stackTraces?.frames(obj) ?? [];\n}\n","export abstract class AbstractFormatter {\n    abstract format(content: string): Promise<string>;\n    abstract formatSync(content: string): string;\n    formatMultiple(contents: string[]): Promise<string[]> {\n        return Promise.all(contents.map((content) => this.format(content)));\n    }\n    formatMultipleSync(contents: string[]): string[] {\n        return contents.map((content) => this.formatSync(content));\n    }\n}\n\nexport class NopFormatter extends AbstractFormatter {\n    public async format(content: string): Promise<string> {\n        return content;\n    }\n\n    public formatSync(content: string): string {\n        return content;\n    }\n}\n","import { enableStackTracking } from \"../utils/index.js\";\nimport {\n    getFramesForTaggedObject,\n    StackTraceFrame,\n    stacktrace,\n    startTracking,\n    trackingType\n} from \"../utils/stacktrace.js\";\nimport { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\n\nconst TAB_SIZE = 4;\n// this will start tracking only when FERN_STACK_TRACK is defined\n// otherwise this has absolutely no effect whatsoever.\nstartTracking({ skip: 0, maxFrames: 15, filterFunctions: [\"Abstract\"] });\n\nexport class AbstractWriter {\n    /* The buffer of lines being written */\n    protected readonly lineBuffer: string[] = [];\n\n    /* The contents being written */\n    public get buffer() {\n        if (enableStackTracking && this.nodeStackFrames.length > 0) {\n            // if we're emitting tracking comments, let's ensure we get the last little bit of info.\n            // by appending a newline to the buffer before returning it.\n            // (this can be useful when using toString() to get a node's content.)\n            this.writeInternal(\"\\n\");\n        }\n        return this.lineBuffer.join(\"\\n\") + (this.lastCharacterIsNewline ? \"\\n\" : \"\");\n    }\n\n    /* Indentation level (multiple of 4) */\n    private indentLevel = 0;\n    /* Whether anything has been written to the buffer */\n    private hasWrittenAnything = false;\n    /* Whether the last character written was a semi colon */\n    private lastCharacterIsSemicolon = false;\n    /* Whether the last character written was a newline */\n    private lastCharacterIsNewline = false;\n    /* The stack traces associated with the current node */\n    private nodeStackFrames: StackTraceFrame[] = [];\n\n    /**\n     * Writes arbitrary text and nodes\n     * @param text\n     */\n    public write(...parts: (string | AbstractAstNode | undefined)[]): void {\n        for (const text of parts) {\n            if (text != null) {\n                if (typeof text === \"string\") {\n                    const textEndsInNewline = text.length > 0 && text.endsWith(\"\\n\");\n                    // temporarily remove the trailing newline, since we don't want to add the indent prefix after it\n                    const textWithoutNewline = textEndsInNewline ? text.substring(0, text.length - 1) : text;\n\n                    const indent = this.getIndentString();\n                    let indentedText = textWithoutNewline.replaceAll(\"\\n\", `\\n${indent}`);\n                    if (this.isAtStartOfLine()) {\n                        indentedText = indent + indentedText;\n                    }\n                    if (textEndsInNewline) {\n                        indentedText += \"\\n\";\n                    }\n                    this.writeInternal(indentedText);\n                } else {\n                    this.writeNode(text);\n                }\n            }\n        }\n    }\n\n    public writeStatement(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...parts);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes arbitrary text without indentation\n     * @param text\n     */\n    public writeNoIndent(text: string): void {\n        const currIndentLevel = this.indentLevel;\n        this.indentLevel = 0;\n        this.write(text);\n        this.indentLevel = currIndentLevel;\n    }\n\n    /**\n     * Writes a node\n     * @param node\n     */\n    public writeNode(node: AbstractAstNode): void {\n        if (enableStackTracking) {\n            this.nodeStackFrames.push(...getFramesForTaggedObject(node));\n        }\n        node.write(this);\n\n        // if we're using box or multiline comments, write a newline after every node so it emits a comment for the node\n        // since we're dumping a lot of data anyway, might as well be explicit about it.\n        if (enableStackTracking && trackingType !== \"single\") {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    /**\n     * Writes a node or string\n     * @param input\n     */\n    public writeNodeOrString(input: AbstractAstNode | string): void {\n        if (typeof input === \"string\") {\n            this.write(input);\n            return;\n        }\n\n        this.writeNode(input);\n    }\n\n    /**\n     * Writes a node but then suffixes with a `;` and new line\n     * @param node\n     */\n    public writeNodeStatement(node: AbstractAstNode): void {\n        this.writeNode(node);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes text but then suffixes with a `;`\n     * @param node\n     */\n    public writeTextStatement(text: string): void {\n        const codeBlock = new CodeBlock(text);\n        codeBlock.write(this);\n        if (!text.endsWith(\";\")) {\n            this.write(\";\");\n        }\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlow(prefix: string, statement: AbstractAstNode): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlowWithoutStatement(prefix: string): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    /**\n     * Ends a control flow block\n     */\n    public endControlFlow(): void {\n        this.popScope();\n    }\n\n    /**\n     * Starts a control flow without a newline from the previous control flow block\n     * @param prefix\n     * @param statement\n     */\n    public contiguousControlFlow(prefix: string, statement: AbstractAstNode): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow alternative block\n     * @param prefix\n     */\n    public alternativeControlFlow(prefix: string): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    public pushScope() {\n        this.writeLine(\"{\");\n        this.indent();\n    }\n\n    public popScope(withNewline = true) {\n        this.dedent();\n        this.writeNewLineIfLastLineNot();\n        if (withNewline) {\n            this.writeLine(\"}\");\n        } else {\n            this.write(\"}\");\n        }\n    }\n\n    /* Only writes a newline if last line in the buffer is not a newline */\n    public writeLine(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...(parts.length === 0 ? [\"\"] : parts));\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /* Always writes newline */\n    public newLine(): void {\n        this.writeInternal(\"\\n\");\n    }\n\n    public writeSemicolonIfLastCharacterIsNot(): void {\n        if (!this.lastCharacterIsSemicolon) {\n            this.writeInternal(\";\");\n        }\n    }\n\n    public writeNewLineIfLastLineNot(): void {\n        if (!this.lastCharacterIsNewline) {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    public indent(): void {\n        this.indentLevel++;\n    }\n\n    public dedent(): void {\n        this.indentLevel--;\n    }\n\n    public delimit<T extends AbstractAstNode>({\n        nodes,\n        delimiter,\n        writeFunction\n    }: {\n        nodes: T[];\n        delimiter: string;\n        writeFunction: (node: T) => void;\n    }): void {\n        if (nodes.length > 0) {\n            const firstNode = nodes[0];\n            if (firstNode != null) {\n                writeFunction(firstNode);\n            }\n            for (let i = 1; i < nodes.length; i++) {\n                this.write(delimiter);\n                const node = nodes[i];\n                if (node != null) {\n                    writeFunction(node);\n                }\n            }\n        }\n    }\n\n    public toString(): string {\n        return this.buffer;\n    }\n\n    /*******************************\n     * Helper Methods\n     *******************************/\n    private writeInternal(text: string) {\n        if (text.length === 0) {\n            return;\n        }\n\n        const appendToLastLine = !this.lastCharacterIsNewline;\n\n        this.hasWrittenAnything = true;\n        this.lastCharacterIsNewline = text.endsWith(\"\\n\");\n        this.lastCharacterIsSemicolon = text.endsWith(\";\");\n\n        const lines = text.split(\"\\n\");\n\n        const appendTrackingComment =\n            enableStackTracking && !this.shouldSkipTracking(lines) && this.lastCharacterIsNewline;\n\n        if (appendToLastLine) {\n            this.lastLine = `${this.lastLine}${lines.shift() || \"\"}`;\n        }\n\n        if (this.lastCharacterIsNewline) {\n            lines.pop();\n        }\n\n        this.lineBuffer.push(...lines);\n\n        if (appendTrackingComment) {\n            this.appendTrackingComment();\n        }\n    }\n\n    /**\n     * Sets the last line of the buffer\n     * @param line - The line to set\n     */\n    protected set lastLine(line: string) {\n        if (this.lineBuffer.length > 0) {\n            this.lineBuffer[this.lineBuffer.length - 1] = line;\n        } else {\n            this.lineBuffer.push(line);\n        }\n    }\n\n    /**\n     * Gets the last line of the buffer\n     * @returns The last line of the buffer\n     */\n    protected get lastLine() {\n        return this.lineBuffer[this.lineBuffer.length - 1] || \"\";\n    }\n\n    /**\n     * Determines if the tracking comment should be skipped\n     * @param lines - The that are being written out\n     *\n     * @returns True if the tracking comment should be skipped\n     */\n    protected shouldSkipTracking(lines: string[]) {\n        return false;\n    }\n\n    /**\n     * Formats the stack trace frames into a string\n     * @param stack - The stack trace to format\n     * @param prefix - The prefix to add to the stack trace\n     * @returns The formatted stack trace\n     */\n    protected formatStack(stack: StackTraceFrame[], prefix = \"\") {\n        return stack.map((each) => `${prefix ? `(${prefix}) ` : \"\"} ${each.fn} - ${each.path} : ${each.position}`);\n    }\n\n    /**\n     * Filters out frames that start with the name of the current class\n     *\n     * This will filter out frames that start with the name of the current class that inherits from AbstractWriter.\n     *\n     * You can override this function to filter out more things.\n     * @param stack - The stack trace to filter\n     * @returns The filtered stack trace\n     */\n    protected filterStack(stack: StackTraceFrame[]) {\n        return stack.filter((each) => !each.fn.startsWith(`${this.constructor.name}.`));\n    }\n\n    /**\n     * Prepares the stack trace and calls the appropriate tracking comment formatter\n     */\n    protected appendTrackingComment() {\n        const stack = [\n            // adds the stack frames of the current function call\n            ...this.formatStack(this.filterStack(stacktrace({ maxFrames: 15, skip: 3 }))),\n\n            // adds the stack frames of any AstNodes that have been written since the last tracking comment\n            ...this.formatStack(this.filterStack(this.nodeStackFrames), \"node\")\n        ];\n        // reset the ast node stack frames\n        this.nodeStackFrames.length = 0;\n\n        switch (trackingType) {\n            case \"single\":\n                return this.singleLineTrackingComment(stack);\n\n            case \"multiline\":\n                return this.multiLineTrackingComment(stack);\n\n            case \"box\":\n                return this.boxTrackingComment(stack);\n        }\n    }\n\n    /**\n     * Creates a single line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected singleLineTrackingComment(stack: string[]) {\n        this.lastLine = `${this.lastLine} // ${stack.join(\" \")}`;\n    }\n    /**\n     * Creates a multi line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected multiLineTrackingComment(stack: string[]) {\n        this.lineBuffer.push(...stack.map((each) => `    // ${each}`));\n    }\n    /**\n     * Creates a box tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected boxTrackingComment(stack: string[]) {\n        this.lineBuffer.push(\"/*\", ...stack.map((each) => `    ${each}`), \"*/\");\n    }\n\n    private isAtStartOfLine(): boolean {\n        return this.lastCharacterIsNewline || !this.hasWrittenAnything;\n    }\n\n    private getIndentString(): string {\n        return \" \".repeat(this.indentLevel * this.getTabSize());\n    }\n\n    protected getTabSize(): number {\n        return TAB_SIZE;\n    }\n}\n","export { getPackageName } from \"./getPackageName.js\";\nexport { getSdkVersion } from \"./getSdkVersion.js\";\nexport {\n    addGlobalFileFilter,\n    addGlobalFunctionFilter,\n    at,\n    enableStackTracking,\n    getFramesForTaggedObject,\n    StackTraces,\n    stacktrace\n} from \"./stacktrace.js\";\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg<T extends AbstractWriter> = string | AbstractAstNode | ((writer: T) => void);\n}\n\nexport class CodeBlock<T extends AbstractWriter> extends AbstractAstNode {\n    private value: CodeBlock.Arg<T>;\n\n    constructor(value: CodeBlock.Arg<T>) {\n        super();\n        this.value = value;\n    }\n\n    public write(writer: T): void {\n        if (typeof this.value === \"string\") {\n            writer.write(this.value);\n            // if function\n        } else if (typeof this.value === \"function\") {\n            this.value(writer);\n        } else {\n            this.value.write(writer);\n        }\n    }\n}\n","export { AbstractDynamicSnippetsGenerator } from \"./AbstractDynamicSnippetsGenerator.js\";\nexport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nexport { type DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nexport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nexport { type Options, Style } from \"./Options.js\";\nexport { Result } from \"./Result.js\";\nexport { Scope } from \"./Scope.js\";\nexport { type TypeInstance } from \"./TypeInstance.js\";\nexport { DynamicSnippetsTestRunner } from \"./test-utils/DynamicSnippetsTestRunner.js\";\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { AbstractAstNode } from \"../ast/index.js\";\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { AbstractEndpointSnippetGenerator } from \"./AbstractEndpointSnippetGenerator.js\";\nimport { Options } from \"./Options.js\";\nimport { Result } from \"./Result.js\";\n\nexport abstract class AbstractDynamicSnippetsGenerator<\n    Context extends AbstractDynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator extends AbstractEndpointSnippetGenerator<Context>\n> {\n    public constructor(public readonly context: Context) {}\n\n    protected abstract createSnippetGenerator(context: Context): EndpointSnippetGenerator;\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = await snippetGenerator.generateSnippet({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<AbstractAstNode> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        let lastError: Error | undefined = undefined;\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const ast = await snippetGenerator.generateSnippetAst({ endpoint, request, options });\n                return ast;\n            } catch (error) {\n                lastError = error as Error;\n            }\n        }\n        if (lastError != null) {\n            throw lastError;\n        }\n        throw new Error(\n            `Failed to generate snippet AST for endpoint: ${request.endpoint.method} ${request.endpoint.path}`\n        );\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = snippetGenerator.generateSnippetSync({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    /**\n     * Resolves endpoints based on the request and options.\n     * If an endpointId is specified in options, returns only that specific endpoint.\n     * Otherwise, resolves all endpoints matching the endpoint location (method + path).\n     */\n    private resolveEndpoints({\n        request,\n        options\n    }: {\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): FernIr.dynamic.Endpoint[] {\n        if (options.endpointId != null) {\n            const endpoint = this.context.resolveEndpointById(options.endpointId);\n            if (endpoint == null) {\n                throw new Error(`No endpoint found with ID \"${options.endpointId}\"`);\n            }\n            return [endpoint];\n        }\n        return this.context.resolveEndpointLocationOrThrow(request.endpoint);\n    }\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { ErrorReporter } from \"./ErrorReporter.js\";\n\nexport class Result {\n    public reporter: ErrorReporter | undefined;\n    public snippet: string | undefined;\n    public err: Error | undefined;\n\n    constructor() {\n        this.snippet = undefined;\n        this.reporter = undefined;\n        this.err = undefined;\n    }\n\n    public update({ context, snippet }: { context: AbstractDynamicSnippetsGeneratorContext; snippet: string }): void {\n        if (this.shouldUpdate({ snippet, reporter: context.errors })) {\n            this.reporter = context.errors.clone();\n            this.snippet = snippet;\n        }\n    }\n\n    public getResponseOrThrow({\n        endpoint\n    }: {\n        endpoint: FernIr.dynamic.EndpointLocation;\n    }): FernIr.dynamic.EndpointSnippetResponse {\n        if (this.snippet != null && this.reporter != null) {\n            return {\n                snippet: this.snippet,\n                errors: this.reporter.toDynamicSnippetErrors()\n            };\n        }\n        throw this.err ?? new Error(`Failed to generate snippet for endpoint \"${endpoint.method} ${endpoint.path}\"`);\n    }\n\n    private shouldUpdate({ snippet, reporter }: { snippet: string; reporter: ErrorReporter }): boolean {\n        if (this.reporter == null || (this.reporter.size() > 0 && reporter.size() === 0)) {\n            return true;\n        }\n        return snippet.length > (this.snippet?.length ?? 0);\n    }\n}\n","import { assertNever, keys } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { HttpEndpointReferenceParser } from \"@fern-api/fern-definition-schema\";\n\nimport { FernGeneratorExec } from \"../GeneratorNotificationService.js\";\nimport { DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nimport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nimport { Options } from \"./Options.js\";\nimport { TypeInstance } from \"./TypeInstance.js\";\n\nexport abstract class AbstractDynamicSnippetsGeneratorContext {\n    public config: FernGeneratorExec.GeneratorConfig;\n    public options: Options;\n    public errors: ErrorReporter;\n\n    private _ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    private httpEndpointReferenceParser: HttpEndpointReferenceParser;\n\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        this._ir = ir;\n        this.config = config;\n        this.options = options;\n        this.errors = new ErrorReporter();\n        this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n    }\n\n    public abstract clone(): AbstractDynamicSnippetsGeneratorContext;\n\n    public associateQueryParametersByWireValue({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    throw this.newParameterNotRecognizedError(key);\n                }\n                // If this query parameter supports allow-multiple, the user-provided values\n                // must be wrapped in an array.\n                const typeInstanceValue =\n                    this.isListTypeReference(parameter.typeReference) && !Array.isArray(value) ? [value] : value;\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value: typeInstanceValue\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    public associateByWireValueOrDefault({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            this.errors.scope(parameter.name.wireValue);\n            try {\n                let value = values[parameter.name.wireValue];\n\n                if (value == null) {\n                    if (parameter.typeReference.type === \"primitive\" && parameter.typeReference.value === \"STRING\") {\n                        // synthesize a parameter value for string parameters that are missing data\n                        value = `<${parameter.name.wireValue}>`;\n                    } else {\n                        this.errors.add({\n                            severity: Severity.Critical,\n                            message: this.newParameterNotRecognizedError(parameter.name.wireValue).message\n                        });\n                        continue;\n                    }\n                }\n\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n\n        return instances;\n    }\n\n    public associateByWireValue({\n        parameters,\n        values,\n        ignoreMissingParameters\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n        ignoreMissingParameters?: boolean;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    if (ignoreMissingParameters) {\n                        // Required for request payloads that include more information than\n                        // just the target parameters (e.g. union base properties).\n                        continue;\n                    }\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: this.newParameterNotRecognizedError(key).message\n                    });\n                    continue;\n                }\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    /**\n     * Similar to `associateByWireValue` but it builds TypeInstance objects by iterating over schema parameters rather\n     * than snippet values. Skips non-nullable parameters that are missing from the snippet object.\n     */\n    public getExampleObjectProperties({\n        parameters,\n        snippetObject\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        snippetObject: unknown;\n    }): TypeInstance[] {\n        const objectRecord = (\n            typeof snippetObject === \"object\" && snippetObject !== null && !Array.isArray(snippetObject)\n                ? snippetObject\n                : {}\n        ) as Record<string, unknown>;\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            const value = objectRecord[parameter.name.wireValue];\n            if (value == null) {\n                if (parameter.typeReference.type === \"nullable\") {\n                    instances.push({\n                        name: parameter.name,\n                        typeReference: parameter.typeReference,\n                        value: null\n                    });\n                }\n            } else {\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            }\n        }\n        return instances;\n    }\n\n    public getSingleFileValue({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): string | undefined {\n        const fileValue = record[property.wireValue];\n        if (fileValue == null) {\n            return undefined;\n        }\n        if (typeof fileValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file value to be a string, got ${typeof fileValue}`\n            });\n            return undefined;\n        }\n        return fileValue;\n    }\n\n    public getFileArrayValues({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): string[] | undefined {\n        const fileArrayValue = record[property.wireValue];\n        if (fileArrayValue == null) {\n            return undefined;\n        }\n        if (!Array.isArray(fileArrayValue)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file array value to be an array of strings, got ${typeof fileArrayValue}`\n            });\n            return undefined;\n        }\n        const stringValues: string[] = [];\n        for (const value of fileArrayValue) {\n            if (typeof value !== \"string\") {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message: `Expected file array value to be an array of strings, got ${typeof value}`\n                });\n                return undefined;\n            }\n            stringValues.push(value);\n        }\n        return stringValues;\n    }\n\n    public getRecord(value: unknown): Record<string, unknown> | undefined {\n        if (typeof value !== \"object\" || Array.isArray(value)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object with key, value pairs but got: ${\n                    Array.isArray(value) ? \"array\" : typeof value\n                }`\n            });\n            return undefined;\n        }\n        if (value == null) {\n            return {};\n        }\n        return value as Record<string, unknown>;\n    }\n\n    public resolveNamedType({ typeId }: { typeId: FernIr.dynamic.TypeId }): FernIr.dynamic.NamedType | undefined {\n        const namedType = this._ir.types[typeId];\n        if (namedType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Type identified by \"${typeId}\" could not be found`\n            });\n            return undefined;\n        }\n        return namedType;\n    }\n\n    public resolveDiscriminatedUnionTypeInstance({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): DiscriminatedUnionTypeInstance | undefined {\n        const record = this.getRecord(value);\n        if (record == null) {\n            return undefined;\n        }\n\n        const discriminantFieldName = discriminatedUnion.discriminant.wireValue;\n        const discriminantValue = record[discriminantFieldName];\n        if (discriminantValue == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newParameterNotRecognizedError(discriminantFieldName).message\n            });\n            return undefined;\n        }\n        if (typeof discriminantValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected discriminant value to be a string but got: ${typeof discriminantValue}`\n            });\n            return undefined;\n        }\n\n        const singleDiscriminatedUnionType = discriminatedUnion.types[discriminantValue];\n        if (singleDiscriminatedUnionType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `No type found for discriminant value \"${discriminantValue}\"`\n            });\n            return undefined;\n        }\n\n        // Remove the discriminant from the record so that the value is valid for the type.\n        const { [discriminantFieldName]: _, ...filtered } = record;\n\n        return {\n            singleDiscriminatedUnionType,\n            discriminantValue: singleDiscriminatedUnionType.discriminantValue,\n            value: filtered\n        };\n    }\n\n    public resolveEndpointOrThrow(rawEndpoint: string): FernIr.dynamic.Endpoint[] {\n        const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(rawEndpoint);\n        if (parsedEndpoint == null) {\n            throw new Error(`Failed to parse endpoint reference \"${rawEndpoint}\"`);\n        }\n        return this.resolveEndpointLocationOrThrow(parsedEndpoint);\n    }\n\n    public resolveEndpointLocation(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints: FernIr.dynamic.Endpoint[] = [];\n        for (const endpoint of Object.values(this._ir.endpoints)) {\n            if (this.parsedEndpointMatches({ endpoint, parsedEndpoint: location })) {\n                endpoints.push(endpoint);\n            }\n        }\n\n        return endpoints;\n    }\n\n    public resolveEndpointLocationOrThrow(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints = this.resolveEndpointLocation(location);\n        if (endpoints.length === 0) {\n            throw new Error(`Failed to find endpoint identified by \"${location.method} ${location.path}\"`);\n        }\n        return endpoints;\n    }\n\n    public resolveEndpointById(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint | undefined {\n        return this._ir.endpoints[endpointId];\n    }\n\n    public resolveEndpointByIdOrThrow(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint {\n        const endpoint = this.resolveEndpointById(endpointId);\n        if (endpoint == null) {\n            throw new Error(`Failed to find endpoint with ID \"${endpointId}\"`);\n        }\n        return endpoint;\n    }\n\n    public needsRequestParameter({\n        request,\n        inlinePathParameters,\n        inlineFileProperties\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n        inlineFileProperties: boolean;\n    }): boolean {\n        if (this.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n            return true;\n        }\n        if (request.queryParameters != null && request.queryParameters.length > 0) {\n            return true;\n        }\n        if (request.headers != null && request.headers.length > 0) {\n            return true;\n        }\n        if (request.body != null) {\n            return this.includeRequestBodyInWrappedRequest({ body: request.body, inlineFileProperties });\n        }\n        if (request.metadata?.onlyPathParameters) {\n            return false;\n        }\n        return true;\n    }\n\n    public includePathParametersInWrappedRequest({\n        request,\n        inlinePathParameters\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n    }): boolean {\n        return inlinePathParameters && (request.metadata?.includePathParameters ?? false);\n    }\n\n    public isFileUploadRequestBody(\n        body: FernIr.dynamic.InlinedRequestBody\n    ): body is FernIr.dynamic.InlinedRequestBody.FileUpload {\n        switch (body.type) {\n            case \"fileUpload\":\n                return true;\n            case \"properties\":\n            case \"referenced\":\n                return false;\n            default:\n                assertNever(body);\n        }\n    }\n\n    public resolveEnvironmentName(environmentID: string): FernIr.Name | undefined {\n        if (this._ir.environments == null) {\n            return undefined;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            case \"multipleBaseUrls\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            default:\n                assertNever(environments);\n        }\n    }\n\n    public isSingleEnvironmentID(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.EnvironmentId {\n        return typeof environment === \"string\";\n    }\n\n    public isMultiEnvironmentValues(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n        return typeof environment === \"object\";\n    }\n\n    public validateMultiEnvironmentUrlValues(\n        multiEnvironmentUrlValues: FernIr.dynamic.MultipleEnvironmentUrlValues\n    ): boolean {\n        if (this._ir.environments == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message:\n                    \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n            });\n            return false;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message:\n                        \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n                });\n                return false;\n            }\n            case \"multipleBaseUrls\": {\n                const firstEnvironment = environments.environments[0];\n                if (firstEnvironment == null) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Multiple environments are not supported; use the baseUrl option instead\"\n                    });\n                    return false;\n                }\n                const expectedKeys = new Set(keys(firstEnvironment.urls));\n                for (const key of keys(multiEnvironmentUrlValues)) {\n                    if (expectedKeys.has(key)) {\n                        expectedKeys.delete(key);\n                    }\n                }\n                if (expectedKeys.size > 0) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: `The provided environments are invalid; got: [${Object.keys(multiEnvironmentUrlValues).join(\", \")}], expected: [${keys(firstEnvironment.urls).join(\", \")}]`\n                    });\n                    return false;\n                }\n                return true;\n            }\n        }\n    }\n\n    public getValueAsNumber({ value }: { value: unknown }): number | undefined {\n        if (typeof value !== \"number\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"number\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsBoolean({ value }: { value: unknown }): boolean | undefined {\n        if (typeof value !== \"boolean\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"boolean\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsString({ value }: { value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"string\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return this.isOptional(typeReference.value);\n            case \"optional\":\n                return true;\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public isNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return true;\n            case \"optional\":\n                return this.isNullable(typeReference.value);\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public newAuthMismatchError({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): Error {\n        return new Error(`Expected auth type ${auth.type}, got ${values.type}`);\n    }\n\n    public newParameterNotRecognizedError(parameterName: string): Error {\n        return new Error(`\"${parameterName}\" is not a recognized parameter for this endpoint`);\n    }\n\n    public newTypeMismatchError({ expected, value }: { expected: string; value: unknown }): Error {\n        return new Error(`Expected ${expected}, got ${typeof value}`);\n    }\n\n    private includeRequestBodyInWrappedRequest({\n        body,\n        inlineFileProperties\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        switch (body.type) {\n            case \"properties\":\n            case \"referenced\":\n                return true;\n            case \"fileUpload\":\n                return this.includeFileUploadBodyInWrappedRequest({ fileUpload: body, inlineFileProperties });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private includeFileUploadBodyInWrappedRequest({\n        fileUpload,\n        inlineFileProperties\n    }: {\n        fileUpload: FernIr.dynamic.FileUploadRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        return (\n            this.fileUploadHasBodyProperties({ fileUpload }) ||\n            (inlineFileProperties && this.fileUploadHasFileProperties({ fileUpload }))\n        );\n    }\n\n    private fileUploadHasBodyProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return false;\n                case \"bodyProperty\":\n                    return true;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private fileUploadHasFileProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return true;\n                case \"bodyProperty\":\n                    return false;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private isListTypeReference(typeReference: FernIr.dynamic.TypeReference): boolean {\n        if (typeReference.type === \"optional\") {\n            return this.isListTypeReference(typeReference.value);\n        }\n        return typeReference.type === \"list\" || typeReference.type === \"set\";\n    }\n\n    private parsedEndpointMatches({\n        endpoint,\n        parsedEndpoint\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        parsedEndpoint: { method: string; path: string; namespace?: string };\n    }): boolean {\n        return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n    }\n}\n","export { EXAMPLE_REFERENCE_PREFIX, YAML_SCHEMA_VERSION } from \"./constants.js\";\nexport { type NodePath, type NodePathItem } from \"./NodePath.js\";\nexport * as RawSchemas from \"./schemas/index.js\";\nexport { type DefinitionFileSchema, type PackageMarkerFileSchema, type RootApiFileSchema } from \"./schemas/index.js\";\nexport * from \"./utils/auth/index.js\";\nexport * from \"./utils/generics/index.js\";\nexport { getRequestBody } from \"./utils/getRequestBody.js\";\nexport { getResponseBodyType } from \"./utils/getResponseBodyType.js\";\nexport { HttpEndpointReferenceParser } from \"./utils/HttpEndpointReferenceParser.js\";\nexport { isInlineRequestBody } from \"./utils/isInlineRequestBody.js\";\nexport { isOpenApiSourceSchema } from \"./utils/isOpenApiSourceSchema.js\";\nexport { isRawProtobufSourceSchema } from \"./utils/isRawProtobufSourceSchema.js\";\nexport { isRawTextType } from \"./utils/isRawTextType.js\";\nexport { type BytesRequest, parseBytesRequest } from \"./utils/parseBytesRequest.js\";\nexport { parseFileUploadRequest, type RawFileUploadRequest } from \"./utils/parseFileUploadRequest.js\";\nexport { parseRawBytesType, type RawBytesType } from \"./utils/parseRawBytesType.js\";\nexport { parseRawFileType, type RawFileType } from \"./utils/parseRawFileType.js\";\nexport { parseRawTextType, type RawTextType } from \"./utils/parseRawTextType.js\";\nexport { RawPrimitiveType } from \"./utils/RawPrimitiveType.js\";\nexport { recursivelyVisitRawTypeReference } from \"./utils/recursivelyVisitRawTypeReference.js\";\nexport { visitExampleCodeSampleSchema } from \"./utils/visitExampleCodeSampleSchema.js\";\nexport { type ExampleResponseSchemaVisitor, visitExampleResponseSchema } from \"./utils/visitExampleResponseSchema.js\";\nexport {\n    isAnyAuthSchemes,\n    isSingleAuthScheme,\n    type RawApiAuthVisitor,\n    visitRawApiAuth\n} from \"./utils/visitRawApiAuth.js\";\nexport {\n    type AuthSchemeDeclarationVisitor,\n    isHeaderAuthScheme,\n    visitRawAuthSchemeDeclaration\n} from \"./utils/visitRawAuthSchemeDeclaration.js\";\nexport {\n    isRawMultipleBaseUrlsEnvironment,\n    isRawSingleBaseUrlEnvironment,\n    visitRawEnvironmentDeclaration\n} from \"./utils/visitRawEnvironmentDeclaration.js\";\nexport {\n    isVariablePathParameter,\n    type PathParameterDeclarationVisitor,\n    visitRawPathParameter\n} from \"./utils/visitRawPathParameter.js\";\nexport {\n    isRawAliasDefinition,\n    isRawDiscriminatedUnionDefinition,\n    isRawEnumDefinition,\n    isRawObjectDefinition,\n    isRawUndiscriminatedUnionDefinition,\n    type RawTypeDeclarationVisitor,\n    visitRawTypeDeclaration\n} from \"./utils/visitRawTypeDeclaration.js\";\nexport { FernContainerRegex, visitRawTypeReference } from \"./utils/visitRawTypeReference.js\";\n","export declare namespace HttpEndpointReferenceParser {\n    interface Parsed {\n        path: string;\n        method: Method;\n        namespace: string | undefined;\n    }\n\n    type Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\";\n\n    export type ValidationResult = Valid | Invalid;\n\n    interface Valid {\n        type: \"valid\";\n    }\n\n    interface Invalid {\n        type: \"invalid\";\n    }\n}\n\n/**\n * Parses an HTTP endpoint reference like `POST /users/get` or `namespace::POST /users/get`\n */\nexport class HttpEndpointReferenceParser {\n    //eslint-disable-next-line\n    private REFERENCE_REGEX = /^(?:(\\w+)::)?(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n\n    public validate(reference: string): HttpEndpointReferenceParser.ValidationResult {\n        const validFormat = this.REFERENCE_REGEX.test(reference);\n        if (!validFormat) {\n            return { type: \"invalid\" };\n        }\n        return { type: \"valid\" };\n    }\n\n    public tryParse(reference: string): HttpEndpointReferenceParser.Parsed | undefined {\n        const validationResponse = this.validate(reference);\n        if (validationResponse.type === \"invalid\") {\n            return undefined;\n        }\n        const match = reference.match(this.REFERENCE_REGEX);\n        if (match == null || match[2] == null || match[3] == null) {\n            return undefined;\n        }\n        return {\n            namespace: match[1], // undefined if no namespace prefix\n            method: match[2] as HttpEndpointReferenceParser.Method,\n            path: match[3]\n        };\n    }\n}\n","export const Severity = {\n    Critical: \"CRITICAL\",\n    Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n    type Path = readonly PathItem[];\n\n    type PathItem = string | ArrayPathItem;\n\n    type Severity = (typeof Severity)[keyof typeof Severity];\n\n    interface ArrayPathItem {\n        index: number;\n    }\n\n    interface Error {\n        path?: Path;\n        severity: Severity;\n        message: string;\n    }\n}\n\ninterface Error_ {\n    severity: \"CRITICAL\" | \"WARNING\";\n    path: string[] | undefined;\n    message: string;\n}\n\nexport class ErrorReporter {\n    private errors: ErrorReporter.Error[];\n    private path: ErrorReporter.PathItem[];\n\n    constructor() {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n        this.errors.push({\n            ...err,\n            path: [...this.path]\n        });\n    }\n\n    public scope(path: ErrorReporter.PathItem): void {\n        this.path.push(path);\n    }\n\n    public unscope(): void {\n        this.path.pop();\n    }\n\n    public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n        return this.errors.filter((err) => err.severity === severity);\n    }\n\n    public empty(): boolean {\n        return this.errors.length === 0;\n    }\n\n    public size(): number {\n        return this.errors.length;\n    }\n\n    public truncate(size: number): void {\n        this.errors.length = size;\n    }\n\n    public clone(): ErrorReporter {\n        const clone = new ErrorReporter();\n        clone.errors = [...this.errors];\n        clone.path = [...this.path];\n        return clone;\n    }\n\n    public reset(): void {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public toDynamicSnippetErrors(): Error_[] {\n        return this.errors.map((err) => ({\n            severity: err.severity,\n            path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n            message: err.message\n        }));\n    }\n\n    private pathToStringArray(path: ErrorReporter.Path): string[] {\n        const result: string[] = [];\n        for (const item of path) {\n            if (typeof item === \"string\") {\n                result.push(item);\n                continue;\n            }\n            result[result.length - 1] += `[${item.index}]`;\n        }\n        return result;\n    }\n}\n","export const Scope = {\n    PathParameters: \"pathParameters\",\n    QueryParameters: \"queryParameters\",\n    Headers: \"headers\",\n    RequestBody: \"requestBody\"\n} as const;\n\nexport type Scope = (typeof Scope)[keyof typeof Scope];\n","export { AbsoluteFilePath } from \"./AbsoluteFilePath.js\";\nexport { basename } from \"./basename.js\";\nexport { convertToOsPath } from \"./convertToOsPath.js\";\nexport { dirname } from \"./dirname.js\";\nexport { isAbsolute } from \"./isAbsolute.js\";\nexport { join } from \"./join.js\";\nexport { RelativeFilePath } from \"./RelativeFilePath.js\";\nexport { relative } from \"./relative.js\";\nexport { sep } from \"./sep.js\";\n","export function basename(path: string, options?: { stripExtension?: boolean }): string {\n    const basename = path.split(\"/\").pop() ?? path;\n    if (options?.stripExtension) {\n        return basename.split(\".\")[0] ?? basename;\n    }\n    return basename;\n}\n","import {\n    AbstractDynamicSnippetsGeneratorContext,\n    type FernGeneratorExec\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport type { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { type BaseGoCustomConfigSchema, go, goExportedFieldName, resolveRootImportPath } from \"@fern-api/go-ast\";\n\nimport { DynamicTypeInstantiationMapper } from \"./DynamicTypeInstantiationMapper.js\";\nimport { DynamicTypeMapper } from \"./DynamicTypeMapper.js\";\nimport { FilePropertyMapper } from \"./FilePropertyMapper.js\";\n\nexport class DynamicSnippetsGeneratorContext extends AbstractDynamicSnippetsGeneratorContext {\n    public ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    public customConfig: BaseGoCustomConfigSchema | undefined;\n    public dynamicTypeMapper: DynamicTypeMapper;\n    public dynamicTypeInstantiationMapper: DynamicTypeInstantiationMapper;\n    public filePropertyMapper: FilePropertyMapper;\n    public rootImportPath: string;\n\n    constructor({\n        ir,\n        config\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n    }) {\n        super({ ir, config });\n        this.ir = ir;\n        this.customConfig = config.customConfig != null ? (config.customConfig as BaseGoCustomConfigSchema) : undefined;\n        this.dynamicTypeMapper = new DynamicTypeMapper({ context: this });\n        this.dynamicTypeInstantiationMapper = new DynamicTypeInstantiationMapper({ context: this });\n        this.filePropertyMapper = new FilePropertyMapper({ context: this });\n        this.rootImportPath = resolveRootImportPath({ config, customConfig: this.customConfig });\n    }\n\n    public clone(): DynamicSnippetsGeneratorContext {\n        return new DynamicSnippetsGeneratorContext({\n            ir: this.ir,\n            config: this.config\n        });\n    }\n\n    public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"optional\":\n            case \"map\":\n                return true;\n            case \"nullable\":\n            case \"list\":\n            case \"set\":\n                return this.isOptional(typeReference.value);\n            case \"named\":\n            case \"literal\":\n            case \"primitive\":\n            case \"unknown\":\n                return false;\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    public getMethodName(name: FernIr.Name): string {\n        return name.pascalCase.unsafeName;\n    }\n\n    public getTestMethodName(endpoint: FernIr.dynamic.Endpoint): string {\n        return (\n            endpoint.declaration.fernFilepath.allParts.map((name) => name.pascalCase.unsafeName).join(\"\") +\n            endpoint.declaration.name.pascalCase.unsafeName\n        );\n    }\n\n    public getTypeName(name: FernIr.Name): string {\n        return name.pascalCase.unsafeName;\n    }\n\n    public getFieldName(name: FernIr.Name): string {\n        return goExportedFieldName(name.pascalCase.unsafeName);\n    }\n\n    public getImportPath(fernFilepath: FernIr.dynamic.FernFilepath): string {\n        const parts = fernFilepath.packagePath.map((path) => path.camelCase.safeName.toLowerCase());\n        return [this.rootImportPath, ...parts].join(\"/\");\n    }\n\n    public getImportPathForRequest(fernFilepath: FernIr.dynamic.FernFilepath): string {\n        if (this.customConfig?.exportAllRequestsAtRoot) {\n            return this.rootImportPath;\n        }\n        return this.getImportPath(fernFilepath);\n    }\n\n    public getContextTypeReference(): go.TypeReference {\n        return go.typeReference({\n            name: \"Context\",\n            importPath: \"context\"\n        });\n    }\n\n    public getContextTodoFunctionInvocation(): go.FuncInvocation {\n        return go.invokeFunc({\n            func: go.typeReference({\n                name: \"TODO\",\n                importPath: \"context\"\n            }),\n            arguments_: []\n        });\n    }\n\n    public getIoReaderTypeReference(): go.TypeReference {\n        return go.typeReference({\n            name: \"Reader\",\n            importPath: \"io\"\n        });\n    }\n\n    public getTestingTypeReference(): go.TypeReference {\n        return go.typeReference({\n            name: \"T\",\n            importPath: \"testing\"\n        });\n    }\n\n    public getNewStringsReaderFunctionInvocation(s: string): go.FuncInvocation {\n        return go.invokeFunc({\n            func: go.typeReference({\n                name: \"NewReader\",\n                importPath: \"strings\"\n            }),\n            arguments_: [go.TypeInstantiation.string(s)]\n        });\n    }\n\n    public getClientConstructorName(): string {\n        if (this.customConfig?.clientConstructorName != null) {\n            return this.customConfig.clientConstructorName;\n        }\n        if (this.customConfig?.exportedClientName != null) {\n            return `New${this.customConfig.exportedClientName}`;\n        }\n        return `New${this.getClientName()}`;\n    }\n\n    public getClientName(): string {\n        if (this.customConfig?.clientName != null) {\n            return this.customConfig.clientName;\n        }\n        return \"Client\";\n    }\n\n    public getClientImportPath(): string {\n        return `${this.rootImportPath}/client`;\n    }\n\n    public getOptionImportPath(): string {\n        return `${this.rootImportPath}/option`;\n    }\n\n    public getGoTypeReferenceFromDeclaration({\n        declaration\n    }: {\n        declaration: FernIr.dynamic.Declaration;\n    }): go.TypeReference {\n        return go.typeReference({\n            name: declaration.name.pascalCase.unsafeName,\n            importPath: this.getImportPath(declaration.fernFilepath)\n        });\n    }\n\n    public getEnvironmentTypeReferenceFromID(environmentID: string): go.TypeReference | undefined {\n        const environmentName = this.resolveEnvironmentName(environmentID);\n        if (environmentName == null) {\n            return undefined;\n        }\n        return this.getEnvironmentTypeReference(environmentName);\n    }\n\n    private getEnvironmentTypeReference(name: FernIr.Name): go.TypeReference {\n        return go.typeReference({\n            name: `Environments.${this.getTypeName(name)}`,\n            importPath: this.rootImportPath\n        });\n    }\n\n    public static chainMethods(\n        baseFunc: go.FuncInvocation,\n        ...methods: Omit<go.MethodInvocation.Args, \"on\">[]\n    ): go.MethodInvocation {\n        if (methods.length === 0) {\n            throw new Error(\"Must have methods to chain\");\n        }\n\n        let current: go.AstNode = baseFunc;\n        for (const method of methods) {\n            current = go.invokeMethod({\n                on: current,\n                method: method.method,\n                arguments_: method.arguments_,\n                multiline: method.multiline\n            });\n        }\n        return current as go.MethodInvocation;\n    }\n}\n","export { GoFile } from \"./ast/core/GoFile.js\";\nexport { type BaseGoCustomConfigSchema, baseGoCustomConfigSchema } from \"./custom-config/BaseGoCustomConfigSchema.js\";\nexport { defaultBaseGoCustomConfigSchema } from \"./custom-config/DefaultBaseGoCustomConfigSchema.js\";\nexport * as go from \"./go.js\";\nexport { goExportedFieldName } from \"./utils/goExportedFieldName.js\";\nexport { resolveRootImportPath, resolveRootModulePath } from \"./utils/resolveRootImportPath.js\";\n","import { Writer } from \"./Writer.js\";\n\nexport declare namespace GoFile {\n    interface Args extends Writer.Args {}\n}\n\nexport class GoFile extends Writer {\n    constructor({ packageName, rootImportPath, importPath, customConfig, formatter }: GoFile.Args) {\n        super({ packageName, rootImportPath, importPath, customConfig, formatter });\n    }\n\n    public async toStringAsync(): Promise<string> {\n        const content = this.getContent();\n        if (this.formatter != null) {\n            try {\n                return this.formatter.format(content);\n            } catch (error) {\n                throw new Error(`Failed to format Go file: ${error}\\n${content}`);\n            }\n        }\n        return content;\n    }\n\n    public toString(): string {\n        const content = this.getContent();\n        if (this.formatter != null) {\n            try {\n                return this.formatter.formatSync(content);\n            } catch (error) {\n                throw new Error(`Failed to format Go file: ${error}\\n${content}`);\n            }\n        }\n        return content;\n    }\n\n    private getContent(): string {\n        const packageStatement = `package ${this.packageName}\\n\\n`;\n        const imports = this.stringifyImports();\n        return imports.length > 0\n            ? `${packageStatement}${imports}\n\n${this.buffer}`\n            : packageStatement + this.buffer;\n    }\n\n    private stringifyImports(): string {\n        const entries = Object.entries(this.imports).filter(\n            ([importPath, _]) => importPath !== this.importPath // Skip the target import path\n        );\n\n        if (entries.length === 0) {\n            return \"\";\n        }\n\n        // Separate stdlib imports from third-party imports.\n        // Stdlib import paths do not contain a dot in the first path segment (e.g., \"fmt\", \"net/http\").\n        const stdlibImports: [string, string][] = [];\n        const thirdPartyImports: [string, string][] = [];\n        for (const entry of entries) {\n            const firstSegment = entry[0].split(\"/\")[0] ?? \"\";\n            if (firstSegment.includes(\".\")) {\n                thirdPartyImports.push(entry);\n            } else {\n                stdlibImports.push(entry);\n            }\n        }\n\n        const sortEntries = (a: [string, string], b: [string, string]): number =>\n            a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0;\n        stdlibImports.sort(sortEntries);\n        thirdPartyImports.sort(sortEntries);\n\n        const formatEntry = ([importPath, alias]: [string, string]): string => `    ${alias} \"${importPath}\"`;\n\n        const groups: string[] = [];\n        if (stdlibImports.length > 0) {\n            groups.push(stdlibImports.map(formatEntry).join(\"\\n\"));\n        }\n        if (thirdPartyImports.length > 0) {\n            groups.push(thirdPartyImports.map(formatEntry).join(\"\\n\"));\n        }\n\n        return `import (\\n${groups.join(\"\\n\\n\")}\\n)`;\n    }\n}\n","import { AbstractFormatter, AbstractWriter, NopFormatter } from \"@fern-api/browser-compatible-base-generator\";\nimport { basename } from \"@fern-api/path-utils\";\n\nimport { BaseGoCustomConfigSchema } from \"../../custom-config/BaseGoCustomConfigSchema.js\";\n\ntype Alias = string;\ntype ImportPath = string;\n\n// Regular expression to match invalid identifier characters\n// according to Go conventions.\nconst INVALID_GO_IDENTIFIER_TOKEN = /[^0-9a-zA-Z_]/g;\n\nconst RESERVED_KEYWORDS = [\n    \"break\",\n    \"case\",\n    \"chan\",\n    \"const\",\n    \"continue\",\n    \"default\",\n    \"defer\",\n    \"else\",\n    \"fallthrough\",\n    \"for\",\n    \"func\",\n    \"go\",\n    \"goto\",\n    \"if\",\n    \"import\",\n    \"interface\",\n    \"map\",\n    \"package\",\n    \"range\",\n    \"return\",\n    \"select\",\n    \"struct\",\n    \"switch\",\n    \"type\",\n    \"var\"\n];\n\nexport declare namespace Writer {\n    interface Args {\n        /* The package name that is being written to */\n        packageName: string;\n        /* The root import path that is being written to */\n        rootImportPath: string;\n        /* The import path that is being written to */\n        importPath: string;\n        /* Custom generator config */\n        customConfig: BaseGoCustomConfigSchema;\n        /* Formatter used to format Go source files */\n        formatter?: AbstractFormatter;\n    }\n}\n\nexport class Writer extends AbstractWriter {\n    /* The package name that is being written to */\n    public packageName: string;\n    /* The root import path that is being written to */\n    public rootImportPath: string;\n    /* The import path that is being written to */\n    public importPath: string;\n    /* Custom generator config */\n    public customConfig: BaseGoCustomConfigSchema;\n    /* Formatter used to format Go source files */\n    public formatter: AbstractFormatter;\n\n    /* Import statements */\n    protected imports: Record<ImportPath, Alias> = {};\n\n    constructor({ packageName, rootImportPath, importPath, customConfig, formatter }: Writer.Args) {\n        super();\n        this.packageName = packageName;\n        this.rootImportPath = rootImportPath;\n        this.importPath = importPath;\n        this.customConfig = customConfig;\n        this.formatter = formatter ?? new NopFormatter();\n    }\n\n    /**\n     * Adds the given import path to the rolling set, and returns the associated alias\n     * that should be used to reference the package. If a conflict exists, we try to use\n     * path components to create a unique alias, and only fall back to prepending '_'\n     * as a last resort.\n     */\n    public addImport(importPath: string): string {\n        const maybeAlias = this.imports[importPath];\n        if (maybeAlias != null) {\n            return maybeAlias;\n        }\n\n        // If this is the root import path and we have a configured packageName, use it\n        if (importPath === this.rootImportPath && this.customConfig.packageName != null) {\n            this.imports[importPath] = this.customConfig.packageName;\n            return this.customConfig.packageName;\n        }\n\n        const set = new Set<Alias>(Object.values(this.imports));\n        const pathElements = importPath.split(\"/\");\n\n        // Try using progressively more path components to create a unique alias.\n        for (let i = 1; i <= pathElements.length; i++) {\n            const elements = pathElements.slice(-i);\n            const alias = this.getValidAlias(elements.join(\"\"));\n            if (!set.has(alias)) {\n                this.imports[importPath] = alias;\n                return alias;\n            }\n        }\n\n        // Fall back to prepending '_' until we find a unique alias.\n        let alias = this.getValidAlias(basename(importPath));\n        while (set.has(alias)) {\n            alias = \"_\" + alias;\n        }\n        this.imports[importPath] = alias;\n        return alias;\n    }\n\n    private isValidAlias(alias: string): boolean {\n        return !RESERVED_KEYWORDS.includes(alias);\n    }\n\n    /**\n     * Creates a new valid alias from the given string. Removes all\n     * characters not included in the Go identifier grammar.\n     *\n     * This also removes any trailing '-' elements so the alias is as\n     * terse as possible.\n     */\n    private getValidAlias(s: string): string {\n        const split = s.split(\"-\");\n        if (split[0] == null) {\n            return s;\n        }\n        const possibleAlias = split.map((part) => part.replace(INVALID_GO_IDENTIFIER_TOKEN, \"\")).join(\"\");\n        if (this.isValidAlias(possibleAlias)) {\n            return possibleAlias;\n        }\n        return \"_\" + possibleAlias;\n    }\n}\n","import {\n    Alias,\n    CodeBlock,\n    Enum,\n    Field,\n    File,\n    Func,\n    FuncInvocation,\n    GoTypeReference,\n    Identifier,\n    Method,\n    MethodInvocation,\n    Parameter,\n    Pointer,\n    Selector,\n    Struct,\n    Switch,\n    TypeDeclaration\n} from \"./ast/index.js\";\n\nexport function alias(args: Alias.Args): Alias {\n    return new Alias(args);\n}\n\nexport function codeblock(arg: CodeBlock.Arg): CodeBlock {\n    return new CodeBlock(arg);\n}\n\nexport function enum_(args: Enum.Args): Enum {\n    return new Enum(args);\n}\n\nexport function field(args: Field.Args): Field {\n    return new Field(args);\n}\n\nexport function file(args: File.Args = {}): File {\n    return new File(args);\n}\n\nexport function func(args: Func.Args): Func {\n    return new Func(args);\n}\n\nexport function identifier(args: Identifier.Args): Identifier {\n    return new Identifier(args);\n}\n\nexport function invokeFunc(args: FuncInvocation.Args): FuncInvocation {\n    return new FuncInvocation(args);\n}\n\nexport function invokeMethod(args: MethodInvocation.Args): MethodInvocation {\n    return new MethodInvocation(args);\n}\n\nexport function method(args: Method.Args): Method {\n    return new Method(args);\n}\n\nexport function parameter(args: Parameter.Args): Parameter {\n    return new Parameter(args);\n}\n\nexport function pointer(args: Pointer.Args): Pointer {\n    return new Pointer(args);\n}\n\nexport function selector(args: Selector.Args): Selector {\n    return new Selector(args);\n}\n\nexport function struct(args: Struct.Args = {}): Struct {\n    return new Struct(args);\n}\n\nexport function switch_(args: Switch.Args): Switch {\n    return new Switch(args);\n}\n\nexport function typeDeclaration(args: TypeDeclaration.Args): TypeDeclaration {\n    return new TypeDeclaration(args);\n}\n\nexport function typeReference(args: GoTypeReference.Args): GoTypeReference {\n    return new GoTypeReference(args);\n}\n\nexport { AstNode } from \"./ast/core/AstNode.js\";\nexport {\n    Alias,\n    CodeBlock,\n    Enum,\n    Field,\n    File,\n    Func,\n    FuncInvocation,\n    GoTypeReference as TypeReference,\n    IoReaderTypeReference,\n    Method,\n    MethodInvocation,\n    MultiNode,\n    Parameter,\n    Pointer,\n    Selector,\n    Struct,\n    type StructField,\n    TimeTypeReference,\n    Type,\n    TypeDeclaration,\n    TypeInstantiation,\n    UuidTypeReference,\n    Writer\n} from \"./ast/index.js\";\n","export { Alias } from \"./Alias.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Writer } from \"./core/Writer.js\";\nexport { Enum } from \"./Enum.js\";\nexport { Field } from \"./Field.js\";\nexport { File } from \"././File.js\";\nexport { Func } from \"./Func.js\";\nexport { FuncInvocation } from \"./FuncInvocation.js\";\nexport { GoTypeReference } from \"./GoTypeReference.js\";\nexport { Identifier } from \"./Identifier.js\";\nexport { Method } from \"./Method.js\";\nexport { MethodInvocation } from \"./MethodInvocation.js\";\nexport { MultiNode } from \"./MultiNode.js\";\nexport { Parameter } from \"./Parameter.js\";\nexport { Pointer } from \"./Pointer.js\";\nexport { Selector } from \"./Selector.js\";\nexport { Struct } from \"./Struct.js\";\nexport { Switch } from \"./Switch.js\";\nexport { IoReaderTypeReference, TimeTypeReference, Type, UuidTypeReference } from \"./Type.js\";\nexport { TypeDeclaration } from \"./TypeDeclaration.js\";\nexport { type StructField, TypeInstantiation } from \"./TypeInstantiation.js\";\n","import { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Alias {\n    interface Args {\n        /* The name of the alias */\n        name: string;\n        /* The type of the alias */\n        type: Type;\n        /* The docs of the alias, if any */\n        docs?: string;\n    }\n}\n\nexport class Alias extends AstNode {\n    public readonly name: string;\n    public readonly type: Type;\n    public readonly docs: string | undefined;\n\n    constructor({ name, type, docs }: Alias.Args) {\n        super();\n        this.name = name;\n        this.type = type;\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(new Comment({ docs: this.docs }));\n        writer.write(\"type \");\n        writer.write(this.name);\n        writer.write(\" = \");\n        writer.writeNode(this.type);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Comment {\n    interface Args {\n        /* The comment documentation, if any */\n        docs?: string;\n    }\n}\n\nexport class Comment extends AstNode {\n    public readonly docs: string | undefined;\n\n    constructor({ docs }: Comment.Args = {}) {\n        super();\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.split(\"\\n\").forEach((line) => {\n                writer.writeLine(`// ${line}`);\n            });\n        }\n    }\n}\n","import { AbstractAstNode, AbstractFormatter } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { BaseGoCustomConfigSchema } from \"../../custom-config/BaseGoCustomConfigSchema.js\";\nimport { GoFile } from \"./GoFile.js\";\n\nexport abstract class AstNode extends AbstractAstNode {\n    /**\n     * Writes the node to a string.\n     */\n    public async toStringAsync({\n        packageName,\n        rootImportPath,\n        importPath,\n        customConfig,\n        formatter\n    }: {\n        packageName: string;\n        rootImportPath: string;\n        importPath: string;\n        customConfig: BaseGoCustomConfigSchema;\n        formatter?: AbstractFormatter;\n    }): Promise<string> {\n        const file = new GoFile({\n            packageName,\n            rootImportPath,\n            importPath,\n            customConfig,\n            formatter\n        });\n        this.write(file);\n        return file.toStringAsync();\n    }\n\n    /**\n     * Writes the node to a string.\n     */\n    public toString({\n        packageName,\n        rootImportPath,\n        importPath,\n        customConfig,\n        formatter\n    }: {\n        packageName: string;\n        rootImportPath: string;\n        importPath: string;\n        customConfig: BaseGoCustomConfigSchema;\n        formatter?: AbstractFormatter;\n    }): string {\n        const file = new GoFile({\n            packageName,\n            rootImportPath,\n            importPath,\n            customConfig,\n            formatter\n        });\n        this.write(file);\n        return file.toString();\n    }\n}\n","import { CodeBlock as CommonCodeBlock } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg = CommonCodeBlock.Arg<Writer>;\n}\n\nexport class CodeBlock extends AstNode {\n    private arg: CodeBlock.Arg;\n\n    public constructor(arg: CodeBlock.Arg) {\n        super();\n        this.arg = arg;\n    }\n\n    public write(writer: Writer): void {\n        const commonCodeBlock = new CommonCodeBlock(this.arg);\n        return commonCodeBlock.write(writer);\n    }\n}\n","import { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Func } from \"./Func.js\";\nimport { Identifier } from \"./Identifier.js\";\nimport { Method } from \"./Method.js\";\nimport { TypeInstantiation } from \"./TypeInstantiation.js\";\n\nexport declare namespace Enum {\n    interface Args {\n        /* The name of the Go enum */\n        name: string;\n        /* The docs of the Go enum, if any */\n        docs?: string;\n    }\n\n    interface Member {\n        /* The name of the enum field */\n        name: string;\n        /* The value of the enum field */\n        value: string;\n        /* The docs of the Go enum member, if any */\n        docs?: string;\n    }\n}\n\nexport class Enum extends AstNode {\n    public readonly name: string;\n    public readonly docs: string | undefined;\n    public readonly members: Enum.Member[] = [];\n    public readonly methods: Method[] = [];\n\n    private constructor_: Func | undefined;\n\n    constructor({ name, docs }: Enum.Args) {\n        super();\n        this.name = name;\n        this.docs = docs;\n    }\n\n    public addConstructor(constructor_: Func): void {\n        this.constructor_ = constructor_;\n    }\n\n    public addMember(member: Enum.Member): void {\n        this.members.push(member);\n    }\n\n    public addMethod(method: Method): void {\n        this.methods.push(method);\n    }\n\n    public write(writer: Writer): void {\n        this.writeType({ writer });\n        this.writeMembers({ writer });\n        this.writeConstructor({ writer });\n        this.writeMethods({ writer });\n    }\n\n    private writeType({ writer }: { writer: Writer }): void {\n        writer.writeNode(new Comment({ docs: this.docs }));\n        writer.writeLine(`type ${this.name} string`);\n    }\n\n    private writeMembers({ writer }: { writer: Writer }): void {\n        if (this.members.length === 0) {\n            return;\n        }\n        writer.newLine();\n        writer.writeLine(\"const (\");\n        writer.indent();\n        for (const member of this.members) {\n            writer.writeNode(new Comment({ docs: member.docs }));\n            writer.writeNode(Enum.getMemberIdentifier({ name: this.name, member }));\n            writer.write(\" = \");\n            writer.writeNode(TypeInstantiation.string(member.value));\n            writer.newLine();\n        }\n        writer.dedent();\n        writer.write(\")\");\n    }\n\n    private writeConstructor({ writer }: { writer: Writer }): void {\n        if (this.constructor_ == null) {\n            return;\n        }\n        writer.newLine();\n        writer.writeNode(this.constructor_);\n    }\n\n    private writeMethods({ writer }: { writer: Writer }): void {\n        writer.newLine();\n        for (const method of this.methods) {\n            writer.newLine();\n            writer.writeNode(method);\n            writer.newLine();\n        }\n    }\n\n    public static getMemberIdentifier({ name, member }: { name: string; member: Enum.Member }): Identifier {\n        return new Identifier(`${name}${member.name}`);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Identifier {\n    type Args = string;\n}\n\nexport class Identifier extends AstNode {\n    public readonly name: string;\n\n    constructor(name: Identifier.Args) {\n        super();\n        this.name = name;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(this.name);\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\n\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { FuncInvocation } from \"./FuncInvocation.js\";\nimport { GoTypeReference } from \"./GoTypeReference.js\";\nimport { MethodInvocation } from \"./MethodInvocation.js\";\nimport { Type } from \"./Type.js\";\n\ntype InternalTypeInstantiation =\n    | Any_\n    | Bool\n    | Bytes\n    | Date\n    | DateTime\n    | Enum\n    | Float64\n    | Int\n    | Int64\n    | Map\n    | Nil\n    | Nop\n    | Optional\n    | Reference\n    | Slice\n    | String_\n    | Struct\n    | Uuid;\n\ninterface Any_ {\n    type: \"any\";\n    value: unknown;\n}\n\ninterface Bool {\n    type: \"bool\";\n    value: boolean;\n}\n\ninterface Bytes {\n    type: \"bytes\";\n    value: string;\n}\n\ninterface Date {\n    type: \"date\";\n    value: string;\n}\n\ninterface DateTime {\n    type: \"dateTime\";\n    value: string;\n}\n\ninterface Enum {\n    type: \"enum\";\n    typeReference: GoTypeReference;\n}\n\ninterface Float64 {\n    type: \"float64\";\n    value: number;\n}\n\ninterface Int {\n    type: \"int\";\n    value: number;\n}\n\ninterface Int64 {\n    type: \"int64\";\n    value: number;\n}\n\ninterface Optional {\n    type: \"optional\";\n    value: TypeInstantiation;\n}\n\ninterface Map {\n    type: \"map\";\n    keyType: Type;\n    valueType: Type;\n    entries: MapEntry[];\n}\n\ninterface MapEntry {\n    key: TypeInstantiation;\n    value: TypeInstantiation;\n}\n\ninterface Nil {\n    type: \"nil\";\n}\n\ninterface Nop {\n    type: \"nop\";\n}\n\ninterface Reference {\n    type: \"reference\";\n    value: AstNode;\n}\n\ninterface Slice {\n    type: \"slice\";\n    valueType: Type;\n    values: TypeInstantiation[];\n}\n\ninterface Struct {\n    type: \"struct\";\n    typeReference: AstNode;\n    fields: StructField[];\n    generics?: Type[];\n}\n\nexport interface StructField {\n    name: string;\n    value: TypeInstantiation;\n}\n\ninterface String_ {\n    type: \"string\";\n    value: string;\n}\n\ninterface Uuid {\n    type: \"uuid\";\n    value: string;\n}\n\nconst POINTER_HELPER_TYPES = new Set<string>([\n    \"bool\",\n    \"bytes\",\n    \"date\",\n    \"dateTime\",\n    \"float64\",\n    \"int\",\n    \"int64\",\n    \"string\",\n    \"uuid\"\n]);\nconst ADDRESSABLE_TYPES = new Set<string>([\"any\", \"map\", \"slice\"]);\n\nexport class TypeInstantiation extends AstNode {\n    private constructor(public readonly internalType: InternalTypeInstantiation) {\n        super();\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalType.type) {\n            case \"any\":\n                this.writeAny({ writer, value: this.internalType.value });\n                break;\n            case \"bool\":\n                writer.write(this.internalType.value.toString());\n                break;\n            case \"bytes\":\n                writer.write(`[]byte(\"${this.internalType.value}\")`);\n                break;\n            case \"date\":\n            case \"dateTime\":\n                writer.writeNode(invokeMustParseDate({ writer, type: this.internalType }));\n                break;\n            case \"enum\":\n                writer.writeNode(this.internalType.typeReference);\n                break;\n            case \"float64\":\n                writer.write(this.internalType.value.toString());\n                break;\n            case \"int\":\n                writer.write(this.internalType.value.toString());\n                break;\n            case \"int64\":\n                writer.write(`int64(${this.internalType.value.toString()})`);\n                break;\n            case \"map\":\n                this.writeMap({ writer, map: this.internalType });\n                break;\n            case \"nil\":\n                writer.write(\"nil\");\n                break;\n            case \"nop\":\n                break; // no-op\n            case \"optional\":\n                this.writeOptional({ writer, type: this.internalType.value });\n                break;\n            case \"reference\":\n                writer.writeNode(this.internalType.value);\n                break;\n            case \"slice\":\n                this.writeSlice({ writer, slice: this.internalType });\n                break;\n            case \"string\":\n                writer.write(\n                    this.internalType.value.includes(\"`\")\n                        ? `\"${escapeGoString(this.internalType.value)}\"`\n                        : this.internalType.value.includes('\"') || this.internalType.value.includes(\"\\n\")\n                          ? `\\`${this.internalType.value}\\``\n                          : `\"${escapeGoString(this.internalType.value)}\"`\n                );\n                break;\n            case \"struct\":\n                this.writeStruct({ writer, struct: this.internalType });\n                break;\n            case \"uuid\":\n                writer.writeNode(invokeMustParseUUID({ value: this.internalType.value }));\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    /* Static factory methods for creating a TypeInstantiation */\n    public static any(value: unknown): TypeInstantiation {\n        return new this({\n            type: \"any\",\n            value\n        });\n    }\n\n    public static bool(value: boolean): TypeInstantiation {\n        return new this({\n            type: \"bool\",\n            value\n        });\n    }\n\n    public static bytes(value: string): TypeInstantiation {\n        return new this({\n            type: \"bytes\",\n            value\n        });\n    }\n\n    public static date(value: string): TypeInstantiation {\n        return new this({\n            type: \"date\",\n            value\n        });\n    }\n\n    public static dateTime(value: string): TypeInstantiation {\n        return new this({\n            type: \"dateTime\",\n            value\n        });\n    }\n\n    public static enum(typeReference: GoTypeReference): TypeInstantiation {\n        return new this({\n            type: \"enum\",\n            typeReference\n        });\n    }\n\n    public static float64(value: number): TypeInstantiation {\n        return new this({\n            type: \"float64\",\n            value\n        });\n    }\n\n    public static int(value: number): TypeInstantiation {\n        return new this({\n            type: \"int\",\n            value\n        });\n    }\n\n    public static int64(value: number): TypeInstantiation {\n        return new this({\n            type: \"int64\",\n            value\n        });\n    }\n\n    public static map({\n        keyType,\n        valueType,\n        entries\n    }: {\n        keyType: Type;\n        valueType: Type;\n        entries: MapEntry[];\n    }): TypeInstantiation {\n        return new this({\n            type: \"map\",\n            keyType,\n            valueType,\n            entries\n        });\n    }\n\n    public static nil(): TypeInstantiation {\n        return new this({\n            type: \"nil\"\n        });\n    }\n\n    public static nop(): TypeInstantiation {\n        return new this({\n            type: \"nop\"\n        });\n    }\n\n    public static optional(value: TypeInstantiation): TypeInstantiation {\n        if (this.isAlreadyOptional(value)) {\n            // Avoids double optional.\n            return value;\n        }\n        return new this({\n            type: \"optional\",\n            value\n        });\n    }\n\n    public static reference(value: AstNode): TypeInstantiation {\n        return new this({\n            type: \"reference\",\n            value\n        });\n    }\n\n    public static slice({ valueType, values }: { valueType: Type; values: TypeInstantiation[] }): TypeInstantiation {\n        return new this({\n            type: \"slice\",\n            valueType,\n            values\n        });\n    }\n\n    public static string(value: string): TypeInstantiation {\n        return new this({\n            type: \"string\",\n            value\n        });\n    }\n\n    public static struct({\n        typeReference,\n        fields\n    }: {\n        typeReference: AstNode;\n        fields: StructField[];\n    }): TypeInstantiation {\n        return new this({\n            type: \"struct\",\n            typeReference,\n            fields\n        });\n    }\n\n    public static structPointer({\n        typeReference,\n        fields,\n        generics\n    }: {\n        typeReference: AstNode;\n        fields: StructField[];\n        generics?: Type[];\n    }): TypeInstantiation {\n        return new this({\n            type: \"optional\",\n            value: new this({\n                type: \"struct\",\n                typeReference,\n                fields,\n                generics\n            })\n        });\n    }\n\n    public static uuid(value: string): TypeInstantiation {\n        return new this({\n            type: \"uuid\",\n            value\n        });\n    }\n\n    public static isNop(typeInstantiation: TypeInstantiation): boolean {\n        if (typeInstantiation.internalType.type === \"optional\") {\n            return this.isNop(typeInstantiation.internalType.value);\n        }\n        return typeInstantiation.internalType.type === \"nop\";\n    }\n\n    private writeAny({ writer, value }: { writer: Writer; value: unknown }): void {\n        switch (typeof value) {\n            case \"boolean\":\n                writer.write(value.toString());\n                return;\n            case \"string\":\n                writer.write(\n                    value.includes(\"`\")\n                        ? `\"${escapeGoString(value)}\"`\n                        : value.includes('\"') || value.includes(\"\\n\")\n                          ? `\\`${value}\\``\n                          : `\"${escapeGoString(value)}\"`\n                );\n                return;\n            case \"number\":\n                writer.write(value.toString());\n                return;\n            case \"object\":\n                if (value == null) {\n                    writer.write(\"nil\");\n                    return;\n                }\n                if (Array.isArray(value)) {\n                    this.writeAnyArray({ writer, value });\n                    return;\n                }\n                this.writeAnyObject({ writer, value });\n                return;\n            default:\n                throw new Error(`Internal error; unsupported unknown type: ${typeof value}`);\n        }\n    }\n\n    private writeAnyArray({\n        writer,\n        value\n    }: {\n        writer: Writer;\n        // biome-ignore lint/suspicious/noExplicitAny: allow\n        value: any[];\n    }): void {\n        writer.write(\"[]any\");\n        if (value.length === 0) {\n            writer.write(\"{}\");\n            return;\n        }\n        writer.writeLine(\"{\");\n        writer.indent();\n        for (const element of value) {\n            writer.writeNode(TypeInstantiation.any(element));\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n\n    private writeAnyObject({ writer, value }: { writer: Writer; value: object }): void {\n        writer.write(\"map[string]any\");\n        const entries = Object.entries(value).sort(([keyA], [keyB]) => (keyA < keyB ? -1 : keyA > keyB ? 1 : 0));\n        if (entries.length === 0) {\n            writer.write(\"{}\");\n            return;\n        }\n        writer.writeLine(\"{\");\n        writer.indent();\n        for (const [key, val] of entries) {\n            writer.write(`\"${escapeGoString(key)}\": `);\n            writer.writeNode(TypeInstantiation.any(val));\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n\n    private writeMap({ writer, map }: { writer: Writer; map: Map }): void {\n        writer.write(\"map[\");\n        writer.writeNode(map.keyType);\n        writer.write(\"]\");\n        writer.writeNode(map.valueType);\n\n        const entries = filterNopMapEntries({ entries: map.entries });\n        if (entries.length === 0) {\n            writer.write(\"{}\");\n            return;\n        }\n\n        writer.writeLine(\"{\");\n        writer.indent();\n        for (const entry of entries) {\n            entry.key.write(writer);\n            writer.write(\": \");\n            entry.value.write(writer);\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n\n    private writeOptional({ writer, type }: { writer: Writer; type: TypeInstantiation }): void {\n        if (POINTER_HELPER_TYPES.has(type.internalType.type)) {\n            writer.writeNode(invokePointerHelper({ writer, type }));\n            return;\n        }\n        if (ADDRESSABLE_TYPES.has(type.internalType.type)) {\n            type.write(writer);\n            return;\n        }\n        if (type.internalType.type === \"enum\") {\n            writer.writeNode(\n                new MethodInvocation({\n                    on: type.internalType.typeReference,\n                    method: \"Ptr\",\n                    arguments_: []\n                })\n            );\n            return;\n        }\n        writer.write(\"&\");\n        type.write(writer);\n    }\n\n    private static isAlreadyOptional(value: TypeInstantiation) {\n        return value.internalType.type === \"optional\" || ADDRESSABLE_TYPES.has(value.internalType.type);\n    }\n\n    private writeSlice({ writer, slice }: { writer: Writer; slice: Slice }): void {\n        writer.write(\"[]\");\n        writer.writeNode(slice.valueType);\n\n        const values = filterNopValues({ values: slice.values });\n        if (values.length === 0) {\n            writer.write(\"{}\");\n            return;\n        }\n\n        writer.writeLine(\"{\");\n        writer.indent();\n        for (const value of values) {\n            value.write(writer);\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n\n    private writeStruct({ writer, struct }: { writer: Writer; struct: Struct }): void {\n        writer.writeNode(struct.typeReference);\n\n        if (struct.generics != null) {\n            writer.write(\"[\");\n            struct.generics.forEach((generic, index) => {\n                if (index > 0) {\n                    writer.write(\", \");\n                }\n                writer.writeNode(generic);\n            });\n            writer.write(\"]\");\n        }\n\n        const fields = filterNopStructFields({ fields: struct.fields });\n        if (fields.length === 0) {\n            writer.write(\"{}\");\n            return;\n        }\n\n        writer.writeLine(\"{\");\n        writer.indent();\n        for (const field of fields) {\n            writer.write(`${field.name}: `);\n            field.value.write(writer);\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n}\n\nfunction invokePointerHelper({ writer, type }: { writer: Writer; type: TypeInstantiation }): FuncInvocation {\n    return new FuncInvocation({\n        func: new GoTypeReference({\n            name: getPointerHelperFuncName({ type }),\n            importPath: writer.rootImportPath\n        }),\n        arguments_: [type]\n    });\n}\n\nfunction getPointerHelperFuncName({ type }: { type: TypeInstantiation }): string {\n    switch (type.internalType.type) {\n        case \"bool\":\n            return \"Bool\";\n        case \"bytes\":\n            return \"Bytes\";\n        case \"date\":\n        case \"dateTime\":\n            return \"Time\";\n        case \"float64\":\n            return \"Float64\";\n        case \"int\":\n            return \"Int\";\n        case \"int64\":\n            return \"Int64\";\n        case \"string\":\n            return \"String\";\n        case \"uuid\":\n            return \"UUID\";\n        default:\n            return \"\";\n    }\n}\n\nfunction invokeMustParseDate({ writer, type }: { writer: Writer; type: Date | DateTime }): FuncInvocation {\n    const funcName = type.type === \"date\" ? \"MustParseDate\" : \"MustParseDateTime\";\n    return new FuncInvocation({\n        func: new GoTypeReference({\n            name: funcName,\n            importPath: writer.rootImportPath\n        }),\n        arguments_: [new CodeBlock(`\"${type.value}\"`)]\n    });\n}\n\nfunction invokeMustParseUUID({ value }: { value: string }): FuncInvocation {\n    return new FuncInvocation({\n        func: new GoTypeReference({\n            name: \"MustParse\",\n            importPath: \"github.com/google/uuid\"\n        }),\n        arguments_: [new CodeBlock(`\"${value}\"`)]\n    });\n}\n\nfunction escapeGoString(value: string): string {\n    return value\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\"/g, '\\\\\"')\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/\\t/g, \"\\\\t\");\n}\n\nfunction filterNopMapEntries({ entries }: { entries: MapEntry[] }): MapEntry[] {\n    return entries.filter((entry) => !TypeInstantiation.isNop(entry.key) && !TypeInstantiation.isNop(entry.value));\n}\n\nfunction filterNopStructFields({ fields }: { fields: StructField[] }): StructField[] {\n    return fields.filter((field) => !TypeInstantiation.isNop(field.value));\n}\n\nfunction filterNopValues({ values }: { values: TypeInstantiation[] }): TypeInstantiation[] {\n    return values.filter((value) => !TypeInstantiation.isNop(value));\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { GoTypeReference } from \"./GoTypeReference.js\";\nimport { writeArguments } from \"./utils/writeArguments.js\";\n\nexport declare namespace FuncInvocation {\n    interface Args {\n        /* The function to invoke */\n        func: GoTypeReference;\n        /* The arguments passed to the method */\n        arguments_: AstNode[];\n        /* Whether to write the invocation on multiple lines */\n        multiline?: boolean;\n    }\n}\n\nexport class FuncInvocation extends AstNode {\n    private func: GoTypeReference;\n    private arguments_: AstNode[];\n    private multiline: boolean | undefined;\n\n    constructor({ func, arguments_, multiline = true }: FuncInvocation.Args) {\n        super();\n\n        this.func = func;\n        this.arguments_ = arguments_;\n        this.multiline = multiline;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.func);\n        writeArguments({ writer, arguments_: this.arguments_, multiline: this.multiline });\n    }\n}\n","import { UnnamedArgument } from \"@fern-api/browser-compatible-base-generator\";\nimport { Writer } from \"../core/Writer.js\";\nimport { TypeInstantiation } from \"../TypeInstantiation.js\";\n\nexport function writeArguments({\n    writer,\n    arguments_,\n    multiline = true\n}: {\n    writer: Writer;\n    arguments_: UnnamedArgument[];\n    multiline?: boolean;\n}): void {\n    const modifiedArguments = arguments_.map((argument) => {\n        // A nop argument (optional type reference) cannot be omitted (like in a struct literal type instantation with omitempty)\n        // but must be replaced with nil\n        if (argument instanceof TypeInstantiation && TypeInstantiation.isNop(argument)) {\n            return TypeInstantiation.nil();\n        }\n        return argument;\n    });\n    if (modifiedArguments.length === 0) {\n        writer.write(\"()\");\n        return;\n    }\n    if (multiline) {\n        writeMultiline({ writer, arguments_: modifiedArguments });\n        return;\n    }\n    writeCompact({ writer, arguments_: modifiedArguments });\n}\n\nfunction writeMultiline({ writer, arguments_ }: { writer: Writer; arguments_: UnnamedArgument[] }): void {\n    writer.writeLine(\"(\");\n    writer.indent();\n    for (const argument of arguments_) {\n        argument.write(writer);\n        writer.writeLine(\",\");\n    }\n    writer.dedent();\n    writer.write(\")\");\n}\n\nfunction writeCompact({ writer, arguments_ }: { writer: Writer; arguments_: UnnamedArgument[] }): void {\n    writer.write(\"(\");\n    arguments_.forEach((argument, index) => {\n        if (index > 0) {\n            writer.write(\", \");\n        }\n        argument.write(writer);\n    });\n    writer.write(\")\");\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\nimport { writeGenerics } from \"./utils/writeGenerics.js\";\n\nexport declare namespace GoTypeReference {\n    interface Args {\n        /* The name of the Go type */\n        name: string;\n        /* The import path of the Go type */\n        importPath?: string;\n        /* The generic type parameters, if any */\n        generics?: Type[] | undefined;\n    }\n}\n\nexport class GoTypeReference extends AstNode {\n    public readonly name: string;\n    public readonly importPath: string | undefined;\n    public readonly generics: Type[] | undefined;\n\n    constructor({ name, importPath, generics }: GoTypeReference.Args) {\n        super();\n        this.name = name;\n        this.importPath = importPath;\n        this.generics = generics;\n    }\n\n    public write(writer: Writer): void {\n        if (this.importPath == null || writer.importPath === this.importPath) {\n            writer.write(this.name);\n            return;\n        }\n        const alias = writer.addImport(this.importPath);\n        writer.write(`${alias}.${this.name}`);\n        if (this.generics != null) {\n            writeGenerics({ writer, generics: this.generics });\n        }\n    }\n}\n","import { Writer } from \"../core/Writer.js\";\nimport { Type } from \"../Type.js\";\n\nexport function writeGenerics({ writer, generics }: { writer: Writer; generics: Type[] }): void {\n    if (generics.length === 0) {\n        return;\n    }\n    writer.write(\"[\");\n    generics.forEach((generic, idx) => {\n        if (idx > 0) {\n            writer.write(\", \");\n        }\n        if (generic != null) {\n            writer.writeNode(generic);\n        }\n    });\n    writer.write(\"]\");\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { writeArguments } from \"./utils/writeArguments.js\";\n\nexport declare namespace MethodInvocation {\n    interface Args {\n        /* The instance to invoke the method on */\n        on: AstNode;\n        /* The method to invoke */\n        method: string;\n        /* The arguments passed to the method */\n        arguments_: AstNode[];\n        /* Whether to write the invocation on multiple lines */\n        multiline?: boolean;\n    }\n}\n\nexport class MethodInvocation extends AstNode {\n    private on: AstNode;\n    private method: string;\n    private arguments_: AstNode[];\n    private multiline: boolean | undefined;\n\n    constructor({ method, arguments_, on, multiline }: MethodInvocation.Args) {\n        super();\n\n        this.on = on;\n        this.method = method;\n        this.arguments_ = arguments_;\n        this.multiline = multiline;\n    }\n\n    public write(writer: Writer): void {\n        this.on.write(writer);\n        writer.write(\".\");\n        writer.write(this.method);\n        writeArguments({ writer, arguments_: this.arguments_, multiline: this.multiline });\n    }\n}\n","import { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Field {\n    interface Args {\n        /* The name of the field */\n        name: string;\n        /* The type of the field */\n        type: Type;\n        /* The docs of the field, if any */\n        docs?: string;\n        /* The tags of the field, if any */\n        tags?: Tag[];\n    }\n\n    interface Tag {\n        /* The name of the tag */\n        name: string;\n        /* The value of the tag */\n        value: string;\n    }\n}\n\nexport class Field extends AstNode {\n    public readonly name: string;\n    public readonly type: Type;\n\n    private docs: string | undefined;\n    private tags: Field.Tag[] = [];\n\n    constructor({ name, type, docs, tags }: Field.Args) {\n        super();\n        this.name = name;\n        this.type = type;\n        this.docs = docs;\n        this.tags = tags ?? [];\n    }\n\n    public addTags(...tags: Field.Tag[]): void {\n        this.tags.push(...tags);\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(new Comment({ docs: this.docs }));\n        writer.write(`${this.name} `);\n        this.type.write(writer);\n        this.writeTags({ writer });\n    }\n\n    private writeTags({ writer }: { writer: Writer }): void {\n        if (this.tags.length === 0) {\n            return;\n        }\n        writer.write(\" `\");\n        this.tags.forEach((tag, index) => {\n            if (index > 0) {\n                writer.write(\" \");\n            }\n            writer.write(`${tag.name}:\"${tag.value}\"`);\n        });\n        writer.write(\"`\");\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace File {\n    interface Args {\n        /* The list of nodes in the file. */\n        nodes?: AstNode[];\n    }\n}\n\nexport class File extends AstNode {\n    public readonly nodes: AstNode[];\n\n    constructor({ nodes }: File.Args = { nodes: [] }) {\n        super();\n        this.nodes = nodes ?? [];\n    }\n\n    public add(...nodes: AstNode[]): void {\n        this.nodes.push(...nodes);\n    }\n\n    public write(writer: Writer): void {\n        for (const node of this.nodes) {\n            node.write(writer);\n        }\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Method } from \"./Method.js\";\nimport { Parameter } from \"./Parameter.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Func {\n    type Args = Omit<Method.Args, \"typeReference\">;\n}\n\nexport class Func extends AstNode {\n    private func: Method;\n\n    constructor({ name, parameters, return_, body, docs, multiline }: Func.Args) {\n        super();\n        this.func = new Method({ name, parameters, return_, body, docs, multiline });\n    }\n\n    public get parameters(): Parameter[] {\n        return this.func.parameters;\n    }\n\n    public get return_(): Type[] {\n        return this.func.return_;\n    }\n\n    public get name(): string | undefined {\n        return this.func.name;\n    }\n\n    public get body(): AstNode | undefined {\n        return this.func.body;\n    }\n\n    public get docs(): string | undefined {\n        return this.func.docs;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.func);\n    }\n}\n","import { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { GoTypeReference } from \"./GoTypeReference.js\";\nimport { Parameter } from \"./Parameter.js\";\nimport { Type } from \"./Type.js\";\nimport { writeArguments } from \"./utils/writeArguments.js\";\n\nexport declare namespace Method {\n    interface Args {\n        /* The parameters of the method */\n        parameters: Parameter[];\n        /* The return type of the method */\n        return_: Type[];\n        /* The name of the method */\n        name?: string;\n        /* The body of the method */\n        body?: AstNode;\n        /* Documentation for the method */\n        docs?: string;\n        /* The class this method belongs to, if any */\n        typeReference?: GoTypeReference;\n        /* Whether to write the invocation on multiple lines */\n        multiline?: boolean;\n        /* The custom name of the receiver, if any */\n        receiver?: string;\n        /* Whether this method should use a pointer receiver */\n        pointerReceiver?: boolean;\n    }\n}\n\nexport class Method extends AstNode {\n    public readonly parameters: Parameter[];\n    public readonly return_: Type[];\n    public readonly name: string | undefined;\n    public readonly body: AstNode | undefined;\n    public readonly docs: string | undefined;\n    public readonly typeReference: GoTypeReference | undefined;\n    public readonly multiline: boolean | undefined;\n    public readonly receiver: string | undefined;\n    public readonly pointerReceiver: boolean | undefined;\n\n    constructor({\n        name,\n        parameters,\n        return_,\n        body,\n        docs,\n        typeReference,\n        multiline,\n        receiver,\n        pointerReceiver\n    }: Method.Args) {\n        super();\n        this.name = name;\n        this.parameters = parameters;\n        this.return_ = return_;\n        this.body = body;\n        this.docs = docs;\n        this.typeReference = typeReference;\n        this.multiline = multiline;\n        this.receiver = receiver;\n        this.pointerReceiver = pointerReceiver;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(new Comment({ docs: this.docs }));\n        writer.write(\"func\");\n        if (this.typeReference != null) {\n            this.writeReceiver({ writer, typeReference: this.typeReference, receiver: this.receiver });\n        }\n        if (this.name != null) {\n            writer.write(` ${this.name}`);\n        }\n        writeArguments({\n            writer,\n            arguments_: this.parameters,\n            multiline: this.multiline\n        });\n        if (this.return_ != null) {\n            writer.write(\" \");\n            if (this.return_.length > 1) {\n                writer.write(\"(\");\n            }\n            this.return_.forEach((returnType, index) => {\n                if (index > 0) {\n                    writer.write(\", \");\n                }\n                writer.writeNode(returnType);\n            });\n            if (this.return_.length > 1) {\n                writer.write(\")\");\n            }\n        }\n        writer.writeLine(\"{\");\n        writer.indent();\n        this.body?.write(writer);\n        writer.dedent();\n        writer.writeNewLineIfLastLineNot();\n        writer.write(\"}\");\n    }\n\n    private writeReceiver({\n        writer,\n        typeReference,\n        receiver\n    }: {\n        writer: Writer;\n        typeReference: GoTypeReference;\n        receiver?: string;\n    }): void {\n        writer.write(` (${this.getReceiverName({ typeReference, receiver })} `);\n        if (this.pointerReceiver) {\n            writer.write(\"*\");\n        }\n        typeReference.write(writer);\n        writer.write(\")\");\n    }\n\n    private getReceiverName({\n        typeReference,\n        receiver\n    }: {\n        typeReference: GoTypeReference;\n        receiver?: string;\n    }): string {\n        if (receiver != null) {\n            return receiver;\n        }\n        return typeReference.name.charAt(0).toLowerCase();\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace MultiNode {\n    interface Args {\n        nodes: AstNode[];\n    }\n}\n\nexport class MultiNode extends AstNode {\n    public readonly nodes: AstNode[];\n\n    constructor({ nodes }: MultiNode.Args) {\n        super();\n        this.nodes = nodes;\n    }\n\n    public write(writer: Writer): void {\n        for (const node of this.nodes) {\n            writer.newLine();\n            node.write(writer);\n            writer.newLine();\n        }\n    }\n}\n","import { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Parameter {\n    interface Args {\n        /* The name of the parameter */\n        name: string;\n        /* The type of the parameter */\n        type: Type;\n        /* The docs of the parameter, if any */\n        docs?: string;\n    }\n}\n\nexport class Parameter extends AstNode {\n    public readonly name: string;\n    public readonly type: Type;\n    public readonly docs: string | undefined;\n\n    constructor({ name, type, docs }: Parameter.Args) {\n        super();\n        this.name = name;\n        this.type = type;\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(new Comment({ docs: this.docs }));\n        writer.write(`${this.name} `);\n        this.type.write(writer);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Pointer {\n    interface Args {\n        /* The value of the pointer */\n        node: AstNode;\n    }\n}\n\nexport class Pointer extends AstNode {\n    public readonly node: AstNode;\n\n    constructor({ node }: Pointer.Args) {\n        super();\n        this.node = node;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(\"*\");\n        this.node.write(writer);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Selector {\n    interface Args {\n        /* The node to select from */\n        on: AstNode;\n        /* The node to select (e.g. a field name) */\n        selector: AstNode;\n    }\n}\n\nexport class Selector extends AstNode {\n    public readonly on: AstNode;\n    public readonly selector: AstNode;\n\n    constructor({ on, selector }: Selector.Args) {\n        super();\n        this.on = on;\n        this.selector = selector;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.on);\n        writer.write(\".\");\n        writer.writeNode(this.selector);\n    }\n}\n","import { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Field } from \"./Field.js\";\nimport { GoTypeReference } from \"./GoTypeReference.js\";\nimport { Method } from \"./Method.js\";\nimport { Parameter } from \"./Parameter.js\";\n\nexport declare namespace Struct {\n    interface Args {\n        /* The name of the Go struct. If not provided, the struct is anonymous. */\n        name?: string;\n        /* Embedded types defined within the struct. */\n        embeds?: GoTypeReference[];\n        /* Fields defined within the struct. */\n        fields?: Field[];\n        /* Docs associated with the struct. */\n        docs?: string;\n    }\n\n    interface Constructor {\n        parameters: Parameter[];\n        body: AstNode;\n        /* Overrides the default name of the constructor. */\n        name?: string;\n    }\n}\n\nexport class Struct extends AstNode {\n    public readonly name: string | undefined;\n    public readonly embeds: GoTypeReference[] = [];\n    public readonly fields: Field[] = [];\n    public readonly docs: string | undefined;\n    public readonly methods: Method[] = [];\n    public constructor_: Struct.Constructor | undefined;\n\n    constructor({ name, embeds, fields, docs }: Struct.Args) {\n        super();\n        this.name = name;\n        this.docs = docs;\n        this.embeds = embeds ?? [];\n        this.fields = fields ?? [];\n    }\n\n    public addConstructor(constructor: Struct.Constructor): void {\n        this.constructor_ = constructor;\n    }\n\n    public addField(...fields: Field[]): void {\n        this.fields.push(...fields);\n    }\n\n    public addMethod(...methods: Method[]): void {\n        this.methods.push(...methods);\n    }\n\n    public write(writer: Writer): void {\n        this.writeType({ writer });\n        if (this.constructor_ != null) {\n            writer.newLine();\n            writer.newLine();\n            this.writeConstructor({ writer, constructor: this.constructor_ });\n        }\n        this.writeMethods({ writer });\n    }\n\n    private writeType({ writer }: { writer: Writer }): void {\n        writer.writeNode(new Comment({ docs: this.docs }));\n        if (this.name != null) {\n            writer.write(`type ${this.name} struct {`);\n        } else {\n            writer.write(`struct{`);\n        }\n        if (this.embeds.length === 0 && this.fields.length === 0) {\n            writer.writeLine(\"}\");\n            return;\n        }\n        writer.newLine();\n        writer.indent();\n        for (const embed of this.embeds) {\n            writer.writeNode(embed);\n            writer.newLine();\n        }\n        const exportedFields = this.fields.filter((field) => this.isExported(field));\n        for (const field of exportedFields) {\n            writer.writeNode(field);\n            writer.newLine();\n        }\n        const unexportedFields = this.fields.filter((field) => !this.isExported(field));\n        if (exportedFields.length > 0 && unexportedFields.length > 0) {\n            // Exported fields are grouped separately from unexported fields.\n            writer.newLine();\n        }\n        for (const field of unexportedFields) {\n            writer.writeNode(field);\n            writer.newLine();\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n\n    private writeConstructor({ writer, constructor }: { writer: Writer; constructor: Struct.Constructor }): void {\n        if (constructor.name != null) {\n            writer.write(`func ${constructor.name}(`);\n        } else {\n            writer.write(`func New${this.name}(`);\n        }\n        constructor.parameters.forEach((parameter, index) => {\n            if (index > 0) {\n                writer.write(\", \");\n            }\n            writer.writeNode(parameter);\n        });\n        writer.write(`) *${this.name} {`);\n        writer.newLine();\n        writer.indent();\n        writer.writeNode(constructor.body);\n        writer.writeNewLineIfLastLineNot();\n        writer.dedent();\n        writer.writeLine(\"}\");\n    }\n\n    private writeMethods({ writer }: { writer: Writer }): void {\n        if (this.methods.length === 0) {\n            return;\n        }\n        writer.writeNewLineIfLastLineNot();\n        for (const method of this.methods) {\n            writer.newLine();\n            writer.writeNode(method);\n            writer.newLine();\n        }\n    }\n\n    private isExported(field: Field): boolean {\n        const char = field.name.charAt(0);\n        return char === char.toUpperCase();\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Identifier } from \"./Identifier.js\";\n\nexport declare namespace Switch {\n    interface Args {\n        /* The expression to switch on */\n        on: AstNode;\n        /* The cases of the switch */\n        cases: Case[];\n        /* The default case, if any */\n        default?: AstNode;\n    }\n\n    interface Case {\n        on: AstNode;\n        body: AstNode;\n    }\n}\n\nexport class Switch extends AstNode {\n    public readonly on: AstNode;\n    public readonly cases: Switch.Case[];\n    public readonly default: AstNode | undefined;\n\n    constructor({ on, cases, default: default_ }: Switch.Args) {\n        super();\n        this.on = on;\n        this.cases = cases;\n        this.default = default_;\n    }\n\n    public write(writer: Writer): void {\n        const cases = this.cases;\n        if (this.default != null) {\n            cases.push({\n                on: new Identifier(\"default\"),\n                body: this.default\n            });\n        }\n        writer.write(\"switch \");\n        writer.writeNode(this.on);\n        writer.writeLine(\"{\");\n        writer.indent();\n        for (const case_ of cases) {\n            writer.write(\"case \");\n            writer.writeNode(case_.on);\n            writer.writeLine(\":\");\n            writer.indent();\n            writer.writeNode(case_.body);\n            writer.dedent();\n            writer.writeNewLineIfLastLineNot();\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { GoTypeReference } from \"./GoTypeReference.js\";\n\ntype InternalType =\n    | Any_\n    | Bool\n    | Bytes\n    | Float64\n    | Date\n    | DateTime\n    | Error_\n    | Int\n    | Int64\n    | Map\n    | Optional\n    | Reference\n    | Slice\n    | String_\n    | Uuid\n    | Variadic;\n\ninterface Any_ {\n    type: \"any\";\n}\n\ninterface Bool {\n    type: \"bool\";\n}\n\ninterface Bytes {\n    type: \"bytes\";\n}\n\ninterface Float64 {\n    type: \"float64\";\n}\n\ninterface Date {\n    type: \"date\";\n}\n\ninterface Error_ {\n    type: \"error\";\n}\n\ninterface DateTime {\n    type: \"dateTime\";\n}\n\ninterface Int {\n    type: \"int\";\n}\n\ninterface Int64 {\n    type: \"int64\";\n}\n\ninterface Map {\n    type: \"map\";\n    keyType: Type;\n    valueType: Type;\n}\n\ninterface Optional {\n    type: \"optional\";\n    value: Type;\n}\n\ninterface Reference {\n    type: \"reference\";\n    value: GoTypeReference;\n}\n\ninterface Slice {\n    type: \"slice\";\n    value: Type;\n}\n\ninterface String_ {\n    type: \"string\";\n}\n\ninterface Uuid {\n    type: \"uuid\";\n}\n\ninterface Variadic {\n    type: \"variadic\";\n    value: Type;\n}\n\nconst NILABLE_TYPES = new Set<string>([\"any\", \"bytes\", \"map\", \"slice\"]);\n\nexport class Type extends AstNode {\n    private constructor(public readonly internalType: InternalType) {\n        super();\n    }\n\n    public write(writer: Writer, { comment }: { comment?: boolean } = {}): void {\n        switch (this.internalType.type) {\n            case \"any\":\n                writer.write(\"any\");\n                break;\n            case \"bool\":\n                writer.write(\"bool\");\n                break;\n            case \"bytes\":\n                writer.write(\"[]byte\");\n                break;\n            case \"date\":\n            case \"dateTime\":\n                writer.writeNode(TimeTypeReference);\n                break;\n            case \"error\":\n                writer.write(\"error\");\n                break;\n            case \"float64\":\n                writer.write(\"float64\");\n                break;\n            case \"int\":\n                writer.write(\"int\");\n                break;\n            case \"int64\":\n                writer.write(\"int64\");\n                break;\n            case \"map\": {\n                writer.write(\"map[\");\n                this.internalType.keyType.write(writer);\n                writer.write(\"]\");\n                this.internalType.valueType.write(writer);\n                break;\n            }\n            case \"optional\": {\n                writer.write(\"*\");\n                this.internalType.value.write(writer);\n                break;\n            }\n            case \"reference\":\n                writer.writeNode(this.internalType.value);\n                break;\n            case \"slice\":\n                writer.write(\"[]\");\n                this.internalType.value.write(writer);\n                break;\n            case \"string\":\n                writer.write(\"string\");\n                break;\n            case \"uuid\":\n                writer.writeNode(UuidTypeReference);\n                break;\n            case \"variadic\":\n                writer.write(\"...\");\n                this.internalType.value.write(writer);\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    public isOptional(): boolean {\n        return this.internalType.type === \"optional\";\n    }\n\n    public isIterable(): boolean {\n        return this.internalType.type === \"slice\" || this.internalType.type === \"variadic\";\n    }\n\n    public iterableElement(): Type | undefined {\n        if (this.internalType.type === \"slice\" || this.internalType.type === \"variadic\") {\n            return this.internalType.value;\n        }\n        return undefined;\n    }\n\n    public underlying(): Type {\n        if (this.internalType.type === \"optional\") {\n            return this.internalType.value;\n        }\n        return this;\n    }\n\n    /* Static factory methods for creating a Type */\n    public static any(): Type {\n        return new this({\n            type: \"any\"\n        });\n    }\n\n    public static bool(): Type {\n        return new this({\n            type: \"bool\"\n        });\n    }\n\n    public static bytes(): Type {\n        return new this({\n            type: \"bytes\"\n        });\n    }\n\n    public static date(): Type {\n        return new this({\n            type: \"date\"\n        });\n    }\n\n    public static dateTime(): Type {\n        return new this({\n            type: \"dateTime\"\n        });\n    }\n\n    public static dereference(value: Type): Type {\n        if (value.internalType.type === \"optional\") {\n            return value.internalType.value;\n        }\n        return value;\n    }\n\n    public static error(): Type {\n        return new this({\n            type: \"error\"\n        });\n    }\n\n    public static float64(): Type {\n        return new this({\n            type: \"float64\"\n        });\n    }\n\n    public static int(): Type {\n        return new this({\n            type: \"int\"\n        });\n    }\n\n    public static int64(): Type {\n        return new this({\n            type: \"int64\"\n        });\n    }\n\n    public static map(keyType: Type, valueType: Type): Type {\n        return new this({\n            type: \"map\",\n            keyType,\n            valueType\n        });\n    }\n\n    public static optional(value: Type): Type {\n        if (this.isAlreadyOptional(value)) {\n            // Avoids double optional.\n            return value;\n        }\n        return new this({\n            type: \"optional\",\n            value\n        });\n    }\n\n    public static pointer(value: Type): Type {\n        // Specifying a pointer is equivalent to defining an optional.\n        return Type.optional(value);\n    }\n\n    public static reference(value: GoTypeReference): Type {\n        return new this({\n            type: \"reference\",\n            value\n        });\n    }\n\n    public static slice(value: Type): Type {\n        return new this({\n            type: \"slice\",\n            value\n        });\n    }\n\n    public static string(): Type {\n        return new this({\n            type: \"string\"\n        });\n    }\n\n    public static uuid(): Type {\n        return new this({\n            type: \"uuid\"\n        });\n    }\n\n    public static variadic(value: Type): Type {\n        if (this.isAlreadyVariadic(value)) {\n            // Avoids double variadic.\n            return value;\n        }\n        return new this({\n            type: \"variadic\",\n            value\n        });\n    }\n\n    private static isAlreadyOptional(value: Type) {\n        return value.internalType.type === \"optional\" || NILABLE_TYPES.has(value.internalType.type);\n    }\n\n    private static isAlreadyVariadic(value: Type) {\n        return value.internalType.type === \"variadic\";\n    }\n}\n\nexport const TimeTypeReference = new GoTypeReference({\n    importPath: \"time\",\n    name: \"Time\"\n});\n\nexport const UuidTypeReference = new GoTypeReference({\n    importPath: \"github.com/google/uuid\",\n    name: \"UUID\"\n});\n\nexport const IoReaderTypeReference = new GoTypeReference({\n    importPath: \"io\",\n    name: \"Reader\"\n});\n","import { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace TypeDeclaration {\n    interface Args {\n        /* The name of the alias */\n        name: string;\n        /* The type of the alias */\n        type: Type;\n        /* The docs of the alias, if any */\n        docs?: string;\n    }\n}\n\nexport class TypeDeclaration extends AstNode {\n    public readonly name: string;\n    public readonly type: Type;\n    public readonly docs: string | undefined;\n\n    constructor({ name, type, docs }: TypeDeclaration.Args) {\n        super();\n        this.name = name;\n        this.type = type;\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(new Comment({ docs: this.docs }));\n        writer.write(\"type \");\n        writer.write(this.name);\n        writer.write(\" \");\n        writer.writeNode(this.type);\n    }\n}\n","/**\n * Go keywords and predeclared types that should be avoided as struct field names.\n * We check case-insensitively since PascalCase versions like \"String\" should also be prefixed.\n * We will just add to this list as needed\n */\nconst GO_RESERVED_IDENTIFIERS = new Set([\"string\"]);\n\n/**\n * Converts a name to a valid Go exported identifier.\n * Go exported identifiers must start with an uppercase letter.\n * This function handles edge cases like:\n * - Names that are empty or only underscores (e.g., \"_\") -> \"Underscore\"\n * - Names that start with a digit (e.g., \"1\") -> \"Field1\"\n * - Names that start with underscore followed by digit (e.g., \"_1\") -> \"Field1\"\n * - Names that match Go reserved words/predeclared identifiers (e.g., \"String\") -> \"FieldString\"\n */\nexport function goExportedFieldName(name: string): string {\n    if (name === \"\") {\n        return \"Underscore\";\n    }\n\n    // Strip leading underscores\n    let stripped = name;\n    while (stripped.startsWith(\"_\")) {\n        stripped = stripped.slice(1);\n    }\n    if (stripped === \"\") {\n        // Name was all underscores\n        return \"Underscore\";\n    }\n\n    // Check if the first character is a digit\n    if (stripped.length > 0 && /^\\d/.test(stripped)) {\n        return \"Field\" + stripped;\n    }\n\n    // Ensure the first letter is uppercase for export\n    let result = stripped;\n    const firstChar = stripped[0];\n    if (stripped.length > 0 && firstChar != null && firstChar !== firstChar.toUpperCase()) {\n        result = firstChar.toUpperCase() + stripped.slice(1);\n    }\n\n    // Check if the name matches a Go reserved word or predeclared identifier (case-insensitive)\n    if (GO_RESERVED_IDENTIFIERS.has(result.toLowerCase())) {\n        return \"Field\" + result;\n    }\n\n    return result;\n}\n","import { FernGeneratorExec } from \"@fern-api/browser-compatible-base-generator\";\nimport { basename } from \"@fern-api/path-utils\";\nimport path from \"path\";\nimport { BaseGoCustomConfigSchema } from \"../custom-config/BaseGoCustomConfigSchema.js\";\n\nconst DEFAULT_MODULE_PATH = \"sdk\";\n\nexport function resolveRootImportPath({\n    config,\n    customConfig\n}: {\n    config: FernGeneratorExec.config.GeneratorConfig;\n    customConfig: BaseGoCustomConfigSchema | undefined;\n}): string {\n    const suffix = getMajorVersionSuffix({ config });\n    const modulePath = getImportPath({ config, customConfig, isModulePath: true });\n    const modulePathWithSuffix =\n        suffix != null ? maybeAppendMajorVersionSuffix({ importPath: modulePath, majorVersion: suffix }) : modulePath;\n    const packagePath = customConfig?.packagePath ?? \"\";\n    return packagePath ? path.join(modulePathWithSuffix, packagePath) : modulePathWithSuffix;\n}\n\nexport function resolveRootModulePath({\n    config,\n    customConfig\n}: {\n    config: FernGeneratorExec.config.GeneratorConfig;\n    customConfig: BaseGoCustomConfigSchema | undefined;\n}): string {\n    const suffix = getMajorVersionSuffix({ config });\n    const importPath = getImportPath({ config, customConfig, isModulePath: true });\n    return suffix != null ? maybeAppendMajorVersionSuffix({ importPath, majorVersion: suffix }) : importPath;\n}\n\nfunction getImportPath({\n    config,\n    customConfig,\n    isModulePath = false\n}: {\n    config: FernGeneratorExec.config.GeneratorConfig;\n    customConfig: BaseGoCustomConfigSchema | undefined;\n    isModulePath?: boolean;\n}): string {\n    const importPath =\n        customConfig?.importPath ??\n        customConfig?.module?.path ??\n        (config.output.mode.type === \"github\"\n            ? trimPrefix(config.output.mode.repoUrl, \"https://\")\n            : DEFAULT_MODULE_PATH);\n    return isModulePath ? importPath : path.join(importPath, customConfig?.packagePath ?? \"\");\n}\n\nfunction getMajorVersionSuffix({ config }: { config: FernGeneratorExec.config.GeneratorConfig }): string | undefined {\n    const majorVersion = parseMajorVersion({ config });\n    if (majorVersion == null || majorVersion === \"v0\" || majorVersion === \"v1\") {\n        return undefined;\n    }\n    return `${majorVersion}`;\n}\n\n// parseMajorVersion returns the major version of the SDK, including Go's expected \"v\"\n// prefix, e.g. \"v0\", \"v1\", \"v2\", etc.\nfunction parseMajorVersion({ config }: { config: FernGeneratorExec.config.GeneratorConfig }): string | undefined {\n    const version = getVersion(config);\n    if (version == null) {\n        return undefined;\n    }\n    const split = version.split(\".\");\n    if (split[0] == null) {\n        return undefined;\n    }\n    const majorVersion = split[0];\n    if (majorVersion.startsWith(\"v\")) {\n        return majorVersion;\n    }\n    return `v${majorVersion}`;\n}\n\nfunction maybeAppendMajorVersionSuffix({\n    importPath,\n    majorVersion\n}: {\n    importPath: string;\n    majorVersion: string;\n}): string {\n    if (basename(importPath) === majorVersion) {\n        return importPath;\n    }\n    return `${importPath}/${majorVersion}`;\n}\n\nfunction trimPrefix(str: string, prefix: string): string {\n    if (str.startsWith(prefix)) {\n        return str.slice(prefix.length);\n    }\n    return str;\n}\n\nfunction getVersion(config: FernGeneratorExec.GeneratorConfig): string | undefined {\n    const mode = config?.output?.mode;\n    if (mode == null) {\n        return undefined;\n    }\n    return mode.type === \"github\" || mode.type === \"publish\" ? mode.version : undefined;\n}\n","import { DiscriminatedUnionTypeInstance, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { go } from \"@fern-api/go-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport declare namespace DynamicTypeInstantiationMapper {\n    interface Args {\n        typeReference: FernIr.dynamic.TypeReference;\n        value: unknown;\n        as?: ConvertedAs;\n    }\n\n    // Identifies what the type is being converted as, which sometimes influences how\n    // the type is instantiated.\n    type ConvertedAs = \"key\";\n}\n\nexport class DynamicTypeInstantiationMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public convert(args: DynamicTypeInstantiationMapper.Args): go.TypeInstantiation {\n        // eslint-disable-next-line eqeqeq\n        if (args.value === null && !this.context.isNullable(args.typeReference)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Expected non-null value, but got null\"\n            });\n        }\n        if (args.value == null) {\n            return go.TypeInstantiation.nop();\n        }\n        switch (args.typeReference.type) {\n            case \"list\":\n                return this.convertList({ list: args.typeReference.value, value: args.value });\n            case \"literal\":\n                return go.TypeInstantiation.nop();\n            case \"map\":\n                return this.convertMap({ map: args.typeReference, value: args.value });\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return this.convertNamed({ named, value: args.value, as: args.as });\n            }\n            case \"nullable\": {\n                const inner = args.typeReference.value;\n                // Special case: nullable + alias-of-collection\n                // For fields like `Services *ServicesUs50` where `type ServicesUs50 = []*ServiceUs50`,\n                // we generate `&ServicesUs50{...}` using the alias name in the composite literal.\n                // This is more idiomatic and matches the exported API type users see.\n                if (inner.type === \"named\") {\n                    const named = this.context.resolveNamedType({ typeId: inner.value });\n                    if (named?.type === \"alias\" && [\"list\", \"set\", \"map\"].includes(named.typeReference.type)) {\n                        // Build the underlying collection literal\n                        const collectionLiteral = this.convert({\n                            typeReference: named.typeReference,\n                            value: args.value,\n                            as: args.as\n                        });\n\n                        // Get the alias type reference\n                        const aliasName = this.context.getTypeName(named.declaration.name);\n                        const aliasImportPath = this.context.getImportPath(named.declaration.fernFilepath);\n\n                        // Reconstruct the composite literal using the alias name\n                        return this.reconstructAliasCollectionLiteral({\n                            collectionLiteral,\n                            aliasName,\n                            aliasImportPath\n                        });\n                    }\n                    // Special case: nullable + alias-of-literal\n                    // For fields like `SortField *SortField` where `type SortField = string` with literal value,\n                    // we use the primitive's pointer helper (e.g., fern.String(\"DEFAULT\")) instead of\n                    // trying to take the address of a type conversion which is invalid Go.\n                    if (named?.type === \"alias\" && named.typeReference.type === \"literal\") {\n                        return this.convertLiteralToOptionalPrimitive(named.typeReference.value);\n                    }\n                }\n                // Default behavior for all other nullables\n                return go.TypeInstantiation.optional(\n                    this.convert({ typeReference: inner, value: args.value, as: args.as })\n                );\n            }\n            case \"optional\": {\n                const inner = args.typeReference.value;\n                // Special case: optional + alias-of-collection\n                // For fields like `Services *ServicesUs50` where `type ServicesUs50 = []*ServiceUs50`,\n                // we generate `&ServicesUs50{...}` using the alias name in the composite literal.\n                // This is more idiomatic and matches the exported API type users see.\n                if (inner.type === \"named\") {\n                    const named = this.context.resolveNamedType({ typeId: inner.value });\n                    if (named?.type === \"alias\" && [\"list\", \"set\", \"map\"].includes(named.typeReference.type)) {\n                        // Build the underlying collection literal\n                        const collectionLiteral = this.convert({\n                            typeReference: named.typeReference,\n                            value: args.value,\n                            as: args.as\n                        });\n\n                        // Get the alias type reference\n                        const aliasName = this.context.getTypeName(named.declaration.name);\n                        const aliasImportPath = this.context.getImportPath(named.declaration.fernFilepath);\n\n                        // Reconstruct the composite literal using the alias name\n                        return this.reconstructAliasCollectionLiteral({\n                            collectionLiteral,\n                            aliasName,\n                            aliasImportPath\n                        });\n                    }\n                    // Special case: optional + alias-of-literal\n                    // For fields like `SortField *SortField` where `type SortField = string` with literal value,\n                    // we use the primitive's pointer helper (e.g., fern.String(\"DEFAULT\")) instead of\n                    // trying to take the address of a type conversion which is invalid Go.\n                    if (named?.type === \"alias\" && named.typeReference.type === \"literal\") {\n                        return this.convertLiteralToOptionalPrimitive(named.typeReference.value);\n                    }\n                }\n                // Default behavior for all other optionals\n                return go.TypeInstantiation.optional(\n                    this.convert({ typeReference: inner, value: args.value, as: args.as })\n                );\n            }\n            case \"primitive\":\n                return this.convertPrimitive({ primitive: args.typeReference.value, value: args.value, as: args.as });\n            case \"set\":\n                return this.convertList({ list: args.typeReference.value, value: args.value });\n            case \"unknown\":\n                return this.convertUnknown({ value: args.value });\n            default:\n                assertNever(args.typeReference);\n        }\n    }\n\n    public convertToPointerIfPossible(args: DynamicTypeInstantiationMapper.Args): go.TypeInstantiation {\n        const converted = this.convert(args);\n        switch (args.typeReference.type) {\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named?.type === \"enum\") {\n                    return go.TypeInstantiation.reference(\n                        go.invokeMethod({\n                            on: converted,\n                            method: \"Ptr\",\n                            arguments_: []\n                        })\n                    );\n                }\n                return converted;\n            }\n            default:\n                return converted;\n        }\n    }\n\n    private convertList({ list, value }: { list: FernIr.dynamic.TypeReference; value: unknown }): go.TypeInstantiation {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return go.TypeInstantiation.nop();\n        }\n        return go.TypeInstantiation.slice({\n            valueType: this.context.dynamicTypeMapper.convert({ typeReference: list }),\n            values: value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: list, value: v });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertMap({ map, value }: { map: FernIr.dynamic.MapType; value: unknown }): go.TypeInstantiation {\n        if (typeof value !== \"object\" || value == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n            });\n            return go.TypeInstantiation.nop();\n        }\n        return go.TypeInstantiation.map({\n            keyType: this.context.dynamicTypeMapper.convert({ typeReference: map.key }),\n            valueType: this.context.dynamicTypeMapper.convert({ typeReference: map.value }),\n            entries: Object.entries(value)\n                .sort(([keyA], [keyB]) => (keyA < keyB ? -1 : keyA > keyB ? 1 : 0))\n                .map(([key, value]) => {\n                    this.context.errors.scope(key);\n                    try {\n                        return {\n                            key: this.convert({ typeReference: map.key, value: key, as: \"key\" }),\n                            value: this.convert({ typeReference: map.value, value })\n                        };\n                    } finally {\n                        this.context.errors.unscope();\n                    }\n                })\n        });\n    }\n\n    private convertNamed({\n        named,\n        value,\n        as\n    }: {\n        named: FernIr.dynamic.NamedType;\n        value: unknown;\n        as?: DynamicTypeInstantiationMapper.ConvertedAs;\n    }): go.TypeInstantiation {\n        switch (named.type) {\n            case \"alias\":\n                return this.convertAlias({\n                    aliasType: named,\n                    value,\n                    as\n                });\n            case \"discriminatedUnion\":\n                return this.convertDiscriminatedUnion({\n                    discriminatedUnion: named,\n                    value\n                });\n            case \"enum\":\n                return this.convertEnum({ enum_: named, value });\n            case \"object\":\n                return this.convertObject({ object_: named, value });\n            case \"undiscriminatedUnion\":\n                return this.convertUndiscriminatedUnion({ undiscriminatedUnion: named, value });\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertAlias({\n        aliasType,\n        value,\n        as\n    }: {\n        aliasType: FernIr.dynamic.NamedType.Alias;\n        value: unknown;\n        as?: DynamicTypeInstantiationMapper.ConvertedAs;\n    }): go.TypeInstantiation {\n        switch (aliasType.typeReference.type) {\n            case \"literal\":\n                return go.TypeInstantiation.reference(\n                    go.invokeFunc({\n                        func: go.typeReference({\n                            name: this.context.getTypeName(aliasType.declaration.name),\n                            importPath: this.context.getImportPath(aliasType.declaration.fernFilepath)\n                        }),\n                        arguments_: [this.convertLiteralValue(aliasType.typeReference.value)]\n                    })\n                );\n            default:\n                return this.convert({ typeReference: aliasType.typeReference, value, as });\n        }\n    }\n\n    private reconstructAliasCollectionLiteral({\n        collectionLiteral,\n        aliasName,\n        aliasImportPath\n    }: {\n        collectionLiteral: go.TypeInstantiation;\n        aliasName: string;\n        aliasImportPath: string;\n    }): go.TypeInstantiation {\n        // Reconstruct the composite literal using the alias name\n        const internal = collectionLiteral.internalType;\n        // Note: sets are converted to slices via convertList, so they're handled by the slice case\n        if (internal.type === \"slice\") {\n            return go.TypeInstantiation.reference(\n                go.codeblock((writer) => {\n                    writer.write(\"&\");\n                    writer.writeNode(\n                        go.typeReference({\n                            name: aliasName,\n                            importPath: aliasImportPath\n                        })\n                    );\n\n                    const values = internal.values;\n                    if (values.length === 0) {\n                        writer.write(\"{}\");\n                        return;\n                    }\n\n                    writer.writeLine(\"{\");\n                    writer.indent();\n                    for (const v of values) {\n                        writer.writeNode(v);\n                        writer.writeLine(\",\");\n                    }\n                    writer.dedent();\n                    writer.write(\"}\");\n                })\n            );\n        }\n        if (internal.type === \"map\") {\n            return go.TypeInstantiation.reference(\n                go.codeblock((writer) => {\n                    writer.write(\"&\");\n                    writer.writeNode(\n                        go.typeReference({\n                            name: aliasName,\n                            importPath: aliasImportPath\n                        })\n                    );\n\n                    const entries = internal.entries;\n                    if (entries.length === 0) {\n                        writer.write(\"{}\");\n                        return;\n                    }\n\n                    writer.writeLine(\"{\");\n                    writer.indent();\n                    for (const entry of entries) {\n                        writer.writeNode(entry.key);\n                        writer.write(\": \");\n                        writer.writeNode(entry.value);\n                        writer.writeLine(\",\");\n                    }\n                    writer.dedent();\n                    writer.write(\"}\");\n                })\n            );\n        }\n        // Fallback: if not a slice or map, use the underlying type approach\n        return go.TypeInstantiation.reference(\n            go.codeblock((writer) => {\n                writer.write(\"&\");\n                writer.writeNode(collectionLiteral);\n            })\n        );\n    }\n\n    private convertLiteralValue(literal: FernIr.dynamic.LiteralType): go.TypeInstantiation {\n        switch (literal.type) {\n            case \"boolean\":\n                return go.TypeInstantiation.bool(literal.value);\n            case \"string\":\n                return go.TypeInstantiation.string(literal.value);\n            default:\n                assertNever(literal);\n        }\n    }\n\n    private convertLiteralToOptionalPrimitive(literal: FernIr.dynamic.LiteralType): go.TypeInstantiation {\n        switch (literal.type) {\n            case \"boolean\":\n                return go.TypeInstantiation.optional(go.TypeInstantiation.bool(literal.value));\n            case \"string\":\n                return go.TypeInstantiation.optional(go.TypeInstantiation.string(literal.value));\n            default:\n                assertNever(literal);\n        }\n    }\n\n    private convertDiscriminatedUnion({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): go.TypeInstantiation {\n        const structTypeReference = this.context.getGoTypeReferenceFromDeclaration({\n            declaration: discriminatedUnion.declaration\n        });\n        const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n            discriminatedUnion,\n            value\n        });\n        if (discriminatedUnionTypeInstance == null) {\n            return go.TypeInstantiation.nop();\n        }\n        const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n        const baseFields = this.getBaseFields({\n            discriminatedUnionTypeInstance,\n            singleDiscriminatedUnionType: unionVariant\n        });\n        switch (unionVariant.type) {\n            case \"samePropertiesAsObject\": {\n                const named = this.context.resolveNamedType({\n                    typeId: unionVariant.typeId\n                });\n                if (named == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return go.TypeInstantiation.structPointer({\n                    typeReference: structTypeReference,\n                    fields: [\n                        {\n                            name: this.context.getFieldName(unionVariant.discriminantValue.name),\n                            value: this.convertNamed({ named, value: discriminatedUnionTypeInstance.value })\n                        },\n                        ...baseFields\n                    ]\n                });\n            }\n            case \"singleProperty\": {\n                const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n                if (record == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                try {\n                    this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n                    return go.TypeInstantiation.structPointer({\n                        typeReference: structTypeReference,\n                        fields: [\n                            {\n                                name: this.context.getFieldName(unionVariant.discriminantValue.name),\n                                value: this.convert({\n                                    typeReference: unionVariant.typeReference,\n                                    value: record[unionVariant.discriminantValue.wireValue]\n                                })\n                            },\n                            ...baseFields\n                        ]\n                    });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }\n            case \"noProperties\":\n                return go.TypeInstantiation.structPointer({\n                    typeReference: structTypeReference,\n                    fields: [\n                        {\n                            // Unions with no properties require the discriminant property to be set.\n                            name: this.context.getFieldName(discriminatedUnionTypeInstance.discriminantValue.name),\n                            value: go.TypeInstantiation.string(unionVariant.discriminantValue.wireValue)\n                        },\n                        ...baseFields\n                    ]\n                });\n            default:\n                assertNever(unionVariant);\n        }\n    }\n\n    private getBaseFields({\n        discriminatedUnionTypeInstance,\n        singleDiscriminatedUnionType\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        singleDiscriminatedUnionType: FernIr.dynamic.SingleDiscriminatedUnionType;\n    }): go.StructField[] {\n        const properties = this.context.associateByWireValue({\n            parameters: singleDiscriminatedUnionType.properties ?? [],\n            values: this.context.getRecord(discriminatedUnionTypeInstance.value) ?? {},\n\n            // We're only selecting the base properties here. The rest of the properties\n            // are handled by the union variant.\n            ignoreMissingParameters: true\n        });\n        return properties.map((property) => {\n            this.context.errors.scope(property.name.wireValue);\n            try {\n                return {\n                    name: this.context.getFieldName(property.name.name),\n                    value: this.convert(property)\n                };\n            } finally {\n                this.context.errors.unscope();\n            }\n        });\n    }\n\n    private convertObject({\n        object_,\n        value\n    }: {\n        object_: FernIr.dynamic.ObjectType;\n        value: unknown;\n    }): go.TypeInstantiation {\n        const properties = this.context.associateByWireValue({\n            parameters: object_.properties,\n            values: this.context.getRecord(value) ?? {}\n        });\n        return go.TypeInstantiation.structPointer({\n            typeReference: go.typeReference({\n                name: this.context.getTypeName(object_.declaration.name),\n                importPath: this.context.getImportPath(object_.declaration.fernFilepath)\n            }),\n            fields: properties.map((property) => {\n                this.context.errors.scope(property.name.wireValue);\n                try {\n                    return {\n                        name: this.context.getFieldName(property.name.name),\n                        value: this.convert(property)\n                    };\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertEnum({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): go.TypeInstantiation {\n        const name = this.getEnumValueName({ enum_, value });\n        if (name == null) {\n            return go.TypeInstantiation.nop();\n        }\n        return go.TypeInstantiation.enum(\n            go.typeReference({\n                name,\n                importPath: this.context.getImportPath(enum_.declaration.fernFilepath)\n            })\n        );\n    }\n\n    private getEnumValueName({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected enum value string, got: ${typeof value}`\n            });\n            return undefined;\n        }\n        const enumValue = enum_.values.find((v) => v.wireValue === value);\n        if (enumValue == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `An enum value named \"${value}\" does not exist in this context`\n            });\n            return undefined;\n        }\n        return `${this.context.getTypeName(enum_.declaration.name)}${this.context.getTypeName(enumValue.name)}`;\n    }\n\n    private convertUndiscriminatedUnion({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): go.TypeInstantiation {\n        const result = this.findMatchingUndiscriminatedUnionType({\n            undiscriminatedUnion,\n            value\n        });\n        if (result == null) {\n            return go.TypeInstantiation.nop();\n        }\n        const fieldName = this.getUndiscriminatedUnionFieldName({ typeReference: result.valueTypeReference });\n        if (fieldName == null) {\n            return go.TypeInstantiation.nop();\n        }\n        return go.TypeInstantiation.structPointer({\n            typeReference: this.context.getGoTypeReferenceFromDeclaration({\n                declaration: undiscriminatedUnion.declaration\n            }),\n            fields: [\n                {\n                    name: fieldName,\n                    value: result.typeInstantiation\n                }\n            ]\n        });\n    }\n\n    private findMatchingUndiscriminatedUnionType({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): { valueTypeReference: FernIr.dynamic.TypeReference; typeInstantiation: go.TypeInstantiation } | undefined {\n        for (const typeReference of undiscriminatedUnion.types) {\n            try {\n                const typeInstantiation = this.convert({ typeReference, value });\n                // Skip types that result in nop() - this means the value didn't match the type\n                if (go.TypeInstantiation.isNop(typeInstantiation)) {\n                    continue;\n                }\n                return { valueTypeReference: typeReference, typeInstantiation };\n            } catch (e) {\n                continue;\n            }\n        }\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value`\n        });\n        return undefined;\n    }\n\n    private getUndiscriminatedUnionFieldName({\n        typeReference\n    }: {\n        typeReference: FernIr.dynamic.TypeReference;\n    }): string | undefined {\n        switch (typeReference.type) {\n            case \"list\":\n                return this.getUndiscriminatedUnionFieldNameForList({ list: typeReference });\n            case \"literal\":\n                return this.getUndiscriminatedUnionFieldNameForLiteral({ literal: typeReference.value });\n            case \"map\":\n                return this.getUndiscriminatedUnionFieldNameForMap({ map: typeReference });\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: typeReference.value });\n                if (named == null) {\n                    return undefined;\n                }\n                return this.context.getTypeName(named.declaration.name);\n            }\n            case \"optional\":\n                return this.getUndiscriminatedUnionFieldNameForOptional({ typeReference });\n            case \"nullable\":\n                return this.getUndiscriminatedUnionFieldNameForOptional({ typeReference });\n            case \"primitive\":\n                return this.getUndiscriminatedUnionFieldNameForPrimitive({ primitive: typeReference.value });\n            case \"set\":\n                return this.getUndiscriminatedUnionFieldNameForSet({ set: typeReference });\n            case \"unknown\":\n                return \"Unknown\";\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    private getUndiscriminatedUnionFieldNameForList({\n        list\n    }: {\n        list: FernIr.dynamic.TypeReference.List;\n    }): string | undefined {\n        const fieldName = this.getUndiscriminatedUnionFieldName({ typeReference: list.value });\n        if (fieldName == null) {\n            return undefined;\n        }\n        return `${fieldName}List`;\n    }\n\n    private getUndiscriminatedUnionFieldNameForMap({ map }: { map: FernIr.dynamic.MapType }): string | undefined {\n        const keyFieldName = this.getUndiscriminatedUnionFieldName({ typeReference: map.key });\n        if (keyFieldName == null) {\n            return undefined;\n        }\n        const valueFieldName = this.getUndiscriminatedUnionFieldName({ typeReference: map.value });\n        if (valueFieldName == null) {\n            return undefined;\n        }\n        return `${keyFieldName}${valueFieldName}Map`;\n    }\n\n    private getUndiscriminatedUnionFieldNameForOptional({\n        typeReference\n    }: {\n        typeReference: FernIr.dynamic.TypeReference.Optional | FernIr.dynamic.TypeReference.Nullable;\n    }): string | undefined {\n        const fieldName = this.getUndiscriminatedUnionFieldName({ typeReference: typeReference.value });\n        if (fieldName == null) {\n            return undefined;\n        }\n        return `${fieldName}Optional`;\n    }\n\n    private getUndiscriminatedUnionFieldNameForSet({\n        set\n    }: {\n        set: FernIr.dynamic.TypeReference.Set;\n    }): string | undefined {\n        const fieldName = this.getUndiscriminatedUnionFieldName({ typeReference: set.value });\n        if (fieldName == null) {\n            return undefined;\n        }\n        return `${fieldName}Set`;\n    }\n\n    private getUndiscriminatedUnionFieldNameForLiteral({\n        literal\n    }: {\n        literal: FernIr.dynamic.LiteralType;\n    }): string | undefined {\n        switch (literal.type) {\n            case \"boolean\":\n                if (literal.value) {\n                    return \"TrueLiteral\";\n                }\n                return \"FalseLiteral\";\n            case \"string\":\n                return `${literal.value}StringLiteral`;\n            default:\n                assertNever(literal);\n        }\n    }\n\n    private getUndiscriminatedUnionFieldNameForPrimitive({\n        primitive\n    }: {\n        primitive: FernIr.dynamic.PrimitiveTypeV1;\n    }): string {\n        switch (primitive) {\n            case \"INTEGER\":\n            case \"UINT\":\n                return \"Integer\";\n            case \"LONG\":\n            case \"UINT_64\":\n                return \"Long\";\n            case \"FLOAT\":\n            case \"DOUBLE\":\n                return \"Double\";\n            case \"BOOLEAN\":\n                return \"Boolean\";\n            case \"BIG_INTEGER\":\n            case \"STRING\":\n                return \"String\";\n            case \"UUID\":\n                return \"Uuid\";\n            case \"DATE\":\n                return \"Date\";\n            case \"DATE_TIME\":\n                return \"DateTime\";\n            case \"BASE_64\":\n                return \"Base64\";\n            default:\n                assertNever(primitive);\n        }\n    }\n\n    private convertUnknown({ value }: { value: unknown }): go.TypeInstantiation {\n        return go.TypeInstantiation.any(value);\n    }\n\n    private convertPrimitive({\n        primitive,\n        value,\n        as\n    }: {\n        primitive: FernIr.dynamic.PrimitiveTypeV1;\n        value: unknown;\n        as?: DynamicTypeInstantiationMapper.ConvertedAs;\n    }): go.TypeInstantiation {\n        switch (primitive) {\n            case \"INTEGER\":\n            case \"UINT\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return go.TypeInstantiation.int(num);\n            }\n            case \"LONG\":\n            case \"UINT_64\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return go.TypeInstantiation.int64(num);\n            }\n            case \"FLOAT\":\n            case \"DOUBLE\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return go.TypeInstantiation.float64(num);\n            }\n            case \"BOOLEAN\": {\n                const bool = this.getValueAsBoolean({ value, as });\n                if (bool == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return go.TypeInstantiation.bool(bool);\n            }\n            case \"STRING\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return go.TypeInstantiation.string(str);\n            }\n            case \"DATE\": {\n                const date = this.context.getValueAsString({ value });\n                if (date == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return go.TypeInstantiation.date(date);\n            }\n            case \"DATE_TIME\": {\n                const dateTime = this.context.getValueAsString({ value });\n                if (dateTime == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                const normalizedDateTime = this.normalizeDateTimeString(dateTime);\n                return go.TypeInstantiation.dateTime(normalizedDateTime);\n            }\n            case \"UUID\": {\n                const uuid = this.context.getValueAsString({ value });\n                if (uuid == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return go.TypeInstantiation.uuid(uuid);\n            }\n            case \"BASE_64\": {\n                const base64 = this.context.getValueAsString({ value });\n                if (base64 == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return go.TypeInstantiation.bytes(base64);\n            }\n            case \"BIG_INTEGER\": {\n                const bigInt = this.context.getValueAsString({ value });\n                if (bigInt == null) {\n                    return go.TypeInstantiation.nop();\n                }\n                return go.TypeInstantiation.string(bigInt);\n            }\n            default:\n                assertNever(primitive);\n        }\n    }\n\n    private getValueAsNumber({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeInstantiationMapper.ConvertedAs;\n    }): number | undefined {\n        const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n        return this.context.getValueAsNumber({ value: num });\n    }\n\n    private getValueAsBoolean({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeInstantiationMapper.ConvertedAs;\n    }): boolean | undefined {\n        const bool =\n            as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : value === \"false\" ? false : value) : value;\n        return this.context.getValueAsBoolean({ value: bool });\n    }\n\n    private normalizeDateTimeString(dateTime: string): string {\n        if (/^\\d{4}-\\d{2}-\\d{2}$/.test(dateTime)) {\n            return `${dateTime}T00:00:00Z`;\n        }\n        if (/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$/.test(dateTime)) {\n            return `${dateTime}Z`;\n        }\n        return dateTime;\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { go } from \"@fern-api/go-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport declare namespace DynamicTypeMapper {\n    interface Args {\n        typeReference: FernIr.dynamic.TypeReference;\n    }\n}\n\nexport class DynamicTypeMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public convert(args: DynamicTypeMapper.Args): go.Type {\n        switch (args.typeReference.type) {\n            case \"list\":\n                return go.Type.slice(this.convert({ typeReference: args.typeReference.value }));\n            case \"literal\":\n                return this.convertLiteral({ literal: args.typeReference.value });\n            case \"map\":\n                return go.Type.map(\n                    this.convert({ typeReference: args.typeReference.key }),\n                    this.convert({ typeReference: args.typeReference.value })\n                );\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named == null) {\n                    return this.convertUnknown();\n                }\n                return this.convertNamed({ named });\n            }\n            case \"optional\":\n                return go.Type.optional(this.convert({ typeReference: args.typeReference.value }));\n            case \"nullable\":\n                return go.Type.optional(this.convert({ typeReference: args.typeReference.value }));\n            case \"primitive\":\n                return this.convertPrimitive({ primitive: args.typeReference.value });\n            case \"set\":\n                return go.Type.slice(this.convert({ typeReference: args.typeReference }));\n            case \"unknown\":\n                return this.convertUnknown();\n            default:\n                assertNever(args.typeReference);\n        }\n    }\n\n    private convertLiteral({ literal }: { literal: FernIr.dynamic.LiteralType }): go.Type {\n        switch (literal.type) {\n            case \"boolean\":\n                return go.Type.bool();\n            case \"string\":\n                return go.Type.string();\n        }\n    }\n\n    private convertNamed({ named }: { named: FernIr.dynamic.NamedType }): go.Type {\n        const goTypeReference = go.Type.reference(\n            go.typeReference({\n                name: this.context.getTypeName(named.declaration.name),\n                importPath: this.context.getImportPath(named.declaration.fernFilepath)\n            })\n        );\n        switch (named.type) {\n            case \"alias\":\n            case \"enum\":\n                return goTypeReference;\n            case \"discriminatedUnion\":\n            case \"object\":\n            case \"undiscriminatedUnion\":\n                return go.Type.pointer(goTypeReference);\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertUnknown(): go.Type {\n        return go.Type.any();\n    }\n\n    private convertPrimitive({ primitive }: { primitive: FernIr.dynamic.PrimitiveTypeV1 }): go.Type {\n        switch (primitive) {\n            case \"INTEGER\":\n                return go.Type.int();\n            case \"UINT\":\n                return go.Type.int();\n            case \"LONG\":\n                return go.Type.int64();\n            case \"UINT_64\":\n                return go.Type.int64();\n            case \"FLOAT\":\n                return go.Type.float64();\n            case \"DOUBLE\":\n                return go.Type.float64();\n            case \"BOOLEAN\":\n                return go.Type.bool();\n            case \"STRING\":\n                return go.Type.string();\n            case \"DATE\":\n                return go.Type.date();\n            case \"DATE_TIME\":\n                return go.Type.dateTime();\n            case \"UUID\":\n                return go.Type.uuid();\n            case \"BASE_64\":\n                return go.Type.bytes();\n            case \"BIG_INTEGER\":\n                return go.Type.string();\n            default:\n                assertNever(primitive);\n        }\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { go } from \"@fern-api/go-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport interface FilePropertyInfo {\n    fileFields: go.StructField[];\n    bodyPropertyFields: go.StructField[];\n}\n\nexport class FilePropertyMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public getFilePropertyInfo({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.FileUploadRequestBody;\n        value: unknown;\n    }): FilePropertyInfo {\n        const result: FilePropertyInfo = {\n            fileFields: [],\n            bodyPropertyFields: []\n        };\n        const record = this.context.getRecord(value) ?? {};\n        for (const property of body.properties) {\n            switch (property.type) {\n                case \"file\":\n                    result.fileFields.push({\n                        name: this.context.getFieldName(property.name),\n                        value: this.getSingleFileProperty({ property, record })\n                    });\n                    break;\n                case \"fileArray\":\n                    result.fileFields.push({\n                        name: this.context.getFieldName(property.name),\n                        value: this.getArrayFileProperty({ property, record })\n                    });\n                    break;\n                case \"bodyProperty\":\n                    result.bodyPropertyFields.push({\n                        name: this.context.getFieldName(property.name.name),\n                        value: this.getBodyProperty({ property, record })\n                    });\n                    break;\n                default:\n                    assertNever(property);\n            }\n        }\n        return result;\n    }\n\n    private getSingleFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): go.TypeInstantiation {\n        // fix(williammcadams): always return a string reader even if no example was provided\n        const fileValue = this.context.getSingleFileValue({ property, record }) || \"\";\n        return go.TypeInstantiation.reference(this.context.getNewStringsReaderFunctionInvocation(fileValue));\n    }\n\n    private getArrayFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): go.TypeInstantiation {\n        const fileValues = this.context.getFileArrayValues({ property, record });\n        if (fileValues == null) {\n            return go.TypeInstantiation.nop();\n        }\n        return go.TypeInstantiation.slice({\n            valueType: go.Type.reference(this.context.getIoReaderTypeReference()),\n            values: fileValues.map((value) =>\n                go.TypeInstantiation.reference(this.context.getNewStringsReaderFunctionInvocation(value))\n            )\n        });\n    }\n\n    private getBodyProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.NamedParameter;\n        record: Record<string, unknown>;\n    }): go.TypeInstantiation {\n        const bodyPropertyValue = record[property.name.wireValue];\n        if (bodyPropertyValue == null) {\n            return go.TypeInstantiation.nop();\n        }\n        return this.context.dynamicTypeInstantiationMapper.convert({\n            typeReference: property.typeReference,\n            value: bodyPropertyValue\n        });\n    }\n}\n","import { AbstractFormatter, Options, Scope, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { go } from \"@fern-api/go-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper.js\";\n\nconst SNIPPET_PACKAGE_NAME = \"example\";\nconst SNIPPET_IMPORT_PATH = \"fern\";\nconst SNIPPET_FUNC_NAME = \"do\";\nconst CLIENT_VAR_NAME = \"client\";\nconst TypeInst = go.TypeInstantiation;\nconst WIREMOCK_BASE_URL = \"WireMockBaseURL\";\nconst WIREMOCK_CLIENT_VAR_NAME = \"WireMockClient\";\n\nexport class EndpointSnippetGenerator {\n    private context: DynamicSnippetsGeneratorContext;\n    private formatter: AbstractFormatter | undefined;\n\n    constructor({ context, formatter }: { context: DynamicSnippetsGeneratorContext; formatter?: AbstractFormatter }) {\n        this.context = context;\n        this.formatter = formatter;\n    }\n\n    public async generateSnippet({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): Promise<string> {\n        const outputWiremockTests =\n            (options?.config as { outputWiremockTests?: boolean })?.outputWiremockTests ?? false;\n        if (outputWiremockTests) {\n            return this.generateWiremockTest({ endpoint, snippet: request });\n        }\n        const code = this.buildCodeBlock({ endpoint, snippet: request });\n        return await code.toStringAsync({\n            packageName: SNIPPET_PACKAGE_NAME,\n            importPath: SNIPPET_IMPORT_PATH,\n            rootImportPath: this.context.rootImportPath,\n            customConfig: this.context.customConfig ?? {},\n            formatter: this.formatter\n        });\n    }\n\n    public generateSnippetSync({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): string {\n        const outputWiremockTests =\n            (options?.config as { outputWiremockTests?: boolean })?.outputWiremockTests ?? false;\n        if (outputWiremockTests) {\n            return this.generateWiremockTest({ endpoint, snippet: request });\n        }\n        const code = this.buildCodeBlock({ endpoint, snippet: request });\n        return code.toString({\n            packageName: SNIPPET_PACKAGE_NAME,\n            importPath: SNIPPET_IMPORT_PATH,\n            rootImportPath: this.context.rootImportPath,\n            customConfig: this.context.customConfig ?? {},\n            formatter: this.formatter\n        });\n    }\n\n    public async generateSnippetAst({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): Promise<go.AstNode> {\n        throw new Error(\"Unsupported\");\n    }\n\n    private generateWiremockTest({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): string {\n        const code = this.buildWiremockTestCodeBlock({ endpoint, snippet });\n        return code.toString({\n            packageName: \"wiremock\",\n            importPath: SNIPPET_IMPORT_PATH,\n            rootImportPath: this.context.rootImportPath,\n            customConfig: this.context.customConfig ?? {},\n            formatter: this.formatter\n        });\n    }\n\n    private buildCodeBlock({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): go.AstNode {\n        return go.codeblock((writer) => {\n            writer.writeNode(\n                go.func({\n                    name: SNIPPET_FUNC_NAME,\n                    parameters: [],\n                    return_: [],\n                    body: go.codeblock((writer) => {\n                        writer.writeNode(this.constructClient({ endpoint, snippet }));\n                        writer.writeLine();\n                        writer.writeNode(this.callMethod({ endpoint, snippet }));\n                    })\n                })\n            );\n            writer.writeNewLineIfLastLineNot();\n        });\n    }\n\n    private buildWiremockTestCodeBlock({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): go.AstNode {\n        return go.codeblock((writer) => {\n            writer.writeNode(\n                go.func({\n                    name: \"Test\" + this.context.getTestMethodName(endpoint) + \"WithWireMock\",\n                    parameters: [\n                        go.parameter({\n                            name: \"t\",\n                            type: go.Type.pointer(go.Type.reference(this.context.getTestingTypeReference()))\n                        })\n                    ],\n                    return_: [],\n                    body: go.codeblock((writer) => {\n                        for (const node of this.buildWiremockTestSetup({ endpoint })) {\n                            writer.writeNode(node);\n                            writer.writeLine();\n                        }\n                        writer.writeLine();\n                        writer.writeNode(this.constructWiremockTestClient({ endpoint, snippet }));\n                        writer.writeLine();\n                        writer.writeNode(\n                            this.callClientMethodAndAssert({ endpoint, snippet, includeTestIdHeader: true })\n                        );\n                    })\n                })\n            );\n            // Not including error case for now until I can figure out why its not matching the wiremock stub\n            // writer.writeLine();\n            // writer.writeNode(\n            //     go.func({\n            //         name: \"Test\" + this.context.getMethodName(endpoint.declaration.name) + \"Error\" + \"WithWireMock\",\n            //         parameters: [\n            //             go.parameter({\n            //                 name: \"t\",\n            //                 type: go.Type.pointer(go.Type.reference(this.context.getTestingTypeReference()))\n            //             })\n            //         ],\n            //         return_: [],\n            //         body: go.codeblock((writer) => {\n            //             for (const node of this.buildWiremockTestSetup({ endpoint, errorCase: true })) {\n            //                 writer.writeNode(node);\n            //                 writer.writeLine();\n            //             }\n            //             writer.writeLine();\n            //             writer.writeNode(this.constructWiremockTestClient({ endpoint, snippet }));\n            //             writer.writeLine();\n            //             writer.writeNode(this.callClientMethodAndAssert({ endpoint, snippet }));\n            //         })\n            //     })\n            // );\n            writer.writeNewLineIfLastLineNot();\n        });\n    }\n\n    private constructClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): go.CodeBlock {\n        return go.codeblock((writer) => {\n            writer.write(`${CLIENT_VAR_NAME} := `);\n            writer.writeNode(this.getRootClientFuncInvocation(this.getConstructorArgs({ endpoint, snippet })));\n        });\n    }\n\n    private constructWiremockTestClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): go.CodeBlock {\n        return go.codeblock((writer) => {\n            writer.write(`${CLIENT_VAR_NAME} := `);\n            writer.writeNode(this.getRootClientFuncInvocation(this.getWiremockTestConstructorArgs()));\n        });\n    }\n\n    private writeMethodInvocation({\n        writer,\n        endpoint,\n        snippet,\n        includeTestIdHeader\n    }: {\n        writer: go.Writer;\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        includeTestIdHeader?: boolean;\n    }): void {\n        const { otherArgs, requestArg } = this.getMethodArgs({ endpoint, snippet });\n        const optionArgsInvocation = includeTestIdHeader\n            ? [\n                  go.codeblock((writer) => {\n                      writer.writeNode(\n                          go.invokeFunc({\n                              func: go.typeReference({\n                                  name: \"WithHTTPHeader\",\n                                  importPath: this.context.getOptionImportPath()\n                              }),\n                              arguments_: [go.codeblock(`http.Header{\"X-Test-Id\": []string{\"TEST-ID-PLACEHOLDER\"}}`)]\n                          })\n                      );\n                  })\n              ]\n            : [];\n\n        if (requestArg != null) {\n            if (requestArg instanceof go.TypeInstantiation && go.TypeInstantiation.isNop(requestArg)) {\n                writer.writeNode(\n                    go.invokeMethod({\n                        on: go.codeblock(CLIENT_VAR_NAME),\n                        method: this.getMethod({ endpoint }),\n                        arguments_: [\n                            this.context.getContextTodoFunctionInvocation(),\n                            ...otherArgs,\n                            go.codeblock(\"nil\"),\n                            ...optionArgsInvocation\n                        ]\n                    })\n                );\n            } else {\n                writer.write(\"request := \");\n                writer.writeNode(requestArg);\n                writer.writeLine();\n\n                const requestRef = go.codeblock(\"request\");\n                writer.writeNode(\n                    go.invokeMethod({\n                        on: go.codeblock(CLIENT_VAR_NAME),\n                        method: this.getMethod({ endpoint }),\n                        arguments_: [\n                            this.context.getContextTodoFunctionInvocation(),\n                            ...otherArgs,\n                            requestRef,\n                            ...optionArgsInvocation\n                        ]\n                    })\n                );\n            }\n        } else {\n            writer.writeNode(\n                go.invokeMethod({\n                    on: go.codeblock(CLIENT_VAR_NAME),\n                    method: this.getMethod({ endpoint }),\n                    arguments_: [this.context.getContextTodoFunctionInvocation(), ...otherArgs, ...optionArgsInvocation]\n                })\n            );\n        }\n    }\n\n    private callMethod({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): go.CodeBlock {\n        return go.codeblock((writer) => {\n            this.writeMethodInvocation({ writer, endpoint, snippet });\n        });\n    }\n\n    private getConstructorArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): go.AstNode[] {\n        const args: go.AstNode[] = [];\n        const baseUrlArg = this.getConstructorBaseUrlArg({\n            baseUrl: snippet.baseURL,\n            environment: snippet.environment\n        });\n        if (baseUrlArg != null) {\n            args.push(baseUrlArg);\n        }\n        if (endpoint.auth != null) {\n            if (snippet.auth != null) {\n                args.push(...this.getConstructorAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n            } else {\n                this.context.errors.add({\n                    severity: Severity.Warning,\n                    message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n                });\n            }\n        }\n        this.context.errors.scope(Scope.Headers);\n        if (this.context.ir.headers != null && snippet.headers != null) {\n            args.push(...this.getConstructorHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers }));\n        }\n        this.context.errors.unscope();\n        return args;\n    }\n\n    private getWiremockTestConstructorArgs(): go.AstNode[] {\n        return [\n            go.codeblock((writer) => {\n                writer.writeNode(\n                    go.invokeFunc({\n                        func: go.typeReference({\n                            name: \"WithBaseURL\",\n                            importPath: this.context.getOptionImportPath()\n                        }),\n                        arguments_: [go.codeblock(WIREMOCK_BASE_URL)]\n                    })\n                );\n            })\n        ];\n    }\n\n    private getConstructorAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): go.AstNode[] {\n        if (values.type !== auth.type) {\n            this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n            return [];\n        }\n        switch (auth.type) {\n            case \"basic\":\n                return values.type === \"basic\" ? [this.getConstructorBasicAuthArg({ auth, values })] : [];\n            case \"bearer\":\n                return values.type === \"bearer\" ? [this.getConstructorBearerAuthArg({ auth, values })] : [];\n            case \"header\":\n                return values.type === \"header\" ? [this.getConstructorHeaderAuthArg({ auth, values })] : [];\n            case \"oauth\":\n                return values.type === \"oauth\" ? [this.getConstructorOAuthAuthArg({ values })] : [];\n            case \"inferred\":\n                return values.type === \"inferred\" ? this.getConstructorInferredAuthArgs({ auth, values }) : [];\n            default:\n                assertNever(auth);\n        }\n    }\n\n    private addError(message: string): void {\n        this.context.errors.add({ severity: Severity.Critical, message });\n    }\n\n    private addWarning(message: string): void {\n        this.context.errors.add({ severity: Severity.Warning, message });\n    }\n\n    private getConstructorBasicAuthArg({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BasicAuth;\n        values: FernIr.dynamic.BasicAuthValues;\n    }): go.AstNode {\n        return go.codeblock((writer) => {\n            writer.writeNode(\n                go.invokeFunc({\n                    func: go.typeReference({\n                        name: \"WithBasicAuth\",\n                        importPath: this.context.getOptionImportPath()\n                    }),\n                    arguments_: [\n                        go.TypeInstantiation.string(values.username),\n                        go.TypeInstantiation.string(values.password)\n                    ]\n                })\n            );\n        });\n    }\n\n    private getConstructorBaseUrlArg({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): go.AstNode | undefined {\n        const baseUrlArg = this.getBaseUrlArg({ baseUrl, environment });\n        if (baseUrlArg == null) {\n            return undefined;\n        }\n        return go.codeblock((writer) => {\n            writer.writeNode(\n                go.invokeFunc({\n                    func: go.typeReference({\n                        name: \"WithBaseURL\",\n                        importPath: this.context.getOptionImportPath()\n                    }),\n                    arguments_: [baseUrlArg]\n                })\n            );\n        });\n    }\n\n    private getBaseUrlArg({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): go.AstNode | undefined {\n        if (baseUrl != null && environment != null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Cannot specify both baseUrl and environment options\"\n            });\n            return undefined;\n        }\n        if (baseUrl != null) {\n            return go.TypeInstantiation.string(baseUrl);\n        }\n        if (environment != null) {\n            if (this.context.isSingleEnvironmentID(environment)) {\n                const typeReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n                if (typeReference == null) {\n                    this.context.errors.add({\n                        severity: Severity.Warning,\n                        message: `Environment ${JSON.stringify(environment)} was not found`\n                    });\n                    return undefined;\n                }\n                return go.TypeInstantiation.reference(typeReference);\n            }\n            if (this.context.isMultiEnvironmentValues(environment)) {\n                this.context.errors.add({\n                    severity: Severity.Warning,\n                    message:\n                        \"The Go SDK doesn't support a multi-environment client option yet; use the baseUrl option instead\"\n                });\n            }\n        }\n        return undefined;\n    }\n\n    private getConstructorBearerAuthArg({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BearerAuth;\n        values: FernIr.dynamic.BearerAuthValues;\n    }): go.AstNode {\n        return go.codeblock((writer) => {\n            writer.writeNode(\n                go.invokeFunc({\n                    func: go.typeReference({\n                        name: `With${auth.token.pascalCase.unsafeName}`,\n                        importPath: this.context.getOptionImportPath()\n                    }),\n                    arguments_: [go.TypeInstantiation.string(values.token)]\n                })\n            );\n        });\n    }\n\n    private getConstructorHeaderAuthArg({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.HeaderAuth;\n        values: FernIr.dynamic.HeaderAuthValues;\n    }): go.AstNode {\n        return go.codeblock((writer) => {\n            writer.writeNode(\n                go.invokeFunc({\n                    func: go.typeReference({\n                        name: `With${auth.header.name.name.pascalCase.unsafeName}`,\n                        importPath: this.context.getOptionImportPath()\n                    }),\n                    arguments_: [\n                        this.context.dynamicTypeInstantiationMapper.convert({\n                            typeReference: auth.header.typeReference,\n                            value: values.value\n                        })\n                    ]\n                })\n            );\n        });\n    }\n\n    private getConstructorOAuthAuthArg({ values }: { values: FernIr.dynamic.OAuthValues }): go.AstNode {\n        return go.codeblock((writer) => {\n            writer.writeNode(\n                go.invokeFunc({\n                    func: go.typeReference({\n                        name: \"WithClientCredentials\",\n                        importPath: this.context.getOptionImportPath()\n                    }),\n                    arguments_: [\n                        go.TypeInstantiation.string(values.clientId),\n                        go.TypeInstantiation.string(values.clientSecret)\n                    ]\n                })\n            );\n        });\n    }\n\n    private getConstructorInferredAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.InferredAuth;\n        values: FernIr.dynamic.InferredAuthValues;\n    }): go.AstNode[] {\n        const parameters = auth.parameters;\n        if (parameters == null || parameters.length === 0) {\n            return [];\n        }\n        const args: go.AstNode[] = [];\n        for (const param of parameters) {\n            // Skip optional and literal parameters — they don't have WithXxx() options.\n            if (param.typeReference.type === \"optional\" || param.typeReference.type === \"literal\") {\n                continue;\n            }\n            const wireValue = param.name.wireValue;\n            const value = values.values?.[wireValue] ?? param.name.name.originalName;\n            const typeInstantiation = this.context.dynamicTypeInstantiationMapper.convert({\n                typeReference: param.typeReference,\n                value\n            });\n            if (go.TypeInstantiation.isNop(typeInstantiation)) {\n                continue;\n            }\n            args.push(\n                go.codeblock((writer) => {\n                    writer.writeNode(\n                        go.invokeFunc({\n                            func: go.typeReference({\n                                name: `With${param.name.name.pascalCase.unsafeName}`,\n                                importPath: this.context.getOptionImportPath()\n                            }),\n                            arguments_: [typeInstantiation]\n                        })\n                    );\n                })\n            );\n        }\n        return args;\n    }\n\n    private getConstructorHeaderArgs({\n        headers,\n        values\n    }: {\n        headers: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): go.AstNode[] {\n        const args: go.AstNode[] = [];\n        for (const header of headers) {\n            const value = values[header.name.wireValue];\n            const arg = this.getConstructorHeaderArg({ header, value });\n            if (arg != null) {\n                args.push(arg);\n            }\n        }\n        return args;\n    }\n\n    private getConstructorHeaderArg({\n        header,\n        value\n    }: {\n        header: FernIr.dynamic.NamedParameter;\n        value: unknown;\n    }): go.AstNode | undefined {\n        const typeInstantiation = this.context.dynamicTypeInstantiationMapper.convert({\n            typeReference: header.typeReference,\n            value\n        });\n        if (go.TypeInstantiation.isNop(typeInstantiation)) {\n            // Literal header values (e.g. \"X-API-Version\") should not be included in the\n            // client constructor.\n            return undefined;\n        }\n        return go.codeblock((writer) => {\n            writer.writeNode(\n                go.invokeFunc({\n                    func: go.typeReference({\n                        name: `With${header.name.name.pascalCase.unsafeName}`,\n                        importPath: this.context.getOptionImportPath()\n                    }),\n                    arguments_: [typeInstantiation]\n                })\n            );\n        });\n    }\n\n    private getMethodArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): { otherArgs: go.AstNode[]; requestArg: go.AstNode | undefined } {\n        switch (endpoint.request.type) {\n            case \"inlined\":\n                return this.getMethodArgsForInlinedRequest({ request: endpoint.request, snippet });\n            case \"body\":\n                return this.getMethodArgsForBodyRequest({ request: endpoint.request, snippet });\n            default:\n                assertNever(endpoint.request);\n        }\n    }\n\n    private getMethodArgsForBodyRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.BodyRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): { otherArgs: go.AstNode[]; requestArg: go.AstNode | undefined } {\n        const otherArgs: go.AstNode[] = [];\n\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n        if (pathParameters.length > 0) {\n            otherArgs.push(\n                ...this.getPathParameters({ namedParameters: pathParameters, snippet }).map((field) => field.value)\n            );\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const requestArg: go.AstNode | undefined =\n            request.body != null\n                ? this.getBodyRequestArg({ body: request.body, value: snippet.requestBody })\n                : undefined;\n        this.context.errors.unscope();\n\n        return { otherArgs, requestArg };\n    }\n\n    private getBodyRequestArg({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): go.TypeInstantiation {\n        switch (body.type) {\n            case \"bytes\": {\n                return this.getBytesBodyRequestArg({ value });\n            }\n            case \"typeReference\":\n                return this.context.dynamicTypeInstantiationMapper.convertToPointerIfPossible({\n                    typeReference: body.value,\n                    value\n                });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getBytesBodyRequestArg({ value }: { value: unknown }): go.TypeInstantiation {\n        const bytesValue = typeof value === \"string\" ? (value as string) : \"\";\n        return go.TypeInstantiation.reference(\n            go.invokeFunc({\n                func: go.typeReference({\n                    name: \"NewReader\",\n                    importPath: \"bytes\"\n                }),\n                arguments_: [go.TypeInstantiation.bytes(bytesValue)]\n            })\n        );\n    }\n\n    private getMethodArgsForInlinedRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): { otherArgs: go.AstNode[]; requestArg: go.AstNode | undefined } {\n        const otherArgs: go.AstNode[] = [];\n\n        const { inlinePathParameters, inlineFileProperties } = {\n            inlinePathParameters: this.context.customConfig?.inlinePathParameters ?? true,\n            inlineFileProperties: this.context.customConfig?.inlineFileProperties ?? true\n        };\n\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameterFields: go.StructField[] = [];\n        const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n        if (pathParameters.length > 0) {\n            pathParameterFields.push(\n                ...this.getPathParameters({\n                    namedParameters: pathParameters,\n                    snippet\n                })\n            );\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const filePropertyInfo = this.getFilePropertyInfo({ request, snippet });\n        this.context.errors.unscope();\n\n        if (!this.context.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n            otherArgs.push(...pathParameterFields.map((field) => field.value));\n        }\n\n        if (!inlineFileProperties) {\n            otherArgs.push(...filePropertyInfo.fileFields.map((field) => field.value));\n        }\n\n        const requestArg: go.AstNode | undefined = this.context.needsRequestParameter({\n            request,\n            inlinePathParameters,\n            inlineFileProperties\n        })\n            ? this.getInlinedRequestArg({\n                  request,\n                  snippet,\n                  pathParameterFields: this.context.includePathParametersInWrappedRequest({\n                      request,\n                      inlinePathParameters\n                  })\n                      ? pathParameterFields\n                      : [],\n                  filePropertyInfo\n              })\n            : undefined;\n        return { otherArgs, requestArg };\n    }\n\n    private getFilePropertyInfo({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): FilePropertyInfo {\n        if (request.body == null || !this.context.isFileUploadRequestBody(request.body)) {\n            return {\n                fileFields: [],\n                bodyPropertyFields: []\n            };\n        }\n        return this.context.filePropertyMapper.getFilePropertyInfo({\n            body: request.body,\n            value: snippet.requestBody\n        });\n    }\n\n    private getInlinedRequestArg({\n        request,\n        snippet,\n        pathParameterFields,\n        filePropertyInfo\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        pathParameterFields: go.StructField[];\n        filePropertyInfo: FilePropertyInfo;\n    }): go.TypeInstantiation {\n        this.context.errors.scope(Scope.QueryParameters);\n        const queryParameters = this.context.associateQueryParametersByWireValue({\n            parameters: request.queryParameters ?? [],\n            values: snippet.queryParameters ?? {}\n        });\n        const queryParameterFields = queryParameters.map((queryParameter) => ({\n            name: queryParameter.name.name.pascalCase.unsafeName,\n            value: this.context.dynamicTypeInstantiationMapper.convert(queryParameter)\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.Headers);\n        const headers = this.context.associateByWireValue({\n            parameters: request.headers ?? [],\n            values: snippet.headers ?? {}\n        });\n        const headerFields = headers.map((header) => ({\n            name: header.name.name.pascalCase.unsafeName,\n            value: this.context.dynamicTypeInstantiationMapper.convert(header)\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const requestBodyFields =\n            request.body != null\n                ? this.getInlinedRequestBodyStructFields({\n                      body: request.body,\n                      value: snippet.requestBody,\n                      filePropertyInfo\n                  })\n                : [];\n        this.context.errors.unscope();\n\n        return go.TypeInstantiation.structPointer({\n            typeReference: go.typeReference({\n                name: this.context.getMethodName(request.declaration.name),\n                importPath: this.context.getImportPathForRequest(request.declaration.fernFilepath)\n            }),\n            fields: [...pathParameterFields, ...queryParameterFields, ...headerFields, ...requestBodyFields]\n        });\n    }\n\n    private getInlinedRequestBodyStructFields({\n        body,\n        value,\n        filePropertyInfo\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        value: unknown;\n        filePropertyInfo: FilePropertyInfo;\n    }): go.StructField[] {\n        switch (body.type) {\n            case \"properties\":\n                return this.getInlinedRequestBodyPropertyStructFields({ parameters: body.value, value });\n            case \"referenced\":\n                return [this.getReferencedRequestBodyPropertyStructField({ body, value })];\n            case \"fileUpload\":\n                return this.getFileUploadRequestBodyStructFields({ filePropertyInfo });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getFileUploadRequestBodyStructFields({\n        filePropertyInfo\n    }: {\n        filePropertyInfo: FilePropertyInfo;\n    }): go.StructField[] {\n        const inlineFileProperties = this.context.customConfig?.inlineFileProperties ?? true;\n        if (inlineFileProperties) {\n            return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n        }\n        return filePropertyInfo.bodyPropertyFields;\n    }\n\n    private getReferencedRequestBodyPropertyStructField({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBody;\n        value: unknown;\n    }): go.StructField {\n        return {\n            name: this.context.getTypeName(body.bodyKey),\n            value: this.getReferencedRequestBodyPropertyTypeInstantiation({ body: body.bodyType, value })\n        };\n    }\n\n    private getReferencedRequestBodyPropertyTypeInstantiation({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): go.TypeInstantiation {\n        switch (body.type) {\n            case \"bytes\":\n                return this.getBytesBodyRequestArg({ value });\n            case \"typeReference\":\n                return this.context.dynamicTypeInstantiationMapper.convert({ typeReference: body.value, value });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getInlinedRequestBodyPropertyStructFields({\n        parameters,\n        value\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        value: unknown;\n    }): go.StructField[] {\n        const fields: go.StructField[] = [];\n\n        const bodyProperties = this.context.associateByWireValue({\n            parameters,\n            values: this.context.getRecord(value) ?? {}\n        });\n        for (const parameter of bodyProperties) {\n            fields.push({\n                name: this.context.getFieldName(parameter.name.name),\n                value: this.context.dynamicTypeInstantiationMapper.convert(parameter)\n            });\n        }\n\n        return fields;\n    }\n\n    private getPathParameters({\n        namedParameters,\n        snippet\n    }: {\n        namedParameters: FernIr.dynamic.NamedParameter[];\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): go.StructField[] {\n        const args: go.StructField[] = [];\n\n        const pathParameters = this.context.associateByWireValueOrDefault({\n            parameters: namedParameters,\n            values: snippet.pathParameters ?? {}\n        });\n        for (const parameter of pathParameters) {\n            args.push({\n                name: this.context.getTypeName(parameter.name.name),\n                value: this.context.dynamicTypeInstantiationMapper.convertToPointerIfPossible(parameter)\n            });\n        }\n\n        return args;\n    }\n\n    private getMethod({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n        if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n            return `${endpoint.declaration.fernFilepath.allParts\n                .map((val) => this.context.getMethodName(val))\n                .join(\".\")}.${this.context.getMethodName(endpoint.declaration.name)}`;\n        }\n        return this.context.getMethodName(endpoint.declaration.name);\n    }\n\n    private getRootClientFuncInvocation(arguments_: go.AstNode[]): go.FuncInvocation {\n        return go.invokeFunc({\n            func: go.typeReference({\n                name: this.context.getClientConstructorName(),\n                importPath: this.context.getClientImportPath()\n            }),\n            arguments_\n        });\n    }\n\n    private buildWiremockTestSetup({\n        endpoint,\n        errorCase\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        errorCase?: boolean;\n    }): go.AstNode[] {\n        const ENDPOINT_STUB_NAME = \"stub\";\n        const usedSharedMainTest = true;\n        return [\n            ...(!usedSharedMainTest\n                ? [\n                      // Initialize context\n                      go.codeblock((writer) => {\n                          writer.write(\"ctx := \");\n                          writer.writeNode(\n                              go.invokeFunc({\n                                  func: go.typeReference({\n                                      name: \"Background\",\n                                      importPath: \"context\"\n                                  }),\n                                  arguments_: [],\n                                  multiline: false\n                              })\n                          );\n                      }),\n\n                      // Start WireMock container\n                      go.codeblock((writer) => {\n                          writer.write(`container, containerErr := `);\n                          writer.writeNode(\n                              go.invokeFunc({\n                                  func: go.typeReference({\n                                      name: \"RunContainerAndStopOnCleanup\",\n                                      importPath: \"github.com/wiremock/wiremock-testcontainers-go\"\n                                  }),\n                                  arguments_: [\n                                      go.codeblock(\"ctx\"),\n                                      go.codeblock(\"t\"),\n                                      go.invokeFunc({\n                                          func: go.typeReference({\n                                              name: \"WithImage\",\n                                              importPath: \"github.com/wiremock/wiremock-testcontainers-go\"\n                                          }),\n                                          arguments_: [\n                                              go.TypeInstantiation.string(\"docker.io/wiremock/wiremock:3.9.1\")\n                                          ],\n                                          multiline: false\n                                      })\n                                  ],\n                                  multiline: true\n                              })\n                          );\n                      }),\n\n                      // Check for container error\n                      go.codeblock((writer) => {\n                          writer.write(\"if containerErr != nil {\");\n                          writer.writeLine();\n                          writer.write(\"    t.Fatal(containerErr)\");\n                          writer.writeLine();\n                          writer.write(\"}\");\n                      }),\n\n                      // Get WireMock URL from container\n                      go.codeblock((writer) => {\n                          writer.write(`${WIREMOCK_BASE_URL}, endpointErr := `);\n                          writer.writeNode(\n                              go.invokeMethod({\n                                  on: go.codeblock(\"container\"),\n                                  method: \"Endpoint\",\n                                  arguments_: [go.codeblock(\"ctx\"), go.TypeInstantiation.string(\"\")],\n                                  multiline: false\n                              })\n                          );\n                      }),\n\n                      go.invokeFunc({\n                          func: go.typeReference({\n                              name: \"NoError\",\n                              importPath: \"github.com/stretchr/testify/require\"\n                          }),\n                          arguments_: [\n                              go.codeblock(\"t\"),\n                              go.codeblock(\"endpointErr\"),\n                              go.TypeInstantiation.string(\"Failed to get WireMock container endpoint\")\n                          ],\n                          multiline: false\n                      }),\n\n                      go.codeblock((writer) => {\n                          writer.write(`${WIREMOCK_BASE_URL} = \"http://\" + ${WIREMOCK_BASE_URL}`);\n                      }),\n\n                      // Get WireMock client from container\n                      go.codeblock((writer) => {\n                          writer.write(`${WIREMOCK_CLIENT_VAR_NAME} := `);\n                          writer.writeNode(\n                              go.selector({\n                                  on: go.codeblock(\"container\"),\n                                  selector: go.codeblock(\"Client\")\n                              })\n                          );\n                      })\n                  ]\n                : [])\n        ];\n    }\n\n    private callClientMethodAndAssert({\n        endpoint,\n        snippet,\n        includeTestIdHeader\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        includeTestIdHeader?: boolean;\n    }): go.CodeBlock {\n        return go.codeblock((writer) => {\n            // IMPORTANT: currently not capturing the response/error values since its not trivial to determine\n            // the number of return values for the method using the dynamic ir\n\n            // Call the method and capture response and error\n            // writer.write(\"_, invocationErr := \");\n            this.writeMethodInvocation({ writer, endpoint, snippet, includeTestIdHeader: true });\n            writer.writeLine();\n            writer.writeLine();\n\n            // Verify WireMock request was matched\n            writer.write(\"ok, countErr := \");\n            writer.writeNode(\n                go.invokeMethod({\n                    on: go.codeblock(WIREMOCK_CLIENT_VAR_NAME),\n                    method: \"Verify\",\n                    arguments_: [\n                        go.invokeMethod({\n                            on: go.codeblock(\"stub\"),\n                            method: \"Request\",\n                            arguments_: [],\n                            multiline: false\n                        }),\n                        go.codeblock(\"1\")\n                    ],\n                    multiline: false\n                })\n            );\n            writer.writeLine();\n\n            writer.writeNode(\n                go.invokeFunc({\n                    func: go.typeReference({\n                        name: \"NoError\",\n                        importPath: \"github.com/stretchr/testify/require\"\n                    }),\n                    arguments_: [\n                        go.codeblock(\"t\"),\n                        go.codeblock(\"countErr\"),\n                        go.TypeInstantiation.string(\"Failed to verify WireMock request was matched\")\n                    ],\n                    multiline: false\n                })\n            );\n            writer.writeLine();\n\n            writer.writeNode(\n                go.invokeFunc({\n                    func: go.typeReference({\n                        name: \"True\",\n                        importPath: \"github.com/stretchr/testify/require\"\n                    }),\n                    arguments_: [\n                        go.codeblock(\"t\"),\n                        go.codeblock(\"ok\"),\n                        go.TypeInstantiation.string(\"WireMock request was not matched\")\n                    ],\n                    multiline: false\n                })\n            );\n            writer.writeLine();\n\n            // IMPORTANT: currently not asserting that the call succeeded since its not trivial to determine\n            // the number of return values for the method using the dynamic ir\n\n            // Verify the call succeeded (may not assert this at all and only assert the WireMock request was matched)\n            // Since we don't necessarily have valid response bodies in our WireMock stubs (so type casting will fail)\n            // writer.writeNode(\n            //     go.invokeFunc({\n            //         func: go.typeReference({\n            //             name: \"NoError\",\n            //             importPath: \"github.com/stretchr/testify/require\"\n            //         }),\n            //         arguments_: [\n            //             go.codeblock(\"t\"),\n            //             go.codeblock(\"invocationErr\"),\n            //             go.TypeInstantiation.string(`${this.getMethod({ endpoint })} call should succeed with WireMock`)\n            //         ],\n            //         multiline: false\n            //     })\n            // );\n            // writer.writeLine();\n        });\n    }\n}\n","export const __dirname = \"/\";\n","function unimplemented(name) {\r\n  throw new Error('Node.js process ' + name + ' is not supported by JSPM core outside of Node.js');\r\n}\r\n\r\nvar queue = [];\r\nvar draining = false;\r\nvar currentQueue;\r\nvar queueIndex = -1;\r\n\r\nfunction cleanUpNextTick() {\r\n  if (!draining || !currentQueue)\r\n    return;\r\n  draining = false;\r\n  if (currentQueue.length) {\r\n    queue = currentQueue.concat(queue);\r\n  }\r\n  else {\r\n    queueIndex = -1;\r\n  }\r\n  if (queue.length)\r\n    drainQueue();\r\n}\r\n\r\nfunction drainQueue() {\r\n  if (draining)\r\n    return;\r\n  var timeout = setTimeout(cleanUpNextTick, 0);\r\n  draining = true;\r\n\r\n  var len = queue.length;\r\n  while(len) {\r\n    currentQueue = queue;\r\n    queue = [];\r\n    while (++queueIndex < len) {\r\n      if (currentQueue)\r\n        currentQueue[queueIndex].run();\r\n    }\r\n    queueIndex = -1;\r\n    len = queue.length;\r\n  }\r\n  currentQueue = null;\r\n  draining = false;\r\n  clearTimeout(timeout);\r\n}\r\n\r\nfunction nextTick (fun) {\r\n  var args = new Array(arguments.length - 1);\r\n  if (arguments.length > 1) {\r\n    for (var i = 1; i < arguments.length; i++)\r\n      args[i - 1] = arguments[i];\r\n  }\r\n  queue.push(new Item(fun, args));\r\n  if (queue.length === 1 && !draining)\r\n    setTimeout(drainQueue, 0);\r\n}\r\n// v8 likes predictible objects\r\nfunction Item(fun, array) {\r\n  this.fun = fun;\r\n  this.array = array;\r\n}\r\nItem.prototype.run = function () {\r\n  this.fun.apply(null, this.array);\r\n};\r\n\r\nvar title = 'browser';\r\nvar arch = 'x64';\r\nvar platform = 'browser';\r\nvar env = {\r\n  PATH: '/usr/bin',\r\n  LANG: typeof navigator !== 'undefined' ? navigator.language + '.UTF-8' : undefined,\r\n  PWD: '/',\r\n  HOME: '/home',\r\n  TMP: '/tmp',\r\n};\r\nvar argv = ['/usr/bin/node'];\r\nvar execArgv = [];\r\nvar version = 'v16.8.0';\r\nvar versions = {};\r\n\r\nvar emitWarning = function(message, type) {\r\n  console.warn((type ? (type + ': ') : '') + message);\r\n};\r\n\r\nvar binding = function(name) { unimplemented('binding'); };\r\n\r\nvar umask = function(mask) { return 0; };\r\n\r\nvar cwd = function() { return '/'; };\r\nvar chdir = function(dir) {};\r\n\r\nvar release = {\r\n  name: 'node',\r\n  sourceUrl: '',\r\n  headersUrl: '',\r\n  libUrl: '',\r\n};\r\n\r\nfunction noop() {}\r\n\r\nvar browser = true;\r\nvar _rawDebug = noop;\r\nvar moduleLoadList = [];\r\nfunction _linkedBinding(name) { unimplemented('_linkedBinding'); }\r\nvar domain = {};\r\nvar _exiting = false;\r\nvar config = {};\r\nfunction dlopen(name) { unimplemented('dlopen'); }\r\nfunction _getActiveRequests() { return []; }\r\nfunction _getActiveHandles() { return []; }\r\nvar reallyExit = noop;\r\nvar _kill = noop;\r\nvar cpuUsage = function() { return {}; };\r\nvar resourceUsage = cpuUsage;\r\nvar memoryUsage = cpuUsage;\r\nvar kill = noop;\r\nvar exit = noop;\r\nvar openStdin = noop;\r\nvar allowedNodeEnvironmentFlags = {};\r\nfunction assert(condition, message) {\r\n  if (!condition) throw new Error(message || 'assertion error');\r\n}\r\nvar features = {\r\n  inspector: false,\r\n  debug: false,\r\n  uv: false,\r\n  ipv6: false,\r\n  tls_alpn: false,\r\n  tls_sni: false,\r\n  tls_ocsp: false,\r\n  tls: false,\r\n  cached_builtins: true,\r\n};\r\nvar _fatalExceptions = noop;\r\nvar setUncaughtExceptionCaptureCallback = noop;\r\nfunction hasUncaughtExceptionCaptureCallback() { return false; }var _tickCallback = noop;\r\nvar _debugProcess = noop;\r\nvar _debugEnd = noop;\r\nvar _startProfilerIdleNotifier = noop;\r\nvar _stopProfilerIdleNotifier = noop;\r\nvar stdout = undefined;\r\nvar stderr = undefined;\r\nvar stdin = undefined;\r\nvar abort = noop;\r\nvar pid = 2;\r\nvar ppid = 1;\r\nvar execPath = '/bin/usr/node';\r\nvar debugPort = 9229;\r\nvar argv0 = 'node';\r\nvar _preload_modules = [];\r\nvar setSourceMapsEnabled = noop;\r\n\r\nvar _performance = {\r\n  now: typeof performance !== 'undefined' ? performance.now.bind(performance) : undefined,\r\n  timing: typeof performance !== 'undefined' ? performance.timing : undefined,\r\n};\r\nif (_performance.now === undefined) {\r\n  var nowOffset = Date.now();\r\n\r\n  if (_performance.timing && _performance.timing.navigationStart) {\r\n    nowOffset = _performance.timing.navigationStart;\r\n  }\r\n  _performance.now = () => Date.now() - nowOffset;\r\n}\r\n\r\nfunction uptime() {\r\n  return _performance.now() / 1000;\r\n}\r\n\r\nvar nanoPerSec = 1000000000;\r\nfunction hrtime(previousTimestamp) {\r\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\r\n  var clocktime = _performance.now() * 1e-3;\r\n  var seconds = Math.floor(clocktime) + baseNow;\r\n  var nanoseconds = Math.floor((clocktime % 1) * 1e9);\r\n  if (previousTimestamp) {\r\n    seconds = seconds - previousTimestamp[0];\r\n    nanoseconds = nanoseconds - previousTimestamp[1];\r\n    if (nanoseconds < 0) {\r\n      seconds--;\r\n      nanoseconds += nanoPerSec;\r\n    }\r\n  }\r\n  return [seconds, nanoseconds];\r\n}hrtime.bigint = function(time) {\r\n  var diff = hrtime(time);\r\n  if (typeof BigInt === 'undefined') {\r\n    return diff[0] * nanoPerSec + diff[1];\r\n  }\r\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\r\n};\r\n\r\nvar _maxListeners = 10;\r\nvar _events = {};\r\nvar _eventsCount = 0;\r\nfunction on () { return process }var addListener = on;\r\nvar once = on;\r\nvar off = on;\r\nvar removeListener = on;\r\nvar removeAllListeners = on;\r\nvar emit = noop;\r\nvar prependListener = on;\r\nvar prependOnceListener = on;\r\nfunction listeners (name) { return []; }\r\nvar process = {\r\n  version,\r\n  versions,\r\n  arch,\r\n  platform,\r\n  browser,\r\n  release,\r\n  _rawDebug,\r\n  moduleLoadList,\r\n  binding,\r\n  _linkedBinding,\r\n  _events,\r\n  _eventsCount,\r\n  _maxListeners,\r\n  on,\r\n  addListener,\r\n  once,\r\n  off,\r\n  removeListener,\r\n  removeAllListeners,\r\n  emit,\r\n  prependListener,\r\n  prependOnceListener,\r\n  listeners,\r\n  domain,\r\n  _exiting,\r\n  config,\r\n  dlopen,\r\n  uptime,\r\n  _getActiveRequests,\r\n  _getActiveHandles,\r\n  reallyExit,\r\n  _kill,\r\n  cpuUsage,\r\n  resourceUsage,\r\n  memoryUsage,\r\n  kill,\r\n  exit,\r\n  openStdin,\r\n  allowedNodeEnvironmentFlags,\r\n  assert,\r\n  features,\r\n  _fatalExceptions,\r\n  setUncaughtExceptionCaptureCallback,\r\n  hasUncaughtExceptionCaptureCallback,\r\n  emitWarning,\r\n  nextTick,\r\n  _tickCallback,\r\n  _debugProcess,\r\n  _debugEnd,\r\n  _startProfilerIdleNotifier,\r\n  _stopProfilerIdleNotifier,\r\n  stdout,\r\n  stdin,\r\n  stderr,\r\n  abort,\r\n  umask,\r\n  chdir,\r\n  cwd,\r\n  env,\r\n  title,\r\n  argv,\r\n  execArgv,\r\n  pid,\r\n  ppid,\r\n  execPath,\r\n  debugPort,\r\n  hrtime,\r\n  argv0,\r\n  _preload_modules,\r\n  setSourceMapsEnabled,\r\n};\n\nexport { _debugEnd, _debugProcess, _events, _eventsCount, _exiting, _fatalExceptions, _getActiveHandles, _getActiveRequests, _kill, _linkedBinding, _maxListeners, _preload_modules, _rawDebug, _startProfilerIdleNotifier, _stopProfilerIdleNotifier, _tickCallback, abort, addListener, allowedNodeEnvironmentFlags, arch, argv, argv0, assert, binding, browser, chdir, config, cpuUsage, cwd, debugPort, process as default, dlopen, domain, emit, emitWarning, env, execArgv, execPath, exit, features, hasUncaughtExceptionCaptureCallback, hrtime, kill, listeners, memoryUsage, moduleLoadList, nextTick, off, on, once, openStdin, pid, platform, ppid, prependListener, prependOnceListener, reallyExit, release, removeAllListeners, removeListener, resourceUsage, setSourceMapsEnabled, setUncaughtExceptionCaptureCallback, stderr, stdin, stdout, title, umask, uptime, version, versions };\n","export * as process from \"process\";\n","var exports$2 = {},\n  _dewExec$2 = false;\nfunction dew$2() {\n  if (_dewExec$2) return exports$2;\n  _dewExec$2 = true;\n  exports$2.byteLength = byteLength;\n  exports$2.toByteArray = toByteArray;\n  exports$2.fromByteArray = fromByteArray;\n  var lookup = [];\n  var revLookup = [];\n  var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i = 0, len = code.length; i < len; ++i) {\n    lookup[i] = code[i];\n    revLookup[code.charCodeAt(i)] = i;\n  }\n\n  // Support decoding URL-safe base64 strings, as Node.js does.\n  // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n  function getLens(b64) {\n    var len = b64.length;\n    if (len % 4 > 0) {\n      throw new Error(\"Invalid string. Length must be a multiple of 4\");\n    }\n\n    // Trim off extra bytes after placeholder bytes are found\n    // See: https://github.com/beatgammit/base64-js/issues/42\n    var validLen = b64.indexOf(\"=\");\n    if (validLen === -1) validLen = len;\n    var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n    return [validLen, placeHoldersLen];\n  }\n\n  // base64 is 4/3 + up to two characters of the original data\n  function byteLength(b64) {\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function _byteLength(b64, validLen, placeHoldersLen) {\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function toByteArray(b64) {\n    var tmp;\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n    var curByte = 0;\n\n    // if there are placeholders, only get up to the last complete 4 chars\n    var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n    var i;\n    for (i = 0; i < len; i += 4) {\n      tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n      arr[curByte++] = tmp >> 16 & 255;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 2) {\n      tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 1) {\n      tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    return arr;\n  }\n  function tripletToBase64(num) {\n    return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n  }\n  function encodeChunk(uint8, start, end) {\n    var tmp;\n    var output = [];\n    for (var i = start; i < end; i += 3) {\n      tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n      output.push(tripletToBase64(tmp));\n    }\n    return output.join(\"\");\n  }\n  function fromByteArray(uint8) {\n    var tmp;\n    var len = uint8.length;\n    var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n    var parts = [];\n    var maxChunkLength = 16383; // must be multiple of 3\n\n    // go through the array every three bytes, we'll deal with trailing stuff later\n    for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n      parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n    }\n\n    // pad the end with zeros, but make sure to not forget the extra bytes\n    if (extraBytes === 1) {\n      tmp = uint8[len - 1];\n      parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n    } else if (extraBytes === 2) {\n      tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n      parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n    }\n    return parts.join(\"\");\n  }\n  return exports$2;\n}\n\nvar exports$1 = {},\n  _dewExec$1 = false;\nfunction dew$1() {\n  if (_dewExec$1) return exports$1;\n  _dewExec$1 = true;\n  /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n  exports$1.read = function (buffer, offset, isLE, mLen, nBytes) {\n    var e, m;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i = isLE ? nBytes - 1 : 0;\n    var d = isLE ? -1 : 1;\n    var s = buffer[offset + i];\n    i += d;\n    e = s & (1 << -nBits) - 1;\n    s >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    m = e & (1 << -nBits) - 1;\n    e >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    if (e === 0) {\n      e = 1 - eBias;\n    } else if (e === eMax) {\n      return m ? NaN : (s ? -1 : 1) * Infinity;\n    } else {\n      m = m + Math.pow(2, mLen);\n      e = e - eBias;\n    }\n    return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n  };\n  exports$1.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n    var e, m, c;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n    var i = isLE ? 0 : nBytes - 1;\n    var d = isLE ? 1 : -1;\n    var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n      m = isNaN(value) ? 1 : 0;\n      e = eMax;\n    } else {\n      e = Math.floor(Math.log(value) / Math.LN2);\n      if (value * (c = Math.pow(2, -e)) < 1) {\n        e--;\n        c *= 2;\n      }\n      if (e + eBias >= 1) {\n        value += rt / c;\n      } else {\n        value += rt * Math.pow(2, 1 - eBias);\n      }\n      if (value * c >= 2) {\n        e++;\n        c /= 2;\n      }\n      if (e + eBias >= eMax) {\n        m = 0;\n        e = eMax;\n      } else if (e + eBias >= 1) {\n        m = (value * c - 1) * Math.pow(2, mLen);\n        e = e + eBias;\n      } else {\n        m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n        e = 0;\n      }\n    }\n    for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n    e = e << mLen | m;\n    eLen += mLen;\n    for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n    buffer[offset + i - d] |= s * 128;\n  };\n  return exports$1;\n}\n\nvar exports = {},\n  _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports;\n  _dewExec = true;\n  const base64 = dew$2();\n  const ieee754 = dew$1();\n  const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" // eslint-disable-line dot-notation\n  ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n  : null;\n  exports.Buffer = Buffer;\n  exports.SlowBuffer = SlowBuffer;\n  exports.INSPECT_MAX_BYTES = 50;\n  const K_MAX_LENGTH = 2147483647;\n  exports.kMaxLength = K_MAX_LENGTH;\n\n  /**\n   * If `Buffer.TYPED_ARRAY_SUPPORT`:\n   *   === true    Use Uint8Array implementation (fastest)\n   *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n   *               implementation (most compatible, even IE6)\n   *\n   * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n   * Opera 11.6+, iOS 4.2+.\n   *\n   * We report that the browser does not support typed arrays if the are not subclassable\n   * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n   * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n   * for __proto__ and has a buggy typed array implementation.\n   */\n  Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n  if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n  }\n  function typedArraySupport() {\n    // Can typed array instances can be augmented?\n    try {\n      const arr = new Uint8Array(1);\n      const proto = {\n        foo: function () {\n          return 42;\n        }\n      };\n      Object.setPrototypeOf(proto, Uint8Array.prototype);\n      Object.setPrototypeOf(arr, proto);\n      return arr.foo() === 42;\n    } catch (e) {\n      return false;\n    }\n  }\n  Object.defineProperty(Buffer.prototype, \"parent\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.buffer;\n    }\n  });\n  Object.defineProperty(Buffer.prototype, \"offset\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.byteOffset;\n    }\n  });\n  function createBuffer(length) {\n    if (length > K_MAX_LENGTH) {\n      throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n    // Return an augmented `Uint8Array` instance\n    const buf = new Uint8Array(length);\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n\n  /**\n   * The Buffer constructor returns instances of `Uint8Array` that have their\n   * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n   * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n   * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n   * returns a single octet.\n   *\n   * The `Uint8Array` prototype remains unmodified.\n   */\n\n  function Buffer(arg, encodingOrOffset, length) {\n    // Common case.\n    if (typeof arg === \"number\") {\n      if (typeof encodingOrOffset === \"string\") {\n        throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n      }\n      return allocUnsafe(arg);\n    }\n    return from(arg, encodingOrOffset, length);\n  }\n  Buffer.poolSize = 8192; // not used by this implementation\n\n  function from(value, encodingOrOffset, length) {\n    if (typeof value === \"string\") {\n      return fromString(value, encodingOrOffset);\n    }\n    if (ArrayBuffer.isView(value)) {\n      return fromArrayView(value);\n    }\n    if (value == null) {\n      throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n    }\n    if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof value === \"number\") {\n      throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n    }\n    const valueOf = value.valueOf && value.valueOf();\n    if (valueOf != null && valueOf !== value) {\n      return Buffer.from(valueOf, encodingOrOffset, length);\n    }\n    const b = fromObject(value);\n    if (b) return b;\n    if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n      return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n    }\n    throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n  }\n\n  /**\n   * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n   * if value is a number.\n   * Buffer.from(str[, encoding])\n   * Buffer.from(array)\n   * Buffer.from(buffer)\n   * Buffer.from(arrayBuffer[, byteOffset[, length]])\n   **/\n  Buffer.from = function (value, encodingOrOffset, length) {\n    return from(value, encodingOrOffset, length);\n  };\n\n  // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n  // https://github.com/feross/buffer/pull/148\n  Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n  Object.setPrototypeOf(Buffer, Uint8Array);\n  function assertSize(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n    } else if (size < 0) {\n      throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n  }\n  function alloc(size, fill, encoding) {\n    assertSize(size);\n    if (size <= 0) {\n      return createBuffer(size);\n    }\n    if (fill !== undefined) {\n      // Only pay attention to encoding if it's a string. This\n      // prevents accidentally sending in a number that would\n      // be interpreted as a start offset.\n      return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n    }\n    return createBuffer(size);\n  }\n\n  /**\n   * Creates a new filled Buffer instance.\n   * alloc(size[, fill[, encoding]])\n   **/\n  Buffer.alloc = function (size, fill, encoding) {\n    return alloc(size, fill, encoding);\n  };\n  function allocUnsafe(size) {\n    assertSize(size);\n    return createBuffer(size < 0 ? 0 : checked(size) | 0);\n  }\n\n  /**\n   * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n   * */\n  Buffer.allocUnsafe = function (size) {\n    return allocUnsafe(size);\n  };\n  /**\n   * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n   */\n  Buffer.allocUnsafeSlow = function (size) {\n    return allocUnsafe(size);\n  };\n  function fromString(string, encoding) {\n    if (typeof encoding !== \"string\" || encoding === \"\") {\n      encoding = \"utf8\";\n    }\n    if (!Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n    const length = byteLength(string, encoding) | 0;\n    let buf = createBuffer(length);\n    const actual = buf.write(string, encoding);\n    if (actual !== length) {\n      // Writing a hex string, for example, that contains invalid characters will\n      // cause everything after the first invalid character to be ignored. (e.g.\n      // 'abxxcd' will be treated as 'ab')\n      buf = buf.slice(0, actual);\n    }\n    return buf;\n  }\n  function fromArrayLike(array) {\n    const length = array.length < 0 ? 0 : checked(array.length) | 0;\n    const buf = createBuffer(length);\n    for (let i = 0; i < length; i += 1) {\n      buf[i] = array[i] & 255;\n    }\n    return buf;\n  }\n  function fromArrayView(arrayView) {\n    if (isInstance(arrayView, Uint8Array)) {\n      const copy = new Uint8Array(arrayView);\n      return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n    }\n    return fromArrayLike(arrayView);\n  }\n  function fromArrayBuffer(array, byteOffset, length) {\n    if (byteOffset < 0 || array.byteLength < byteOffset) {\n      throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n    }\n    if (array.byteLength < byteOffset + (length || 0)) {\n      throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n    }\n    let buf;\n    if (byteOffset === undefined && length === undefined) {\n      buf = new Uint8Array(array);\n    } else if (length === undefined) {\n      buf = new Uint8Array(array, byteOffset);\n    } else {\n      buf = new Uint8Array(array, byteOffset, length);\n    }\n\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function fromObject(obj) {\n    if (Buffer.isBuffer(obj)) {\n      const len = checked(obj.length) | 0;\n      const buf = createBuffer(len);\n      if (buf.length === 0) {\n        return buf;\n      }\n      obj.copy(buf, 0, 0, len);\n      return buf;\n    }\n    if (obj.length !== undefined) {\n      if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n        return createBuffer(0);\n      }\n      return fromArrayLike(obj);\n    }\n    if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n      return fromArrayLike(obj.data);\n    }\n  }\n  function checked(length) {\n    // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n    // length is NaN (which is otherwise coerced to zero.)\n    if (length >= K_MAX_LENGTH) {\n      throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n    }\n    return length | 0;\n  }\n  function SlowBuffer(length) {\n    if (+length != length) {\n      // eslint-disable-line eqeqeq\n      length = 0;\n    }\n    return Buffer.alloc(+length);\n  }\n  Buffer.isBuffer = function isBuffer(b) {\n    return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n  };\n  Buffer.compare = function compare(a, b) {\n    if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n    if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n    if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n      throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n    }\n    if (a === b) return 0;\n    let x = a.length;\n    let y = b.length;\n    for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n      if (a[i] !== b[i]) {\n        x = a[i];\n        y = b[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n  Buffer.isEncoding = function isEncoding(encoding) {\n    switch (String(encoding).toLowerCase()) {\n      case \"hex\":\n      case \"utf8\":\n      case \"utf-8\":\n      case \"ascii\":\n      case \"latin1\":\n      case \"binary\":\n      case \"base64\":\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return true;\n      default:\n        return false;\n    }\n  };\n  Buffer.concat = function concat(list, length) {\n    if (!Array.isArray(list)) {\n      throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n    }\n    if (list.length === 0) {\n      return Buffer.alloc(0);\n    }\n    let i;\n    if (length === undefined) {\n      length = 0;\n      for (i = 0; i < list.length; ++i) {\n        length += list[i].length;\n      }\n    }\n    const buffer = Buffer.allocUnsafe(length);\n    let pos = 0;\n    for (i = 0; i < list.length; ++i) {\n      let buf = list[i];\n      if (isInstance(buf, Uint8Array)) {\n        if (pos + buf.length > buffer.length) {\n          if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n          buf.copy(buffer, pos);\n        } else {\n          Uint8Array.prototype.set.call(buffer, buf, pos);\n        }\n      } else if (!Buffer.isBuffer(buf)) {\n        throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n      } else {\n        buf.copy(buffer, pos);\n      }\n      pos += buf.length;\n    }\n    return buffer;\n  };\n  function byteLength(string, encoding) {\n    if (Buffer.isBuffer(string)) {\n      return string.length;\n    }\n    if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n      return string.byteLength;\n    }\n    if (typeof string !== \"string\") {\n      throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n    }\n    const len = string.length;\n    const mustMatch = arguments.length > 2 && arguments[2] === true;\n    if (!mustMatch && len === 0) return 0;\n\n    // Use a for loop to avoid recursion\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return len;\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8ToBytes(string).length;\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return len * 2;\n        case \"hex\":\n          return len >>> 1;\n        case \"base64\":\n          return base64ToBytes(string).length;\n        default:\n          if (loweredCase) {\n            return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n          }\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.byteLength = byteLength;\n  function slowToString(encoding, start, end) {\n    let loweredCase = false;\n\n    // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n    // property of a typed array.\n\n    // This behaves neither like String nor Uint8Array in that we set start/end\n    // to their upper/lower bounds if the value passed is out of range.\n    // undefined is handled specially as per ECMA-262 6th Edition,\n    // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n    if (start === undefined || start < 0) {\n      start = 0;\n    }\n    // Return early if start > this.length. Done here to prevent potential uint32\n    // coercion fail below.\n    if (start > this.length) {\n      return \"\";\n    }\n    if (end === undefined || end > this.length) {\n      end = this.length;\n    }\n    if (end <= 0) {\n      return \"\";\n    }\n\n    // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n    end >>>= 0;\n    start >>>= 0;\n    if (end <= start) {\n      return \"\";\n    }\n    if (!encoding) encoding = \"utf8\";\n    while (true) {\n      switch (encoding) {\n        case \"hex\":\n          return hexSlice(this, start, end);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Slice(this, start, end);\n        case \"ascii\":\n          return asciiSlice(this, start, end);\n        case \"latin1\":\n        case \"binary\":\n          return latin1Slice(this, start, end);\n        case \"base64\":\n          return base64Slice(this, start, end);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return utf16leSlice(this, start, end);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (encoding + \"\").toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n\n  // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n  // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n  // reliably in a browserify context because there could be multiple different\n  // copies of the 'buffer' package in use. This method works even for Buffer\n  // instances that were created from another copy of the `buffer` package.\n  // See: https://github.com/feross/buffer/issues/154\n  Buffer.prototype._isBuffer = true;\n  function swap(b, n, m) {\n    const i = b[n];\n    b[n] = b[m];\n    b[m] = i;\n  }\n  Buffer.prototype.swap16 = function swap16() {\n    const len = this.length;\n    if (len % 2 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n    }\n    for (let i = 0; i < len; i += 2) {\n      swap(this, i, i + 1);\n    }\n    return this;\n  };\n  Buffer.prototype.swap32 = function swap32() {\n    const len = this.length;\n    if (len % 4 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n    }\n    for (let i = 0; i < len; i += 4) {\n      swap(this, i, i + 3);\n      swap(this, i + 1, i + 2);\n    }\n    return this;\n  };\n  Buffer.prototype.swap64 = function swap64() {\n    const len = this.length;\n    if (len % 8 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n    }\n    for (let i = 0; i < len; i += 8) {\n      swap(this, i, i + 7);\n      swap(this, i + 1, i + 6);\n      swap(this, i + 2, i + 5);\n      swap(this, i + 3, i + 4);\n    }\n    return this;\n  };\n  Buffer.prototype.toString = function toString() {\n    const length = this.length;\n    if (length === 0) return \"\";\n    if (arguments.length === 0) return utf8Slice(this, 0, length);\n    return slowToString.apply(this, arguments);\n  };\n  Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n  Buffer.prototype.equals = function equals(b) {\n    if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n    if (this === b) return true;\n    return Buffer.compare(this, b) === 0;\n  };\n  Buffer.prototype.inspect = function inspect() {\n    let str = \"\";\n    const max = exports.INSPECT_MAX_BYTES;\n    str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n    if (this.length > max) str += \" ... \";\n    return \"<Buffer \" + str + \">\";\n  };\n  if (customInspectSymbol) {\n    Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n  }\n  Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n    if (isInstance(target, Uint8Array)) {\n      target = Buffer.from(target, target.offset, target.byteLength);\n    }\n    if (!Buffer.isBuffer(target)) {\n      throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n    }\n    if (start === undefined) {\n      start = 0;\n    }\n    if (end === undefined) {\n      end = target ? target.length : 0;\n    }\n    if (thisStart === undefined) {\n      thisStart = 0;\n    }\n    if (thisEnd === undefined) {\n      thisEnd = this.length;\n    }\n    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n      throw new RangeError(\"out of range index\");\n    }\n    if (thisStart >= thisEnd && start >= end) {\n      return 0;\n    }\n    if (thisStart >= thisEnd) {\n      return -1;\n    }\n    if (start >= end) {\n      return 1;\n    }\n    start >>>= 0;\n    end >>>= 0;\n    thisStart >>>= 0;\n    thisEnd >>>= 0;\n    if (this === target) return 0;\n    let x = thisEnd - thisStart;\n    let y = end - start;\n    const len = Math.min(x, y);\n    const thisCopy = this.slice(thisStart, thisEnd);\n    const targetCopy = target.slice(start, end);\n    for (let i = 0; i < len; ++i) {\n      if (thisCopy[i] !== targetCopy[i]) {\n        x = thisCopy[i];\n        y = targetCopy[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n\n  // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n  // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n  //\n  // Arguments:\n  // - buffer - a Buffer to search\n  // - val - a string, Buffer, or number\n  // - byteOffset - an index into `buffer`; will be clamped to an int32\n  // - encoding - an optional encoding, relevant is val is a string\n  // - dir - true for indexOf, false for lastIndexOf\n  function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n    // Empty buffer means no match\n    if (buffer.length === 0) return -1;\n\n    // Normalize byteOffset\n    if (typeof byteOffset === \"string\") {\n      encoding = byteOffset;\n      byteOffset = 0;\n    } else if (byteOffset > 2147483647) {\n      byteOffset = 2147483647;\n    } else if (byteOffset < -2147483648) {\n      byteOffset = -2147483648;\n    }\n    byteOffset = +byteOffset; // Coerce to Number.\n    if (numberIsNaN(byteOffset)) {\n      // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n      byteOffset = dir ? 0 : buffer.length - 1;\n    }\n\n    // Normalize byteOffset: negative offsets start from the end of the buffer\n    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n    if (byteOffset >= buffer.length) {\n      if (dir) return -1;else byteOffset = buffer.length - 1;\n    } else if (byteOffset < 0) {\n      if (dir) byteOffset = 0;else return -1;\n    }\n\n    // Normalize val\n    if (typeof val === \"string\") {\n      val = Buffer.from(val, encoding);\n    }\n\n    // Finally, search either indexOf (if dir is true) or lastIndexOf\n    if (Buffer.isBuffer(val)) {\n      // Special case: looking for empty string/buffer always fails\n      if (val.length === 0) {\n        return -1;\n      }\n      return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n    } else if (typeof val === \"number\") {\n      val = val & 255; // Search for a byte value [0-255]\n      if (typeof Uint8Array.prototype.indexOf === \"function\") {\n        if (dir) {\n          return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n        } else {\n          return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n        }\n      }\n      return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n    }\n    throw new TypeError(\"val must be string, number or Buffer\");\n  }\n  function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n    let indexSize = 1;\n    let arrLength = arr.length;\n    let valLength = val.length;\n    if (encoding !== undefined) {\n      encoding = String(encoding).toLowerCase();\n      if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n        if (arr.length < 2 || val.length < 2) {\n          return -1;\n        }\n        indexSize = 2;\n        arrLength /= 2;\n        valLength /= 2;\n        byteOffset /= 2;\n      }\n    }\n    function read(buf, i) {\n      if (indexSize === 1) {\n        return buf[i];\n      } else {\n        return buf.readUInt16BE(i * indexSize);\n      }\n    }\n    let i;\n    if (dir) {\n      let foundIndex = -1;\n      for (i = byteOffset; i < arrLength; i++) {\n        if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n          if (foundIndex === -1) foundIndex = i;\n          if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n        } else {\n          if (foundIndex !== -1) i -= i - foundIndex;\n          foundIndex = -1;\n        }\n      }\n    } else {\n      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n      for (i = byteOffset; i >= 0; i--) {\n        let found = true;\n        for (let j = 0; j < valLength; j++) {\n          if (read(arr, i + j) !== read(val, j)) {\n            found = false;\n            break;\n          }\n        }\n        if (found) return i;\n      }\n    }\n    return -1;\n  }\n  Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n    return this.indexOf(val, byteOffset, encoding) !== -1;\n  };\n  Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n  };\n  Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n  };\n  function hexWrite(buf, string, offset, length) {\n    offset = Number(offset) || 0;\n    const remaining = buf.length - offset;\n    if (!length) {\n      length = remaining;\n    } else {\n      length = Number(length);\n      if (length > remaining) {\n        length = remaining;\n      }\n    }\n    const strLen = string.length;\n    if (length > strLen / 2) {\n      length = strLen / 2;\n    }\n    let i;\n    for (i = 0; i < length; ++i) {\n      const parsed = parseInt(string.substr(i * 2, 2), 16);\n      if (numberIsNaN(parsed)) return i;\n      buf[offset + i] = parsed;\n    }\n    return i;\n  }\n  function utf8Write(buf, string, offset, length) {\n    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  function asciiWrite(buf, string, offset, length) {\n    return blitBuffer(asciiToBytes(string), buf, offset, length);\n  }\n  function base64Write(buf, string, offset, length) {\n    return blitBuffer(base64ToBytes(string), buf, offset, length);\n  }\n  function ucs2Write(buf, string, offset, length) {\n    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  Buffer.prototype.write = function write(string, offset, length, encoding) {\n    // Buffer#write(string)\n    if (offset === undefined) {\n      encoding = \"utf8\";\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, encoding)\n    } else if (length === undefined && typeof offset === \"string\") {\n      encoding = offset;\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, offset[, length][, encoding])\n    } else if (isFinite(offset)) {\n      offset = offset >>> 0;\n      if (isFinite(length)) {\n        length = length >>> 0;\n        if (encoding === undefined) encoding = \"utf8\";\n      } else {\n        encoding = length;\n        length = undefined;\n      }\n    } else {\n      throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    }\n    const remaining = this.length - offset;\n    if (length === undefined || length > remaining) length = remaining;\n    if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n      throw new RangeError(\"Attempt to write outside buffer bounds\");\n    }\n    if (!encoding) encoding = \"utf8\";\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"hex\":\n          return hexWrite(this, string, offset, length);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Write(this, string, offset, length);\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return asciiWrite(this, string, offset, length);\n        case \"base64\":\n          // Warning: maxLength not taken into account in base64Write\n          return base64Write(this, string, offset, length);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return ucs2Write(this, string, offset, length);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  };\n  Buffer.prototype.toJSON = function toJSON() {\n    return {\n      type: \"Buffer\",\n      data: Array.prototype.slice.call(this._arr || this, 0)\n    };\n  };\n  function base64Slice(buf, start, end) {\n    if (start === 0 && end === buf.length) {\n      return base64.fromByteArray(buf);\n    } else {\n      return base64.fromByteArray(buf.slice(start, end));\n    }\n  }\n  function utf8Slice(buf, start, end) {\n    end = Math.min(buf.length, end);\n    const res = [];\n    let i = start;\n    while (i < end) {\n      const firstByte = buf[i];\n      let codePoint = null;\n      let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n      if (i + bytesPerSequence <= end) {\n        let secondByte, thirdByte, fourthByte, tempCodePoint;\n        switch (bytesPerSequence) {\n          case 1:\n            if (firstByte < 128) {\n              codePoint = firstByte;\n            }\n            break;\n          case 2:\n            secondByte = buf[i + 1];\n            if ((secondByte & 192) === 128) {\n              tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n              if (tempCodePoint > 127) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 3:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n              if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 4:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            fourthByte = buf[i + 3];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n              if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n                codePoint = tempCodePoint;\n              }\n            }\n        }\n      }\n      if (codePoint === null) {\n        // we did not generate a valid codePoint so insert a\n        // replacement char (U+FFFD) and advance only 1 byte\n        codePoint = 65533;\n        bytesPerSequence = 1;\n      } else if (codePoint > 65535) {\n        // encode to utf16 (surrogate pair dance)\n        codePoint -= 65536;\n        res.push(codePoint >>> 10 & 1023 | 55296);\n        codePoint = 56320 | codePoint & 1023;\n      }\n      res.push(codePoint);\n      i += bytesPerSequence;\n    }\n    return decodeCodePointsArray(res);\n  }\n\n  // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n  // the lowest limit is Chrome, with 0x10000 args.\n  // We go 1 magnitude less, for safety\n  const MAX_ARGUMENTS_LENGTH = 4096;\n  function decodeCodePointsArray(codePoints) {\n    const len = codePoints.length;\n    if (len <= MAX_ARGUMENTS_LENGTH) {\n      return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n    }\n\n    // Decode in chunks to avoid \"call stack size exceeded\".\n    let res = \"\";\n    let i = 0;\n    while (i < len) {\n      res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n    }\n    return res;\n  }\n  function asciiSlice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i] & 127);\n    }\n    return ret;\n  }\n  function latin1Slice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i]);\n    }\n    return ret;\n  }\n  function hexSlice(buf, start, end) {\n    const len = buf.length;\n    if (!start || start < 0) start = 0;\n    if (!end || end < 0 || end > len) end = len;\n    let out = \"\";\n    for (let i = start; i < end; ++i) {\n      out += hexSliceLookupTable[buf[i]];\n    }\n    return out;\n  }\n  function utf16leSlice(buf, start, end) {\n    const bytes = buf.slice(start, end);\n    let res = \"\";\n    // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n    for (let i = 0; i < bytes.length - 1; i += 2) {\n      res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n    }\n    return res;\n  }\n  Buffer.prototype.slice = function slice(start, end) {\n    const len = this.length;\n    start = ~~start;\n    end = end === undefined ? len : ~~end;\n    if (start < 0) {\n      start += len;\n      if (start < 0) start = 0;\n    } else if (start > len) {\n      start = len;\n    }\n    if (end < 0) {\n      end += len;\n      if (end < 0) end = 0;\n    } else if (end > len) {\n      end = len;\n    }\n    if (end < start) end = start;\n    const newBuf = this.subarray(start, end);\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(newBuf, Buffer.prototype);\n    return newBuf;\n  };\n\n  /*\n   * Need to make sure that buffer isn't trying to write out of bounds.\n   */\n  function checkOffset(offset, ext, length) {\n    if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n    if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n  }\n  Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      checkOffset(offset, byteLength, this.length);\n    }\n    let val = this[offset + --byteLength];\n    let mul = 1;\n    while (byteLength > 0 && (mul *= 256)) {\n      val += this[offset + --byteLength] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    return this[offset];\n  };\n  Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] | this[offset + 1] << 8;\n  };\n  Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] << 8 | this[offset + 1];\n  };\n  Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n  };\n  Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n  };\n  Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n    const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n    return BigInt(lo) + (BigInt(hi) << BigInt(32));\n  });\n  Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n    return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  });\n  Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let i = byteLength;\n    let mul = 1;\n    let val = this[offset + --i];\n    while (i > 0 && (mul *= 256)) {\n      val += this[offset + --i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    if (!(this[offset] & 128)) return this[offset];\n    return (255 - this[offset] + 1) * -1;\n  };\n  Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset] | this[offset + 1] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset + 1] | this[offset] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n  };\n  Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n  };\n  Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n    return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n  });\n  Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = (first << 24) +\n    // Overflow\n    this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n  });\n  Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, true, 23, 4);\n  };\n  Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, false, 23, 4);\n  };\n  Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, true, 52, 8);\n  };\n  Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, false, 52, 8);\n  };\n  function checkInt(buf, value, offset, ext, max, min) {\n    if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n    if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n  }\n  Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let mul = 1;\n    let i = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  function wrtBigUInt64LE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    return offset;\n  }\n  function wrtBigUInt64BE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset + 7] = lo;\n    lo = lo >> 8;\n    buf[offset + 6] = lo;\n    lo = lo >> 8;\n    buf[offset + 5] = lo;\n    lo = lo >> 8;\n    buf[offset + 4] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset + 3] = hi;\n    hi = hi >> 8;\n    buf[offset + 2] = hi;\n    hi = hi >> 8;\n    buf[offset + 1] = hi;\n    hi = hi >> 8;\n    buf[offset] = hi;\n    return offset + 8;\n  }\n  Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = 0;\n    let mul = 1;\n    let sub = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    let sub = 0;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n    if (value < 0) value = 255 + value + 1;\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n    return offset + 4;\n  };\n  Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    if (value < 0) value = 4294967295 + value + 1;\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  function checkIEEE754(buf, value, offset, ext, max, min) {\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n    if (offset < 0) throw new RangeError(\"Index out of range\");\n  }\n  function writeFloat(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 4);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 23, 4);\n    return offset + 4;\n  }\n  Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, false, noAssert);\n  };\n  function writeDouble(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 8);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 52, 8);\n    return offset + 8;\n  }\n  Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, false, noAssert);\n  };\n\n  // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n  Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n    if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n    if (!start) start = 0;\n    if (!end && end !== 0) end = this.length;\n    if (targetStart >= target.length) targetStart = target.length;\n    if (!targetStart) targetStart = 0;\n    if (end > 0 && end < start) end = start;\n\n    // Copy 0 bytes; we're done\n    if (end === start) return 0;\n    if (target.length === 0 || this.length === 0) return 0;\n\n    // Fatal error conditions\n    if (targetStart < 0) {\n      throw new RangeError(\"targetStart out of bounds\");\n    }\n    if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n    if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n\n    // Are we oob?\n    if (end > this.length) end = this.length;\n    if (target.length - targetStart < end - start) {\n      end = target.length - targetStart + start;\n    }\n    const len = end - start;\n    if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n      // Use built-in when available, missing from IE11\n      this.copyWithin(targetStart, start, end);\n    } else {\n      Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n    }\n    return len;\n  };\n\n  // Usage:\n  //    buffer.fill(number[, offset[, end]])\n  //    buffer.fill(buffer[, offset[, end]])\n  //    buffer.fill(string[, offset[, end]][, encoding])\n  Buffer.prototype.fill = function fill(val, start, end, encoding) {\n    // Handle string cases:\n    if (typeof val === \"string\") {\n      if (typeof start === \"string\") {\n        encoding = start;\n        start = 0;\n        end = this.length;\n      } else if (typeof end === \"string\") {\n        encoding = end;\n        end = this.length;\n      }\n      if (encoding !== undefined && typeof encoding !== \"string\") {\n        throw new TypeError(\"encoding must be a string\");\n      }\n      if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n        throw new TypeError(\"Unknown encoding: \" + encoding);\n      }\n      if (val.length === 1) {\n        const code = val.charCodeAt(0);\n        if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n          // Fast path: If `val` fits into a single byte, use that numeric value.\n          val = code;\n        }\n      }\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n    } else if (typeof val === \"boolean\") {\n      val = Number(val);\n    }\n\n    // Invalid ranges are not set to a default, so can range check early.\n    if (start < 0 || this.length < start || this.length < end) {\n      throw new RangeError(\"Out of range index\");\n    }\n    if (end <= start) {\n      return this;\n    }\n    start = start >>> 0;\n    end = end === undefined ? this.length : end >>> 0;\n    if (!val) val = 0;\n    let i;\n    if (typeof val === \"number\") {\n      for (i = start; i < end; ++i) {\n        this[i] = val;\n      }\n    } else {\n      const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n      const len = bytes.length;\n      if (len === 0) {\n        throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n      }\n      for (i = 0; i < end - start; ++i) {\n        this[i + start] = bytes[i % len];\n      }\n    }\n    return this;\n  };\n\n  // CUSTOM ERRORS\n  // =============\n\n  // Simplified versions from Node, changed for Buffer-only usage\n  const errors = {};\n  function E(sym, getMessage, Base) {\n    errors[sym] = class NodeError extends Base {\n      constructor() {\n        super();\n        Object.defineProperty(this, \"message\", {\n          value: getMessage.apply(this, arguments),\n          writable: true,\n          configurable: true\n        });\n\n        // Add the error code to the name to include it in the stack trace.\n        this.name = `${this.name} [${sym}]`;\n        // Access the stack to generate the error message including the error code\n        // from the name.\n        this.stack; // eslint-disable-line no-unused-expressions\n        // Reset the name to the actual name.\n        delete this.name;\n      }\n      get code() {\n        return sym;\n      }\n      set code(value) {\n        Object.defineProperty(this, \"code\", {\n          configurable: true,\n          enumerable: true,\n          value,\n          writable: true\n        });\n      }\n      toString() {\n        return `${this.name} [${sym}]: ${this.message}`;\n      }\n    };\n  }\n  E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`;\n    }\n    return \"Attempt to access memory outside buffer bounds\";\n  }, RangeError);\n  E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n  }, TypeError);\n  E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`;\n    let received = input;\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input));\n    } else if (typeof input === \"bigint\") {\n      received = String(input);\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received);\n      }\n      received += \"n\";\n    }\n    msg += ` It must be ${range}. Received ${received}`;\n    return msg;\n  }, RangeError);\n  function addNumericalSeparator(val) {\n    let res = \"\";\n    let i = val.length;\n    const start = val[0] === \"-\" ? 1 : 0;\n    for (; i >= start + 4; i -= 3) {\n      res = `_${val.slice(i - 3, i)}${res}`;\n    }\n    return `${val.slice(0, i)}${res}`;\n  }\n\n  // CHECK FUNCTIONS\n  // ===============\n\n  function checkBounds(buf, offset, byteLength) {\n    validateNumber(offset, \"offset\");\n    if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n      boundsError(offset, buf.length - (byteLength + 1));\n    }\n  }\n  function checkIntBI(value, min, max, buf, offset, byteLength) {\n    if (value > max || value < min) {\n      const n = typeof min === \"bigint\" ? \"n\" : \"\";\n      let range;\n      {\n        if (min === 0 || min === BigInt(0)) {\n          range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n        } else {\n          range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n        }\n      }\n      throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n    }\n    checkBounds(buf, offset, byteLength);\n  }\n  function validateNumber(value, name) {\n    if (typeof value !== \"number\") {\n      throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n    }\n  }\n  function boundsError(value, length, type) {\n    if (Math.floor(value) !== value) {\n      validateNumber(value, type);\n      throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n    }\n    if (length < 0) {\n      throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n    }\n    throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n  }\n\n  // HELPER FUNCTIONS\n  // ================\n\n  const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n  function base64clean(str) {\n    // Node takes equal signs as end of the Base64 encoding\n    str = str.split(\"=\")[0];\n    // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n    str = str.trim().replace(INVALID_BASE64_RE, \"\");\n    // Node converts strings with length < 2 to ''\n    if (str.length < 2) return \"\";\n    // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n    while (str.length % 4 !== 0) {\n      str = str + \"=\";\n    }\n    return str;\n  }\n  function utf8ToBytes(string, units) {\n    units = units || Infinity;\n    let codePoint;\n    const length = string.length;\n    let leadSurrogate = null;\n    const bytes = [];\n    for (let i = 0; i < length; ++i) {\n      codePoint = string.charCodeAt(i);\n\n      // is surrogate component\n      if (codePoint > 55295 && codePoint < 57344) {\n        // last char was a lead\n        if (!leadSurrogate) {\n          // no lead yet\n          if (codePoint > 56319) {\n            // unexpected trail\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          } else if (i + 1 === length) {\n            // unpaired lead\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          }\n\n          // valid lead\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // 2 leads in a row\n        if (codePoint < 56320) {\n          if ((units -= 3) > -1) bytes.push(239, 191, 189);\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // valid surrogate pair\n        codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n      } else if (leadSurrogate) {\n        // valid bmp char, but last char was a lead\n        if ((units -= 3) > -1) bytes.push(239, 191, 189);\n      }\n      leadSurrogate = null;\n\n      // encode utf8\n      if (codePoint < 128) {\n        if ((units -= 1) < 0) break;\n        bytes.push(codePoint);\n      } else if (codePoint < 2048) {\n        if ((units -= 2) < 0) break;\n        bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n      } else if (codePoint < 65536) {\n        if ((units -= 3) < 0) break;\n        bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else if (codePoint < 1114112) {\n        if ((units -= 4) < 0) break;\n        bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else {\n        throw new Error(\"Invalid code point\");\n      }\n    }\n    return bytes;\n  }\n  function asciiToBytes(str) {\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      // Node's code seems to be doing this and not & 0x7F..\n      byteArray.push(str.charCodeAt(i) & 255);\n    }\n    return byteArray;\n  }\n  function utf16leToBytes(str, units) {\n    let c, hi, lo;\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      if ((units -= 2) < 0) break;\n      c = str.charCodeAt(i);\n      hi = c >> 8;\n      lo = c % 256;\n      byteArray.push(lo);\n      byteArray.push(hi);\n    }\n    return byteArray;\n  }\n  function base64ToBytes(str) {\n    return base64.toByteArray(base64clean(str));\n  }\n  function blitBuffer(src, dst, offset, length) {\n    let i;\n    for (i = 0; i < length; ++i) {\n      if (i + offset >= dst.length || i >= src.length) break;\n      dst[i + offset] = src[i];\n    }\n    return i;\n  }\n\n  // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n  // the `instanceof` check but they should be treated as of that type.\n  // See: https://github.com/feross/buffer/issues/166\n  function isInstance(obj, type) {\n    return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n  }\n  function numberIsNaN(obj) {\n    // For IE11 support\n    return obj !== obj; // eslint-disable-line no-self-compare\n  }\n\n  // Create lookup table for `toString('hex')`\n  // See: https://github.com/feross/buffer/issues/219\n  const hexSliceLookupTable = function () {\n    const alphabet = \"0123456789abcdef\";\n    const table = new Array(256);\n    for (let i = 0; i < 16; ++i) {\n      const i16 = i * 16;\n      for (let j = 0; j < 16; ++j) {\n        table[i16 + j] = alphabet[i] + alphabet[j];\n      }\n    }\n    return table;\n  }();\n\n  // Return not function with Error if BigInt not supported\n  function defineBigIntMethod(fn) {\n    return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n  }\n  function BufferBigIntNotDefined() {\n    throw new Error(\"BigInt not supported\");\n  }\n  return exports;\n}\n\nexport { dew as d };\n","import { d as dew } from './chunk-DtuTasat.js';\n\nconst exports = dew();\nexports['Buffer']; exports['SlowBuffer']; exports['INSPECT_MAX_BYTES']; exports['kMaxLength'];\n\nvar Buffer = exports.Buffer;\r\nvar INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;\r\nvar kMaxLength = exports.kMaxLength;\n\nexport { Buffer, INSPECT_MAX_BYTES, exports as default, kMaxLength };\n","export { Buffer } from \"buffer\";\n","export { type Config } from \"./Config.js\";\nexport { DynamicSnippetsGenerator } from \"./DynamicSnippetsGenerator.js\";\n","import {\n    AbstractAstNode,\n    AbstractDynamicSnippetsGenerator,\n    FernGeneratorExec,\n    Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator.js\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n    DynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator\n> {\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        super(new DynamicSnippetsGeneratorContext({ ir, config, options }));\n    }\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        return super.generate(request, options);\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        return super.generateSync(request, options);\n    }\n\n    public async generateSnippetAst(request: FernIr.dynamic.EndpointSnippetRequest): Promise<AbstractAstNode> {\n        return super.generateSnippetAst(request);\n    }\n\n    protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n        return new EndpointSnippetGenerator({ context });\n    }\n}\n","// Force cache invalidation for CI - server URL templating feature\nexport { addPrefixToString } from \"./addPrefixToString.js\";\nexport { applyOpenAPIOverlay, type Overlay, type OverlayAction } from \"./applyOpenAPIOverlay.js\";\nexport {\n    assert,\n    assertDefined,\n    assertNever,\n    assertNeverNoThrow,\n    assertNonNull,\n    assertString,\n    assertVoidNoThrow\n} from \"./assert.js\";\nexport { delay } from \"./delay/delay.js\";\nexport { withMinimumTime } from \"./delay/withMinimumTime.js\";\nexport { EMPTY_ARRAY, EMPTY_OBJECT } from \"./empty.js\";\nexport * as Examples from \"./examples.js\";\nexport { extractErrorMessage } from \"./extractErrorMessage.js\";\nexport { getDuplicates } from \"./getDuplicates.js\";\nexport { identity } from \"./identity.js\";\nexport { isNonNullish } from \"./isNonNullish.js\";\nexport { MediaType } from \"./mediaType.js\";\nexport { mergeWithOverrides } from \"./mergeWithOverrides.js\";\nexport { noop } from \"./noop.js\";\nexport {\n    haveSameNullishness,\n    nullIfNullish,\n    nullIfSomeNullish,\n    undefinedIfNullish,\n    undefinedIfSomeNullish\n} from \"./nullishUtils.js\";\nexport { type ObjectPropertiesVisitor, visitObject, visitObjectAsync } from \"./ObjectPropertiesVisitor.js\";\nexport { type Entries, entries } from \"./objects/entries.js\";\nexport { isPlainObject } from \"./objects/isPlainObject.js\";\nexport { keys } from \"./objects/keys.js\";\nexport { mapValues } from \"./objects/mapValues.js\";\nexport { type Values, values } from \"./objects/values.js\";\nexport { parseEndpointLocator } from \"./parseEndpointLocator.js\";\nexport { PLATFORM, type Platform } from \"./platform.js\";\nexport { removeSuffix } from \"./removeSuffix.js\";\nexport { replaceEnvVariables } from \"./replaceEnvVars.js\";\nexport { SymbolRegistry, type SymbolRegistryOptions } from \"./SymbolRegistry.js\";\nexport { sanitizeChangelogEntry } from \"./sanitizeChangelogEntry.js\";\nexport { SKIP_MARKER, sanitizeNullValues } from \"./sanitizeNullValues.js\";\nexport { diffSemverOrThrow, parseSemverOrThrow } from \"./semverUtils.js\";\nexport { type SetRequired } from \"./setRequired.js\";\nexport { stripLeadingSlash } from \"./stripLeadingSlash.js\";\nexport { titleCase } from \"./titleCase.js\";\nexport type { ContainerRunner, Digit, Letter, LowercaseLetter, UppercaseLetter } from \"./types.js\";\nexport { validateAgainstJsonSchema } from \"./validateAgainstJsonSchema.js\";\nexport { visitDiscriminatedUnion } from \"./visitDiscriminatedUnion.js\";\nexport type { WithoutQuestionMarks } from \"./withoutQuestionMarks.js\";\n","/**\n * @license\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"es\" --repo lodash/lodash#4.18.1 -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nexport { default as add } from './add.js';\nexport { default as after } from './after.js';\nexport { default as ary } from './ary.js';\nexport { default as assign } from './assign.js';\nexport { default as assignIn } from './assignIn.js';\nexport { default as assignInWith } from './assignInWith.js';\nexport { default as assignWith } from './assignWith.js';\nexport { default as at } from './at.js';\nexport { default as attempt } from './attempt.js';\nexport { default as before } from './before.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as bindKey } from './bindKey.js';\nexport { default as camelCase } from './camelCase.js';\nexport { default as capitalize } from './capitalize.js';\nexport { default as castArray } from './castArray.js';\nexport { default as ceil } from './ceil.js';\nexport { default as chain } from './chain.js';\nexport { default as chunk } from './chunk.js';\nexport { default as clamp } from './clamp.js';\nexport { default as clone } from './clone.js';\nexport { default as cloneDeep } from './cloneDeep.js';\nexport { default as cloneDeepWith } from './cloneDeepWith.js';\nexport { default as cloneWith } from './cloneWith.js';\nexport { default as commit } from './commit.js';\nexport { default as compact } from './compact.js';\nexport { default as concat } from './concat.js';\nexport { default as cond } from './cond.js';\nexport { default as conforms } from './conforms.js';\nexport { default as conformsTo } from './conformsTo.js';\nexport { default as constant } from './constant.js';\nexport { default as countBy } from './countBy.js';\nexport { default as create } from './create.js';\nexport { default as curry } from './curry.js';\nexport { default as curryRight } from './curryRight.js';\nexport { default as debounce } from './debounce.js';\nexport { default as deburr } from './deburr.js';\nexport { default as defaultTo } from './defaultTo.js';\nexport { default as defaults } from './defaults.js';\nexport { default as defaultsDeep } from './defaultsDeep.js';\nexport { default as defer } from './defer.js';\nexport { default as delay } from './delay.js';\nexport { default as difference } from './difference.js';\nexport { default as differenceBy } from './differenceBy.js';\nexport { default as differenceWith } from './differenceWith.js';\nexport { default as divide } from './divide.js';\nexport { default as drop } from './drop.js';\nexport { default as dropRight } from './dropRight.js';\nexport { default as dropRightWhile } from './dropRightWhile.js';\nexport { default as dropWhile } from './dropWhile.js';\nexport { default as each } from './each.js';\nexport { default as eachRight } from './eachRight.js';\nexport { default as endsWith } from './endsWith.js';\nexport { default as entries } from './entries.js';\nexport { default as entriesIn } from './entriesIn.js';\nexport { default as eq } from './eq.js';\nexport { default as escape } from './escape.js';\nexport { default as escapeRegExp } from './escapeRegExp.js';\nexport { default as every } from './every.js';\nexport { default as extend } from './extend.js';\nexport { default as extendWith } from './extendWith.js';\nexport { default as fill } from './fill.js';\nexport { default as filter } from './filter.js';\nexport { default as find } from './find.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findKey } from './findKey.js';\nexport { default as findLast } from './findLast.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as findLastKey } from './findLastKey.js';\nexport { default as first } from './first.js';\nexport { default as flatMap } from './flatMap.js';\nexport { default as flatMapDeep } from './flatMapDeep.js';\nexport { default as flatMapDepth } from './flatMapDepth.js';\nexport { default as flatten } from './flatten.js';\nexport { default as flattenDeep } from './flattenDeep.js';\nexport { default as flattenDepth } from './flattenDepth.js';\nexport { default as flip } from './flip.js';\nexport { default as floor } from './floor.js';\nexport { default as flow } from './flow.js';\nexport { default as flowRight } from './flowRight.js';\nexport { default as forEach } from './forEach.js';\nexport { default as forEachRight } from './forEachRight.js';\nexport { default as forIn } from './forIn.js';\nexport { default as forInRight } from './forInRight.js';\nexport { default as forOwn } from './forOwn.js';\nexport { default as forOwnRight } from './forOwnRight.js';\nexport { default as fromPairs } from './fromPairs.js';\nexport { default as functions } from './functions.js';\nexport { default as functionsIn } from './functionsIn.js';\nexport { default as get } from './get.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as gt } from './gt.js';\nexport { default as gte } from './gte.js';\nexport { default as has } from './has.js';\nexport { default as hasIn } from './hasIn.js';\nexport { default as head } from './head.js';\nexport { default as identity } from './identity.js';\nexport { default as inRange } from './inRange.js';\nexport { default as includes } from './includes.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as initial } from './initial.js';\nexport { default as intersection } from './intersection.js';\nexport { default as intersectionBy } from './intersectionBy.js';\nexport { default as intersectionWith } from './intersectionWith.js';\nexport { default as invert } from './invert.js';\nexport { default as invertBy } from './invertBy.js';\nexport { default as invoke } from './invoke.js';\nexport { default as invokeMap } from './invokeMap.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isArrayLike } from './isArrayLike.js';\nexport { default as isArrayLikeObject } from './isArrayLikeObject.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isBuffer } from './isBuffer.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isEqualWith } from './isEqualWith.js';\nexport { default as isError } from './isError.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isInteger } from './isInteger.js';\nexport { default as isLength } from './isLength.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isMatchWith } from './isMatchWith.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isNative } from './isNative.js';\nexport { default as isNil } from './isNil.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isObject } from './isObject.js';\nexport { default as isObjectLike } from './isObjectLike.js';\nexport { default as isPlainObject } from './isPlainObject.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isSafeInteger } from './isSafeInteger.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isString } from './isString.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isWeakSet } from './isWeakSet.js';\nexport { default as iteratee } from './iteratee.js';\nexport { default as join } from './join.js';\nexport { default as kebabCase } from './kebabCase.js';\nexport { default as keyBy } from './keyBy.js';\nexport { default as keys } from './keys.js';\nexport { default as keysIn } from './keysIn.js';\nexport { default as last } from './last.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as lodash } from './wrapperLodash.js';\nexport { default as lowerCase } from './lowerCase.js';\nexport { default as lowerFirst } from './lowerFirst.js';\nexport { default as lt } from './lt.js';\nexport { default as lte } from './lte.js';\nexport { default as map } from './map.js';\nexport { default as mapKeys } from './mapKeys.js';\nexport { default as mapValues } from './mapValues.js';\nexport { default as matches } from './matches.js';\nexport { default as matchesProperty } from './matchesProperty.js';\nexport { default as max } from './max.js';\nexport { default as maxBy } from './maxBy.js';\nexport { default as mean } from './mean.js';\nexport { default as meanBy } from './meanBy.js';\nexport { default as memoize } from './memoize.js';\nexport { default as merge } from './merge.js';\nexport { default as mergeWith } from './mergeWith.js';\nexport { default as method } from './method.js';\nexport { default as methodOf } from './methodOf.js';\nexport { default as min } from './min.js';\nexport { default as minBy } from './minBy.js';\nexport { default as mixin } from './mixin.js';\nexport { default as multiply } from './multiply.js';\nexport { default as negate } from './negate.js';\nexport { default as next } from './next.js';\nexport { default as noop } from './noop.js';\nexport { default as now } from './now.js';\nexport { default as nth } from './nth.js';\nexport { default as nthArg } from './nthArg.js';\nexport { default as omit } from './omit.js';\nexport { default as omitBy } from './omitBy.js';\nexport { default as once } from './once.js';\nexport { default as orderBy } from './orderBy.js';\nexport { default as over } from './over.js';\nexport { default as overArgs } from './overArgs.js';\nexport { default as overEvery } from './overEvery.js';\nexport { default as overSome } from './overSome.js';\nexport { default as pad } from './pad.js';\nexport { default as padEnd } from './padEnd.js';\nexport { default as padStart } from './padStart.js';\nexport { default as parseInt } from './parseInt.js';\nexport { default as partial } from './partial.js';\nexport { default as partialRight } from './partialRight.js';\nexport { default as partition } from './partition.js';\nexport { default as pick } from './pick.js';\nexport { default as pickBy } from './pickBy.js';\nexport { default as plant } from './plant.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as pull } from './pull.js';\nexport { default as pullAll } from './pullAll.js';\nexport { default as pullAllBy } from './pullAllBy.js';\nexport { default as pullAllWith } from './pullAllWith.js';\nexport { default as pullAt } from './pullAt.js';\nexport { default as random } from './random.js';\nexport { default as range } from './range.js';\nexport { default as rangeRight } from './rangeRight.js';\nexport { default as rearg } from './rearg.js';\nexport { default as reduce } from './reduce.js';\nexport { default as reduceRight } from './reduceRight.js';\nexport { default as reject } from './reject.js';\nexport { default as remove } from './remove.js';\nexport { default as repeat } from './repeat.js';\nexport { default as replace } from './replace.js';\nexport { default as rest } from './rest.js';\nexport { default as result } from './result.js';\nexport { default as reverse } from './reverse.js';\nexport { default as round } from './round.js';\nexport { default as sample } from './sample.js';\nexport { default as sampleSize } from './sampleSize.js';\nexport { default as set } from './set.js';\nexport { default as setWith } from './setWith.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as size } from './size.js';\nexport { default as slice } from './slice.js';\nexport { default as snakeCase } from './snakeCase.js';\nexport { default as some } from './some.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as sortedIndexBy } from './sortedIndexBy.js';\nexport { default as sortedIndexOf } from './sortedIndexOf.js';\nexport { default as sortedLastIndex } from './sortedLastIndex.js';\nexport { default as sortedLastIndexBy } from './sortedLastIndexBy.js';\nexport { default as sortedLastIndexOf } from './sortedLastIndexOf.js';\nexport { default as sortedUniq } from './sortedUniq.js';\nexport { default as sortedUniqBy } from './sortedUniqBy.js';\nexport { default as split } from './split.js';\nexport { default as spread } from './spread.js';\nexport { default as startCase } from './startCase.js';\nexport { default as startsWith } from './startsWith.js';\nexport { default as stubArray } from './stubArray.js';\nexport { default as stubFalse } from './stubFalse.js';\nexport { default as stubObject } from './stubObject.js';\nexport { default as stubString } from './stubString.js';\nexport { default as stubTrue } from './stubTrue.js';\nexport { default as subtract } from './subtract.js';\nexport { default as sum } from './sum.js';\nexport { default as sumBy } from './sumBy.js';\nexport { default as tail } from './tail.js';\nexport { default as take } from './take.js';\nexport { default as takeRight } from './takeRight.js';\nexport { default as takeRightWhile } from './takeRightWhile.js';\nexport { default as takeWhile } from './takeWhile.js';\nexport { default as tap } from './tap.js';\nexport { default as template } from './template.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as throttle } from './throttle.js';\nexport { default as thru } from './thru.js';\nexport { default as times } from './times.js';\nexport { default as toArray } from './toArray.js';\nexport { default as toFinite } from './toFinite.js';\nexport { default as toInteger } from './toInteger.js';\nexport { default as toIterator } from './toIterator.js';\nexport { default as toJSON } from './toJSON.js';\nexport { default as toLength } from './toLength.js';\nexport { default as toLower } from './toLower.js';\nexport { default as toNumber } from './toNumber.js';\nexport { default as toPairs } from './toPairs.js';\nexport { default as toPairsIn } from './toPairsIn.js';\nexport { default as toPath } from './toPath.js';\nexport { default as toPlainObject } from './toPlainObject.js';\nexport { default as toSafeInteger } from './toSafeInteger.js';\nexport { default as toString } from './toString.js';\nexport { default as toUpper } from './toUpper.js';\nexport { default as transform } from './transform.js';\nexport { default as trim } from './trim.js';\nexport { default as trimEnd } from './trimEnd.js';\nexport { default as trimStart } from './trimStart.js';\nexport { default as truncate } from './truncate.js';\nexport { default as unary } from './unary.js';\nexport { default as unescape } from './unescape.js';\nexport { default as union } from './union.js';\nexport { default as unionBy } from './unionBy.js';\nexport { default as unionWith } from './unionWith.js';\nexport { default as uniq } from './uniq.js';\nexport { default as uniqBy } from './uniqBy.js';\nexport { default as uniqWith } from './uniqWith.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as unset } from './unset.js';\nexport { default as unzip } from './unzip.js';\nexport { default as unzipWith } from './unzipWith.js';\nexport { default as update } from './update.js';\nexport { default as updateWith } from './updateWith.js';\nexport { default as upperCase } from './upperCase.js';\nexport { default as upperFirst } from './upperFirst.js';\nexport { default as value } from './value.js';\nexport { default as valueOf } from './valueOf.js';\nexport { default as values } from './values.js';\nexport { default as valuesIn } from './valuesIn.js';\nexport { default as without } from './without.js';\nexport { default as words } from './words.js';\nexport { default as wrap } from './wrap.js';\nexport { default as wrapperAt } from './wrapperAt.js';\nexport { default as wrapperChain } from './wrapperChain.js';\nexport { default as wrapperCommit } from './commit.js';\nexport { default as wrapperLodash } from './wrapperLodash.js';\nexport { default as wrapperNext } from './next.js';\nexport { default as wrapperPlant } from './plant.js';\nexport { default as wrapperReverse } from './wrapperReverse.js';\nexport { default as wrapperToIterator } from './toIterator.js';\nexport { default as wrapperValue } from './wrapperValue.js';\nexport { default as xor } from './xor.js';\nexport { default as xorBy } from './xorBy.js';\nexport { default as xorWith } from './xorWith.js';\nexport { default as zip } from './zip.js';\nexport { default as zipObject } from './zipObject.js';\nexport { default as zipObjectDeep } from './zipObjectDeep.js';\nexport { default as zipWith } from './zipWith.js';\nexport { default } from './lodash.default.js';\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nexport default createCompounder;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduce;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default basePropertyOf;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nexport default words;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","/**\n * Asserts that a condition is truthy, throwing an exception with the specified message if it is falsy.\n */\nexport function assert(condition: unknown, message?: string): asserts condition {\n    if (!condition) {\n        throw new Error(message ?? \"Expected condition to be truthy but got falsy.\");\n    }\n}\n\nexport function assertDefined<T>(val: T, message?: string): asserts val is Exclude<T, undefined> {\n    if (val === undefined) {\n        throw new Error(message ?? \"Expected value to be defined but got undefined.\");\n    }\n}\n\nexport function assertNonNull<T>(val: T, message?: string): asserts val is Exclude<T, null> {\n    if (val === null) {\n        throw new Error(message ?? \"Expected value to be non-null but got null.\");\n    }\n}\n\nexport function assertString(val: unknown, message?: string): asserts val is string {\n    if (typeof val !== \"string\") {\n        throw new Error(message ?? `Expected value to be a string but got ${typeof val}.`);\n    }\n}\n\nexport function assertNever(x: never): never {\n    throw new Error(\"Unexpected value: \" + JSON.stringify(x));\n}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertNeverNoThrow(_: never): void {}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertVoidNoThrow(_x: void): void {}\n","export function extractErrorMessage(e: unknown): string {\n    if (typeof e === \"string\") {\n        return e.length > 0 ? e : \"Unknown error\";\n    }\n    if (e instanceof Error) {\n        return e.message.length > 0 ? e.message : \"Unknown error\";\n    }\n    if (typeof e === \"object\" && e !== null && \"message\" in e && typeof e[\"message\"] === \"string\") {\n        return e[\"message\"].length > 0 ? e[\"message\"] : \"Unknown error\";\n    }\n    const stringified = String(e);\n    return stringified.length > 0 ? stringified : \"Unknown error\";\n}\n","export function keys<T extends object>(object: T): (keyof T)[] {\n    return Object.keys(object) as (keyof T)[];\n}\n","export { AbstractAstNode } from \"./AbstractAstNode.js\";\nexport { AbstractFormatter, NopFormatter } from \"./AbstractFormatter.js\";\nexport { AbstractWriter } from \"./AbstractWriter.js\";\nexport {\n    type Argument,\n    type Arguments,\n    hasNamedArgument,\n    isNamedArgument,\n    type NamedArgument,\n    type UnnamedArgument\n} from \"./Argument.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Ternary } from \"./Ternary.js\";\n","import { tag } from \"../utils/stacktrace.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport abstract class AbstractAstNode {\n    /**\n     * Every AST node knows how to write itself to a string.\n     */\n    public abstract write(writer: AbstractWriter): void;\n\n    public constructor() {\n        // when FERN_STACK_TRACK is defined this will track the stack trace of the current AstNode.\n        // otherwise this has absolutely no effect whatsoever.\n        tag(this);\n    }\n}\n","/**\n * Global flag that enables or disables stack tracing functionality throughout the application.\n * This is controlled via the FERN_STACK_TRACK environment variable.\n *\n * When enabled (truthy environment variable value), stack traces will be captured and processed\n * by the stacktrace functions in this module. When disabled, the stacktrace() function returns\n * an empty array for performance optimization.\n *\n * @example\n * // Enable tracing by setting the environment variable\n * // FERN_STACK_TRACK=1 <cmdline>\n */\nconst key = process.env[\"FERN_STACK_TRACK\"]?.toLowerCase() ?? \"\";\n\nexport const enableStackTracking = key !== \"\" && key !== \"0\" && key !== \"false\";\n\n/** The style of comments desired for the stack tracking comments\n *\n * can be \"single\", \"multiline\", or \"box\".\n * if not set to one of those, defaults to \"single\".\n */\nexport const trackingType = [\"single\", \"multiline\", \"box\"].includes(key) ? key : \"single\";\n\nif (enableStackTracking) {\n    // we're going to put a hard max limit on the stack trace to prevent infinite recursion and excessive stack generation\n    Error.stackTraceLimit = 50;\n}\n\n/**\n * Configuration options for controlling stack trace capture and filtering behavior.\n */\ninterface StackTraceOptions {\n    /**\n     * Maximum number of stack frames to return after filtering.\n     *\n     * Maximum may never exceed 50.\n     * @default 50\n     */\n    maxFrames?: number;\n\n    /**\n     * Number of frames to skip from the beginning of the filtered stack trace.\n     * Useful for omitting wrapper functions from the output.\n     * @default 0\n     */\n    skip?: number;\n\n    /**\n     * Array of function name substrings that trigger an early stop when encountered.\n     * When a frame's function name includes any of these strings, that frame and all\n     * subsequent frames will be excluded from the output.\n     *\n     * implicitly includes \"runInteractiveTask\"\n     * @default []\n     */\n    stopOn?: string[];\n\n    /**\n     * Array of file path substrings to filter out. Any frame whose path contains\n     * any of these strings will be excluded from the output.\n     * @default []\n     */\n    filterPaths?: string[];\n\n    /**\n     * Array of function name substrings to filter out. Any frame whose function name\n     * contains any of these strings will be excluded from the output.\n     *\n     * implicitly includes \"SdkGeneratorCLI\", \"runCli\",\"Frames.trace\",\"Frames.tag\", \"at\", \"stacktrace\"\n     * @default []\n     */\n    filterFunctions?: string[];\n\n    /**\n     * Whether to filter out Node.js internal frames (paths starting with \"node:\").\n     * @default true\n     */\n    filterNode?: boolean;\n\n    /**\n     * Whether to filter out .js files, which typically indicate non-source files\n     * without source map information.\n     * @default true\n     */\n    filterJs?: boolean;\n\n    /**\n     * A function to format the file path of the stack trace frame.\n     * @default (filename) => filename\n     */\n    formatFilename?: (filename: string) => string;\n}\n\n/**\n * Represents a single parsed stack trace frame containing function, file path, and position information.\n */\nexport interface StackTraceFrame {\n    /**\n     * The function name or context. May include special formatting like \"alias()=> { ... }\"\n     * for certain Object methods, or be an empty string for anonymous contexts.\n     */\n    fn: string;\n\n    /**\n     * The file path where this frame originated. This will typically be the full path\n     * to the source file.\n     */\n    path: string;\n\n    /**\n     * The line and column position in the format \"line:column\" (e.g., \"42:13\").\n     */\n    position: string;\n}\n\nconst globalFunctionFilters = new Set<string>([\"SdkGeneratorCLI\", \"runCli\", \"LoggerImpl\", \"Array.forEach\"]);\nconst globalFileFilters = new Set<string>([\"stacktrace\"]);\n\n/**\n * Adds a function name to the global function filters for stack traces\n * @param filter - The function name to add to the global function filters.\n */\nexport function addGlobalFunctionFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFunctionFilters.add(filter);\n    }\n}\n\n/**\n * Adds a file path to the global file filters for stack traces.\n * @param filter - The file path to add to the global file filters.\n */\nexport function addGlobalFileFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFileFilters.add(filter);\n    }\n}\n\n/**\n * Captures and parses the current call stack, returning an array of stack frames with filtering options.\n *\n * This function creates a new Error object to capture the stack trace, then parses each frame\n * to extract function names, file paths, and positions. It applies multiple filtering strategies\n * to exclude unwanted frames (e.g., Node.js internals, .js files, specific functions).\n *\n * The function only operates when `enableStackTracking` is true. If tracing is disabled, it returns\n * an empty array for performance optimization.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns Array of parsed stack trace frames, filtered and limited according to the options\n *\n * @example\n * // Capture the first 10 frames, skipping the first 2\n * const frames = stacktrace({ maxFrames: 10, skip: 2 });\n *\n * @example\n * // Capture frames until hitting \"main\" function, filter out test files\n * const frames = stacktrace({\n *   stopOn: [\"main\"],\n *   filterPaths: [\"/test/\"],\n *   filterFunctions: [\"runTests\"]\n * });\n *\n * @remarks\n * The function applies filters in the following order:\n * 1. Parses each stack frame using regex to extract function, path, line, and column\n * 2. Applies early-stop logic when encountering functions in the `stopOn` array\n * 3. Formats special function names (e.g., \"Object.alias\" → \"alias()=> { ... }\")\n * 4. Filters out:\n *    - The stacktrace function itself (\"at\", \"stacktrace\")\n *    - Functions matching `filterFunctions` (substring match)\n *    - Node.js internal frames (if `filterNode` is true)\n *    - .js files (if `filterJs` is true)\n *    - Paths matching `filterPaths` (substring match)\n * 5. Applies `skip` and `maxFrames` to limit the output\n */\nexport function stacktrace({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    formatFilename = (filename) => filename\n}: StackTraceOptions = {}): StackTraceFrame[] {\n    if (!enableStackTracking) {\n        return [];\n    }\n    filterFunctions = [...filterFunctions, ...globalFunctionFilters];\n    filterPaths = [...filterPaths, ...globalFileFilters];\n    stopOn = [...stopOn, \"runInteractiveTask\"];\n    let stop = false;\n    return (\n        (new Error().stack ?? \"\")\n            .split(\"\\n\")\n            .map((line) => {\n                const match = line.match(/at\\s+(.*)\\s+\\((.*):(\\d+):(\\d+)\\)/);\n                if (match && match.length === 5) {\n                    let [, fn, path, line, column] = match;\n                    if (!fn || !path || !line || !column) {\n                        return undefined;\n                    }\n\n                    if (stop || stopOn.some((s) => fn?.includes(s))) {\n                        stop = true;\n                        return undefined;\n                    }\n\n                    switch (fn) {\n                        case \"Object.<anonymous>\":\n                            fn = \"\";\n                            break;\n                        case \"Object.object\":\n                        case \"Object.alias\":\n                        case \"Object.union\":\n                        case \"Object.enum\":\n                        case \"Object.undiscriminatedUnion\":\n                            fn = `${fn.substring(fn.indexOf(\".\") + 1)}()=> { ... }`;\n                            break;\n                    }\n                    return {\n                        fn,\n                        path: formatFilename(path),\n                        position: `${line}:${column}`\n                    } as StackTraceFrame;\n                }\n                return undefined;\n            })\n            .filter(\n                (each) =>\n                    each &&\n                    !filterFunctions.some((f) => each.fn.includes(f)) && // substring match for filter functions\n                    !(filterNode && each.path?.startsWith(\"node:\")) && // starts with node:\n                    !(filterJs && each.path?.endsWith(\".js\")) && // ends with .js (meaning likely not a source file - no source map info)\n                    !filterPaths.some((p) => each.path.includes(p)) // substring match for filter paths\n            ) as StackTraceFrame[]\n    ).slice(skip, skip + maxFrames);\n}\n\n/**\n * Returns a formatted stack trace string at the current location for debugging purposes.\n *\n * This is a convenience function that wraps `stacktrace()` and formats the output as a\n * human-readable string. It's particularly useful for logging or debugging to understand\n * the execution flow and call hierarchy.\n *\n * The function supports both single-line and multi-line output formats. Single-line format\n * concatenates all frames into one line (useful for compact logging), while multi-line format\n * adds newlines and indentation for better readability.\n *\n * @param options - Configuration options for stack trace capture, filtering, and formatting\n * @param options.multiline - Whether to format the output with newlines and indentation.\n *                            When true, each frame is on its own line with 4-space indent.\n *                            When false (default), all frames are concatenated on one line.\n * @returns A formatted string containing the stack trace information, prefixed with \"stacktrace - \"\n *\n * @example\n * // Single-line format (compact)\n * console.log(at());\n * // Output: \"stacktrace - myFunction - /path/to/file.ts:42:13anotherFunc - /path/to/other.ts:17:5\"\n *\n * @example\n * // Multi-line format (readable)\n * console.log(at({ multiline: true, maxFrames: 5 }));\n * // Output:\n * // stacktrace -\n * //     myFunction - /path/to/file.ts:42:13\n * //     anotherFunc - /path/to/other.ts:17:5\n * //     main - /path/to/index.ts:10:1\n *\n * @example\n * // Custom filtering for specific use case\n * console.log(at({\n *   maxFrames: 10,\n *   skip: 1,\n *   filterPaths: [\"foo.ts\"],\n *   multiline: true\n * }));\n *\n * @remarks\n * This function automatically skips itself from the stack trace output by default.\n * The \"at\" function name is filtered by the underlying `stacktrace()` function.\n */\nexport function at({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [\"runInteractiveTask\"],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}): string {\n    return enableStackTracking\n        ? `${stacktrace({ maxFrames, skip, filterPaths, filterFunctions, stopOn, filterNode, filterJs, formatFilename })\n              .map((each) => `${multiline ? \"\\n    \" : \" > \"}${each.fn} - ${each.path}:${each.position}`)\n              .join(\"\")}`\n        : \"\";\n}\n\n/** This class allows the developer to attach stack trace information to objects  */\nexport class StackTraces {\n    private readonly maxFrames: number;\n    private readonly skip: number;\n    private readonly filterPaths: string[];\n    private readonly filterFunctions: string[];\n    private readonly stopOn: string[];\n    private readonly filterNode: boolean;\n    private readonly filterJs: boolean;\n    private readonly multiline: boolean;\n    private readonly formatFilename: (filename: string) => string;\n    private tracking = new WeakMap<object, Set<StackTraceFrame>>();\n\n    constructor({\n        maxFrames = 50,\n        skip = 0,\n        filterPaths = [],\n        filterFunctions = [],\n        stopOn = [],\n        filterNode = true,\n        filterJs = true,\n        multiline = false,\n        formatFilename = (filename) => filename\n    }: StackTraceOptions & { multiline?: boolean } = {}) {\n        this.maxFrames = maxFrames;\n        this.skip = skip;\n        this.filterPaths = filterPaths;\n        this.filterFunctions = filterFunctions;\n        this.stopOn = stopOn;\n        this.filterNode = filterNode;\n        this.filterJs = filterJs;\n        this.multiline = multiline;\n        this.formatFilename = formatFilename;\n    }\n\n    /**\n     * Tags the current stack trace with the given object.\n     *\n     * This can be called multiple times to add more stack trace information to the object.\n     *\n     * @param obj - The object to tag the stack trace with.\n     */\n    tag(obj: object): void {\n        const current = this.tracking.get(obj) || new Set<StackTraceFrame>();\n        stacktrace({\n            maxFrames: this.maxFrames,\n            skip: this.skip,\n            filterPaths: this.filterPaths,\n            filterFunctions: this.filterFunctions,\n            stopOn: this.stopOn,\n            filterNode: this.filterNode,\n            filterJs: this.filterJs,\n            formatFilename: this.formatFilename\n        }).forEach((frame) => current.add(frame));\n        this.tracking.set(obj, current);\n    }\n\n    /**\n     * Returns a formatted stack trace string for the given object.\n     * @param obj - The object to get the stack trace for.\n     * @returns A formatted string containing the stack trace information.\n     */\n    trace(obj: object): string {\n        if (!enableStackTracking) {\n            return \"\";\n        }\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return \"\";\n        }\n\n        return [...frames]\n            .map((each) => `${this.multiline ? \"\\n    \" : \"\"}${each.fn} - ${each.path}:${each.position}`)\n            .join(\"\");\n    }\n\n    /**\n     * Gets the stack trace frames for the given object.\n     *\n     * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n     *       Otherwise this will return an empty array.\n     *\n     * @param obj - The object to get the stack trace frames for.\n     * @returns The stack trace frames for the given object.\n     */\n    frames(obj: object): StackTraceFrame[] {\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return [];\n        }\n        return [...frames];\n    }\n\n    /**\n     * Frees the stack trace information for the given object.\n     * @param obj - The object to free the stack trace information for.\n     */\n    free(obj: object): void {\n        this.tracking.delete(obj);\n    }\n\n    /**\n     * Clears all stack trace information.\n     */\n    clear(): void {\n        this.tracking = new WeakMap<object, Set<StackTraceFrame>>();\n    }\n}\n\nlet stackTraces: StackTraces | undefined;\n/**\n * Starts tracking the stack trace of the current object.\n *\n * Note: This will only start tracking when FERN_STACK_TRACK is defined.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns The stack traces object.\n */\nexport function startTracking({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}) {\n    if (!enableStackTracking) {\n        return;\n    }\n    stackTraces ??= new StackTraces({\n        maxFrames,\n        skip,\n        filterPaths,\n        filterFunctions,\n        stopOn,\n        filterNode,\n        filterJs,\n        multiline,\n        formatFilename\n    });\n}\n\n/**\n * Tags the current stack trace with the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to tag the stack trace with.\n */\nexport function tag(obj: object) {\n    stackTraces?.tag(obj);\n}\n\n/**\n * Returns a formatted stack trace string for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to get the stack trace for.\n * @returns A formatted string containing the stack trace information.\n */\nexport function trace(obj: object) {\n    return stackTraces?.trace(obj) ?? \"\";\n}\n\n/**\n * Frees the stack trace information for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to free the stack trace information for.\n */\nexport function free(obj: object) {\n    stackTraces?.free(obj);\n}\n\n/**\n * Gets the stack trace frames for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will return an empty array.\n *\n * @param obj - The object to get the stack trace frames for.\n * @returns The stack trace frames for the given object.\n */\nexport function getFramesForTaggedObject(obj: object): StackTraceFrame[] {\n    return stackTraces?.frames(obj) ?? [];\n}\n","export abstract class AbstractFormatter {\n    abstract format(content: string): Promise<string>;\n    abstract formatSync(content: string): string;\n    formatMultiple(contents: string[]): Promise<string[]> {\n        return Promise.all(contents.map((content) => this.format(content)));\n    }\n    formatMultipleSync(contents: string[]): string[] {\n        return contents.map((content) => this.formatSync(content));\n    }\n    dispose(): void {\n        // no-op by default; subclasses may override to clean up resources\n    }\n}\n\nexport class NopFormatter extends AbstractFormatter {\n    public async format(content: string): Promise<string> {\n        return content;\n    }\n\n    public formatSync(content: string): string {\n        return content;\n    }\n}\n","import { enableStackTracking } from \"../utils/index.js\";\nimport {\n    getFramesForTaggedObject,\n    StackTraceFrame,\n    stacktrace,\n    startTracking,\n    trackingType\n} from \"../utils/stacktrace.js\";\nimport { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\n\nconst TAB_SIZE = 4;\n// this will start tracking only when FERN_STACK_TRACK is defined\n// otherwise this has absolutely no effect whatsoever.\nstartTracking({ skip: 0, maxFrames: 15, filterFunctions: [\"Abstract\"] });\n\nexport class AbstractWriter {\n    /* The buffer of lines being written */\n    protected readonly lineBuffer: string[] = [];\n\n    /* The contents being written */\n    public get buffer() {\n        if (enableStackTracking && this.nodeStackFrames.length > 0) {\n            // if we're emitting tracking comments, let's ensure we get the last little bit of info.\n            // by appending a newline to the buffer before returning it.\n            // (this can be useful when using toString() to get a node's content.)\n            this.writeInternal(\"\\n\");\n        }\n        return this.lineBuffer.join(\"\\n\") + (this.lastCharacterIsNewline ? \"\\n\" : \"\");\n    }\n\n    /* Indentation level (multiple of 4) */\n    private indentLevel = 0;\n    /* Whether anything has been written to the buffer */\n    private hasWrittenAnything = false;\n    /* Whether the last character written was a semi colon */\n    private lastCharacterIsSemicolon = false;\n    /* Whether the last character written was a newline */\n    private lastCharacterIsNewline = false;\n    /* The stack traces associated with the current node */\n    private nodeStackFrames: StackTraceFrame[] = [];\n\n    /**\n     * Writes arbitrary text and nodes\n     * @param text\n     */\n    public write(...parts: (string | AbstractAstNode | undefined)[]): void {\n        for (const text of parts) {\n            if (text != null) {\n                if (typeof text === \"string\") {\n                    const textEndsInNewline = text.length > 0 && text.endsWith(\"\\n\");\n                    // temporarily remove the trailing newline, since we don't want to add the indent prefix after it\n                    const textWithoutNewline = textEndsInNewline ? text.substring(0, text.length - 1) : text;\n\n                    const indent = this.getIndentString();\n                    let indentedText = textWithoutNewline.replaceAll(\"\\n\", `\\n${indent}`);\n                    if (this.isAtStartOfLine()) {\n                        indentedText = indent + indentedText;\n                    }\n                    if (textEndsInNewline) {\n                        indentedText += \"\\n\";\n                    }\n                    this.writeInternal(indentedText);\n                } else {\n                    this.writeNode(text);\n                }\n            }\n        }\n    }\n\n    public writeStatement(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...parts);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes arbitrary text without indentation\n     * @param text\n     */\n    public writeNoIndent(text: string): void {\n        const currIndentLevel = this.indentLevel;\n        this.indentLevel = 0;\n        this.write(text);\n        this.indentLevel = currIndentLevel;\n    }\n\n    /**\n     * Writes a node\n     * @param node\n     */\n    public writeNode(node: AbstractAstNode): void {\n        if (enableStackTracking) {\n            this.nodeStackFrames.push(...getFramesForTaggedObject(node));\n        }\n        node.write(this);\n\n        // if we're using box or multiline comments, write a newline after every node so it emits a comment for the node\n        // since we're dumping a lot of data anyway, might as well be explicit about it.\n        if (enableStackTracking && trackingType !== \"single\") {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    /**\n     * Writes a node or string\n     * @param input\n     */\n    public writeNodeOrString(input: AbstractAstNode | string): void {\n        if (typeof input === \"string\") {\n            this.write(input);\n            return;\n        }\n\n        this.writeNode(input);\n    }\n\n    /**\n     * Writes a node but then suffixes with a `;` and new line\n     * @param node\n     */\n    public writeNodeStatement(node: AbstractAstNode): void {\n        this.writeNode(node);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes text but then suffixes with a `;`\n     * @param node\n     */\n    public writeTextStatement(text: string): void {\n        const codeBlock = new CodeBlock(text);\n        codeBlock.write(this);\n        if (!text.endsWith(\";\")) {\n            this.write(\";\");\n        }\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlow(prefix: string, statement: AbstractAstNode): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlowWithoutStatement(prefix: string): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    /**\n     * Ends a control flow block\n     */\n    public endControlFlow(): void {\n        this.popScope();\n    }\n\n    /**\n     * Starts a control flow without a newline from the previous control flow block\n     * @param prefix\n     * @param statement\n     */\n    public contiguousControlFlow(prefix: string, statement: AbstractAstNode): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow alternative block\n     * @param prefix\n     */\n    public alternativeControlFlow(prefix: string): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    public pushScope() {\n        this.writeLine(\"{\");\n        this.indent();\n    }\n\n    public popScope(withNewline = true) {\n        this.dedent();\n        this.writeNewLineIfLastLineNot();\n        if (withNewline) {\n            this.writeLine(\"}\");\n        } else {\n            this.write(\"}\");\n        }\n    }\n\n    /* Only writes a newline if last line in the buffer is not a newline */\n    public writeLine(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...(parts.length === 0 ? [\"\"] : parts));\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /* Always writes newline */\n    public newLine(): void {\n        this.writeInternal(\"\\n\");\n    }\n\n    public writeSemicolonIfLastCharacterIsNot(): void {\n        if (!this.lastCharacterIsSemicolon) {\n            this.writeInternal(\";\");\n        }\n    }\n\n    public writeNewLineIfLastLineNot(): void {\n        if (!this.lastCharacterIsNewline) {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    public indent(): void {\n        this.indentLevel++;\n    }\n\n    public dedent(): void {\n        this.indentLevel--;\n    }\n\n    public delimit<T extends AbstractAstNode>({\n        nodes,\n        delimiter,\n        writeFunction\n    }: {\n        nodes: T[];\n        delimiter: string;\n        writeFunction: (node: T) => void;\n    }): void {\n        if (nodes.length > 0) {\n            const firstNode = nodes[0];\n            if (firstNode != null) {\n                writeFunction(firstNode);\n            }\n            for (let i = 1; i < nodes.length; i++) {\n                this.write(delimiter);\n                const node = nodes[i];\n                if (node != null) {\n                    writeFunction(node);\n                }\n            }\n        }\n    }\n\n    public toString(): string {\n        return this.buffer;\n    }\n\n    /*******************************\n     * Helper Methods\n     *******************************/\n    private writeInternal(text: string) {\n        if (text.length === 0) {\n            return;\n        }\n\n        const appendToLastLine = !this.lastCharacterIsNewline;\n\n        this.hasWrittenAnything = true;\n        this.lastCharacterIsNewline = text.endsWith(\"\\n\");\n        this.lastCharacterIsSemicolon = text.endsWith(\";\");\n\n        const lines = text.split(\"\\n\");\n\n        const appendTrackingComment =\n            enableStackTracking && !this.shouldSkipTracking(lines) && this.lastCharacterIsNewline;\n\n        if (appendToLastLine) {\n            this.lastLine = `${this.lastLine}${lines.shift() || \"\"}`;\n        }\n\n        if (this.lastCharacterIsNewline) {\n            lines.pop();\n        }\n\n        this.lineBuffer.push(...lines);\n\n        if (appendTrackingComment) {\n            this.appendTrackingComment();\n        }\n    }\n\n    /**\n     * Sets the last line of the buffer\n     * @param line - The line to set\n     */\n    protected set lastLine(line: string) {\n        if (this.lineBuffer.length > 0) {\n            this.lineBuffer[this.lineBuffer.length - 1] = line;\n        } else {\n            this.lineBuffer.push(line);\n        }\n    }\n\n    /**\n     * Gets the last line of the buffer\n     * @returns The last line of the buffer\n     */\n    protected get lastLine() {\n        return this.lineBuffer[this.lineBuffer.length - 1] || \"\";\n    }\n\n    /**\n     * Determines if the tracking comment should be skipped\n     * @param lines - The that are being written out\n     *\n     * @returns True if the tracking comment should be skipped\n     */\n    protected shouldSkipTracking(lines: string[]) {\n        return false;\n    }\n\n    /**\n     * Formats the stack trace frames into a string\n     * @param stack - The stack trace to format\n     * @param prefix - The prefix to add to the stack trace\n     * @returns The formatted stack trace\n     */\n    protected formatStack(stack: StackTraceFrame[], prefix = \"\") {\n        return stack.map((each) => `${prefix ? `(${prefix}) ` : \"\"} ${each.fn} - ${each.path} : ${each.position}`);\n    }\n\n    /**\n     * Filters out frames that start with the name of the current class\n     *\n     * This will filter out frames that start with the name of the current class that inherits from AbstractWriter.\n     *\n     * You can override this function to filter out more things.\n     * @param stack - The stack trace to filter\n     * @returns The filtered stack trace\n     */\n    protected filterStack(stack: StackTraceFrame[]) {\n        return stack.filter((each) => !each.fn.startsWith(`${this.constructor.name}.`));\n    }\n\n    /**\n     * Prepares the stack trace and calls the appropriate tracking comment formatter\n     */\n    protected appendTrackingComment() {\n        const stack = [\n            // adds the stack frames of the current function call\n            ...this.formatStack(this.filterStack(stacktrace({ maxFrames: 15, skip: 3 }))),\n\n            // adds the stack frames of any AstNodes that have been written since the last tracking comment\n            ...this.formatStack(this.filterStack(this.nodeStackFrames), \"node\")\n        ];\n        // reset the ast node stack frames\n        this.nodeStackFrames.length = 0;\n\n        switch (trackingType) {\n            case \"single\":\n                return this.singleLineTrackingComment(stack);\n\n            case \"multiline\":\n                return this.multiLineTrackingComment(stack);\n\n            case \"box\":\n                return this.boxTrackingComment(stack);\n        }\n    }\n\n    /**\n     * Creates a single line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected singleLineTrackingComment(stack: string[]) {\n        this.lastLine = `${this.lastLine} // ${stack.join(\" \")}`;\n    }\n    /**\n     * Creates a multi line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected multiLineTrackingComment(stack: string[]) {\n        this.lineBuffer.push(...stack.map((each) => `    // ${each}`));\n    }\n    /**\n     * Creates a box tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected boxTrackingComment(stack: string[]) {\n        this.lineBuffer.push(\"/*\", ...stack.map((each) => `    ${each}`), \"*/\");\n    }\n\n    private isAtStartOfLine(): boolean {\n        return this.lastCharacterIsNewline || !this.hasWrittenAnything;\n    }\n\n    private getIndentString(): string {\n        return \" \".repeat(this.indentLevel * this.getTabSize());\n    }\n\n    protected getTabSize(): number {\n        return TAB_SIZE;\n    }\n}\n","export { getPackageName } from \"./getPackageName.js\";\nexport { getSdkVersion } from \"./getSdkVersion.js\";\nexport {\n    addGlobalFileFilter,\n    addGlobalFunctionFilter,\n    at,\n    enableStackTracking,\n    getFramesForTaggedObject,\n    StackTraces,\n    stacktrace\n} from \"./stacktrace.js\";\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg<T extends AbstractWriter> = string | AbstractAstNode | ((writer: T) => void);\n}\n\nexport class CodeBlock<T extends AbstractWriter> extends AbstractAstNode {\n    private value: CodeBlock.Arg<T>;\n\n    constructor(value: CodeBlock.Arg<T>) {\n        super();\n        this.value = value;\n    }\n\n    public write(writer: T): void {\n        if (typeof this.value === \"string\") {\n            writer.write(this.value);\n            // if function\n        } else if (typeof this.value === \"function\") {\n            this.value(writer);\n        } else {\n            this.value.write(writer);\n        }\n    }\n}\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\n\nexport type Argument = NamedArgument | UnnamedArgument;\n\nexport type Arguments = NamedArgument[] | UnnamedArgument[];\n\nexport interface NamedArgument {\n    name: string;\n    assignment: AbstractAstNode | string;\n    docs?: string;\n}\n\nexport type UnnamedArgument = AbstractAstNode;\n\nexport function isNamedArgument(argument: NamedArgument | UnnamedArgument): argument is NamedArgument {\n    return (argument as NamedArgument)?.name != null && (argument as NamedArgument)?.assignment != null;\n}\n\nexport function hasNamedArgument(arguments_: Arguments): boolean {\n    return arguments_.length > 0 && arguments_[0] != null && isNamedArgument(arguments_[0]);\n}\n","export { AbstractDynamicSnippetsGenerator } from \"./AbstractDynamicSnippetsGenerator.js\";\nexport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nexport { type DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nexport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nexport { type Options, Style } from \"./Options.js\";\nexport { Result } from \"./Result.js\";\nexport { Scope } from \"./Scope.js\";\nexport { type TypeInstance } from \"./TypeInstance.js\";\nexport { DynamicSnippetsTestRunner } from \"./test-utils/DynamicSnippetsTestRunner.js\";\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { AbstractAstNode } from \"../ast/index.js\";\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { AbstractEndpointSnippetGenerator } from \"./AbstractEndpointSnippetGenerator.js\";\nimport { Options } from \"./Options.js\";\nimport { Result } from \"./Result.js\";\n\nexport abstract class AbstractDynamicSnippetsGenerator<\n    Context extends AbstractDynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator extends AbstractEndpointSnippetGenerator<Context>\n> {\n    public constructor(public readonly context: Context) {}\n\n    protected abstract createSnippetGenerator(context: Context): EndpointSnippetGenerator;\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = await snippetGenerator.generateSnippet({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<AbstractAstNode> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        let lastError: Error | undefined = undefined;\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const ast = await snippetGenerator.generateSnippetAst({ endpoint, request, options });\n                return ast;\n            } catch (error) {\n                lastError = error as Error;\n            }\n        }\n        if (lastError != null) {\n            throw lastError;\n        }\n        throw new Error(\n            `Failed to generate snippet AST for endpoint: ${request.endpoint.method} ${request.endpoint.path}`\n        );\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = snippetGenerator.generateSnippetSync({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    /**\n     * Resolves endpoints based on the request and options.\n     * If an endpointId is specified in options, returns only that specific endpoint.\n     * Otherwise, resolves all endpoints matching the endpoint location (method + path).\n     */\n    private resolveEndpoints({\n        request,\n        options\n    }: {\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): FernIr.dynamic.Endpoint[] {\n        if (options.endpointId != null) {\n            const endpoint = this.context.resolveEndpointById(options.endpointId);\n            if (endpoint == null) {\n                throw new Error(`No endpoint found with ID \"${options.endpointId}\"`);\n            }\n            return [endpoint];\n        }\n        return this.context.resolveEndpointLocationOrThrow(request.endpoint);\n    }\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { ErrorReporter } from \"./ErrorReporter.js\";\n\nexport class Result {\n    public reporter: ErrorReporter | undefined;\n    public snippet: string | undefined;\n    public err: Error | undefined;\n\n    constructor() {\n        this.snippet = undefined;\n        this.reporter = undefined;\n        this.err = undefined;\n    }\n\n    public update({ context, snippet }: { context: AbstractDynamicSnippetsGeneratorContext; snippet: string }): void {\n        if (this.shouldUpdate({ snippet, reporter: context.errors })) {\n            this.reporter = context.errors.clone();\n            this.snippet = snippet;\n        }\n    }\n\n    public getResponseOrThrow({\n        endpoint\n    }: {\n        endpoint: FernIr.dynamic.EndpointLocation;\n    }): FernIr.dynamic.EndpointSnippetResponse {\n        if (this.snippet != null && this.reporter != null) {\n            return {\n                snippet: this.snippet,\n                errors: this.reporter.toDynamicSnippetErrors()\n            };\n        }\n        throw this.err ?? new Error(`Failed to generate snippet for endpoint \"${endpoint.method} ${endpoint.path}\"`);\n    }\n\n    private shouldUpdate({ snippet, reporter }: { snippet: string; reporter: ErrorReporter }): boolean {\n        if (this.reporter == null || (this.reporter.size() > 0 && reporter.size() === 0)) {\n            return true;\n        }\n        return snippet.length > (this.snippet?.length ?? 0);\n    }\n}\n","import { assertNever, keys } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { HttpEndpointReferenceParser } from \"@fern-api/fern-definition-schema\";\n\nimport { FernGeneratorExec } from \"../GeneratorNotificationService.js\";\nimport { DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nimport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nimport { Options } from \"./Options.js\";\nimport { TypeInstance } from \"./TypeInstance.js\";\n\nexport abstract class AbstractDynamicSnippetsGeneratorContext {\n    public config: FernGeneratorExec.GeneratorConfig;\n    public options: Options;\n    public errors: ErrorReporter;\n\n    private _ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    private httpEndpointReferenceParser: HttpEndpointReferenceParser;\n\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        this._ir = ir;\n        this.config = config;\n        this.options = options;\n        this.errors = new ErrorReporter();\n        this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n    }\n\n    public abstract clone(): AbstractDynamicSnippetsGeneratorContext;\n\n    public associateQueryParametersByWireValue({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    throw this.newParameterNotRecognizedError(key);\n                }\n                // If this query parameter supports allow-multiple, the user-provided values\n                // must be wrapped in an array.\n                const typeInstanceValue =\n                    this.isListTypeReference(parameter.typeReference) && !Array.isArray(value) ? [value] : value;\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value: typeInstanceValue\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    public associateByWireValueOrDefault({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            this.errors.scope(parameter.name.wireValue);\n            try {\n                let value = values[parameter.name.wireValue];\n\n                if (value == null) {\n                    if (parameter.typeReference.type === \"primitive\" && parameter.typeReference.value === \"STRING\") {\n                        // synthesize a parameter value for string parameters that are missing data\n                        value = `<${parameter.name.wireValue}>`;\n                    } else {\n                        this.errors.add({\n                            severity: Severity.Critical,\n                            message: this.newParameterNotRecognizedError(parameter.name.wireValue).message\n                        });\n                        continue;\n                    }\n                }\n\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n\n        return instances;\n    }\n\n    public associateByWireValue({\n        parameters,\n        values,\n        ignoreMissingParameters\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n        ignoreMissingParameters?: boolean;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    if (ignoreMissingParameters) {\n                        // Required for request payloads that include more information than\n                        // just the target parameters (e.g. union base properties).\n                        continue;\n                    }\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: this.newParameterNotRecognizedError(key).message\n                    });\n                    continue;\n                }\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    /**\n     * Similar to `associateByWireValue` but it builds TypeInstance objects by iterating over schema parameters rather\n     * than snippet values. Skips non-nullable parameters that are missing from the snippet object.\n     */\n    public getExampleObjectProperties({\n        parameters,\n        snippetObject\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        snippetObject: unknown;\n    }): TypeInstance[] {\n        const objectRecord = (\n            typeof snippetObject === \"object\" && snippetObject !== null && !Array.isArray(snippetObject)\n                ? snippetObject\n                : {}\n        ) as Record<string, unknown>;\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            const value = objectRecord[parameter.name.wireValue];\n            if (value == null) {\n                if (parameter.typeReference.type === \"nullable\") {\n                    instances.push({\n                        name: parameter.name,\n                        typeReference: parameter.typeReference,\n                        value: null\n                    });\n                }\n            } else {\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            }\n        }\n        return instances;\n    }\n\n    public getSingleFileValue({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): string | undefined {\n        const fileValue = record[property.wireValue];\n        if (fileValue == null) {\n            return undefined;\n        }\n        if (typeof fileValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file value to be a string, got ${typeof fileValue}`\n            });\n            return undefined;\n        }\n        return fileValue;\n    }\n\n    public getFileArrayValues({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): string[] | undefined {\n        const fileArrayValue = record[property.wireValue];\n        if (fileArrayValue == null) {\n            return undefined;\n        }\n        if (!Array.isArray(fileArrayValue)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file array value to be an array of strings, got ${typeof fileArrayValue}`\n            });\n            return undefined;\n        }\n        const stringValues: string[] = [];\n        for (const value of fileArrayValue) {\n            if (typeof value !== \"string\") {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message: `Expected file array value to be an array of strings, got ${typeof value}`\n                });\n                return undefined;\n            }\n            stringValues.push(value);\n        }\n        return stringValues;\n    }\n\n    public getRecord(value: unknown): Record<string, unknown> | undefined {\n        if (typeof value !== \"object\" || Array.isArray(value)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object with key, value pairs but got: ${\n                    Array.isArray(value) ? \"array\" : typeof value\n                }`\n            });\n            return undefined;\n        }\n        if (value == null) {\n            return {};\n        }\n        return value as Record<string, unknown>;\n    }\n\n    public resolveNamedType({ typeId }: { typeId: FernIr.dynamic.TypeId }): FernIr.dynamic.NamedType | undefined {\n        const namedType = this._ir.types[typeId];\n        if (namedType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Type identified by \"${typeId}\" could not be found`\n            });\n            return undefined;\n        }\n        return namedType;\n    }\n\n    public resolveDiscriminatedUnionTypeInstance({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): DiscriminatedUnionTypeInstance | undefined {\n        const record = this.getRecord(value);\n        if (record == null) {\n            return undefined;\n        }\n\n        const discriminantFieldName = discriminatedUnion.discriminant.wireValue;\n        const discriminantValue = record[discriminantFieldName];\n        if (discriminantValue == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newParameterNotRecognizedError(discriminantFieldName).message\n            });\n            return undefined;\n        }\n        if (typeof discriminantValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected discriminant value to be a string but got: ${typeof discriminantValue}`\n            });\n            return undefined;\n        }\n\n        const singleDiscriminatedUnionType = discriminatedUnion.types[discriminantValue];\n        if (singleDiscriminatedUnionType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `No type found for discriminant value \"${discriminantValue}\"`\n            });\n            return undefined;\n        }\n\n        // Remove the discriminant from the record so that the value is valid for the type.\n        const { [discriminantFieldName]: _, ...filtered } = record;\n\n        return {\n            singleDiscriminatedUnionType,\n            discriminantValue: singleDiscriminatedUnionType.discriminantValue,\n            value: filtered\n        };\n    }\n\n    public resolveEndpointOrThrow(rawEndpoint: string): FernIr.dynamic.Endpoint[] {\n        const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(rawEndpoint);\n        if (parsedEndpoint == null) {\n            throw new Error(`Failed to parse endpoint reference \"${rawEndpoint}\"`);\n        }\n        return this.resolveEndpointLocationOrThrow(parsedEndpoint);\n    }\n\n    public resolveEndpointLocation(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints: FernIr.dynamic.Endpoint[] = [];\n        for (const endpoint of Object.values(this._ir.endpoints)) {\n            if (this.parsedEndpointMatches({ endpoint, parsedEndpoint: location })) {\n                endpoints.push(endpoint);\n            }\n        }\n\n        return endpoints;\n    }\n\n    public resolveEndpointLocationOrThrow(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints = this.resolveEndpointLocation(location);\n        if (endpoints.length === 0) {\n            throw new Error(`Failed to find endpoint identified by \"${location.method} ${location.path}\"`);\n        }\n        return endpoints;\n    }\n\n    public resolveEndpointById(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint | undefined {\n        return this._ir.endpoints[endpointId];\n    }\n\n    public resolveEndpointByIdOrThrow(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint {\n        const endpoint = this.resolveEndpointById(endpointId);\n        if (endpoint == null) {\n            throw new Error(`Failed to find endpoint with ID \"${endpointId}\"`);\n        }\n        return endpoint;\n    }\n\n    public needsRequestParameter({\n        request,\n        inlinePathParameters,\n        inlineFileProperties\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n        inlineFileProperties: boolean;\n    }): boolean {\n        if (this.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n            return true;\n        }\n        if (request.queryParameters != null && request.queryParameters.length > 0) {\n            return true;\n        }\n        if (request.headers != null && request.headers.length > 0) {\n            return true;\n        }\n        if (request.body != null) {\n            return this.includeRequestBodyInWrappedRequest({ body: request.body, inlineFileProperties });\n        }\n        if (request.metadata?.onlyPathParameters) {\n            return false;\n        }\n        return true;\n    }\n\n    public includePathParametersInWrappedRequest({\n        request,\n        inlinePathParameters\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n    }): boolean {\n        return inlinePathParameters && (request.metadata?.includePathParameters ?? false);\n    }\n\n    public isFileUploadRequestBody(\n        body: FernIr.dynamic.InlinedRequestBody\n    ): body is FernIr.dynamic.InlinedRequestBody.FileUpload {\n        switch (body.type) {\n            case \"fileUpload\":\n                return true;\n            case \"properties\":\n            case \"referenced\":\n                return false;\n            default:\n                assertNever(body);\n        }\n    }\n\n    public resolveEnvironmentName(environmentID: string): FernIr.Name | undefined {\n        if (this._ir.environments == null) {\n            return undefined;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            case \"multipleBaseUrls\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            default:\n                assertNever(environments);\n        }\n    }\n\n    public isSingleEnvironmentID(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.EnvironmentId {\n        return typeof environment === \"string\";\n    }\n\n    public isMultiEnvironmentValues(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n        return typeof environment === \"object\";\n    }\n\n    public validateMultiEnvironmentUrlValues(\n        multiEnvironmentUrlValues: FernIr.dynamic.MultipleEnvironmentUrlValues\n    ): boolean {\n        if (this._ir.environments == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message:\n                    \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n            });\n            return false;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message:\n                        \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n                });\n                return false;\n            }\n            case \"multipleBaseUrls\": {\n                const firstEnvironment = environments.environments[0];\n                if (firstEnvironment == null) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Multiple environments are not supported; use the baseUrl option instead\"\n                    });\n                    return false;\n                }\n                const expectedKeys = new Set(keys(firstEnvironment.urls));\n                for (const key of keys(multiEnvironmentUrlValues)) {\n                    if (expectedKeys.has(key)) {\n                        expectedKeys.delete(key);\n                    }\n                }\n                if (expectedKeys.size > 0) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: `The provided environments are invalid; got: [${Object.keys(multiEnvironmentUrlValues).join(\", \")}], expected: [${keys(firstEnvironment.urls).join(\", \")}]`\n                    });\n                    return false;\n                }\n                return true;\n            }\n        }\n    }\n\n    public getValueAsNumber({ value }: { value: unknown }): number | undefined {\n        if (typeof value !== \"number\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"number\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsBoolean({ value }: { value: unknown }): boolean | undefined {\n        if (typeof value !== \"boolean\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"boolean\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsString({ value }: { value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"string\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return this.isOptional(typeReference.value);\n            case \"optional\":\n                return true;\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public isNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return true;\n            case \"optional\":\n                return this.isNullable(typeReference.value);\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public newAuthMismatchError({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): Error {\n        return new Error(`Expected auth type ${auth.type}, got ${values.type}`);\n    }\n\n    public newParameterNotRecognizedError(parameterName: string): Error {\n        return new Error(`\"${parameterName}\" is not a recognized parameter for this endpoint`);\n    }\n\n    public newTypeMismatchError({ expected, value }: { expected: string; value: unknown }): Error {\n        return new Error(`Expected ${expected}, got ${typeof value}`);\n    }\n\n    private includeRequestBodyInWrappedRequest({\n        body,\n        inlineFileProperties\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        switch (body.type) {\n            case \"properties\":\n            case \"referenced\":\n                return true;\n            case \"fileUpload\":\n                return this.includeFileUploadBodyInWrappedRequest({ fileUpload: body, inlineFileProperties });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private includeFileUploadBodyInWrappedRequest({\n        fileUpload,\n        inlineFileProperties\n    }: {\n        fileUpload: FernIr.dynamic.FileUploadRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        return (\n            this.fileUploadHasBodyProperties({ fileUpload }) ||\n            (inlineFileProperties && this.fileUploadHasFileProperties({ fileUpload }))\n        );\n    }\n\n    private fileUploadHasBodyProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return false;\n                case \"bodyProperty\":\n                    return true;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private fileUploadHasFileProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return true;\n                case \"bodyProperty\":\n                    return false;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private isListTypeReference(typeReference: FernIr.dynamic.TypeReference): boolean {\n        if (typeReference.type === \"optional\") {\n            return this.isListTypeReference(typeReference.value);\n        }\n        return typeReference.type === \"list\" || typeReference.type === \"set\";\n    }\n\n    private parsedEndpointMatches({\n        endpoint,\n        parsedEndpoint\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        parsedEndpoint: { method: string; path: string; namespace?: string };\n    }): boolean {\n        return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n    }\n}\n","export { EXAMPLE_REFERENCE_PREFIX, YAML_SCHEMA_VERSION } from \"./constants.js\";\nexport { type NodePath, type NodePathItem } from \"./NodePath.js\";\nexport * as RawSchemas from \"./schemas/index.js\";\nexport { type DefinitionFileSchema, type PackageMarkerFileSchema, type RootApiFileSchema } from \"./schemas/index.js\";\nexport * from \"./utils/auth/index.js\";\nexport * from \"./utils/generics/index.js\";\nexport { getRequestBody } from \"./utils/getRequestBody.js\";\nexport { getResponseBodyType } from \"./utils/getResponseBodyType.js\";\nexport { HttpEndpointReferenceParser } from \"./utils/HttpEndpointReferenceParser.js\";\nexport { isInlineRequestBody } from \"./utils/isInlineRequestBody.js\";\nexport { isOpenApiSourceSchema } from \"./utils/isOpenApiSourceSchema.js\";\nexport { isRawProtobufSourceSchema } from \"./utils/isRawProtobufSourceSchema.js\";\nexport { isRawTextType } from \"./utils/isRawTextType.js\";\nexport { type BytesRequest, parseBytesRequest } from \"./utils/parseBytesRequest.js\";\nexport { parseFileUploadRequest, type RawFileUploadRequest } from \"./utils/parseFileUploadRequest.js\";\nexport { parseRawBytesType, type RawBytesType } from \"./utils/parseRawBytesType.js\";\nexport { parseRawFileType, type RawFileType } from \"./utils/parseRawFileType.js\";\nexport { parseRawTextType, type RawTextType } from \"./utils/parseRawTextType.js\";\nexport { RawPrimitiveType } from \"./utils/RawPrimitiveType.js\";\nexport { recursivelyVisitRawTypeReference } from \"./utils/recursivelyVisitRawTypeReference.js\";\nexport { visitExampleCodeSampleSchema } from \"./utils/visitExampleCodeSampleSchema.js\";\nexport { type ExampleResponseSchemaVisitor, visitExampleResponseSchema } from \"./utils/visitExampleResponseSchema.js\";\nexport {\n    isAnyAuthSchemes,\n    isSingleAuthScheme,\n    type RawApiAuthVisitor,\n    visitRawApiAuth\n} from \"./utils/visitRawApiAuth.js\";\nexport {\n    type AuthSchemeDeclarationVisitor,\n    isHeaderAuthScheme,\n    visitRawAuthSchemeDeclaration\n} from \"./utils/visitRawAuthSchemeDeclaration.js\";\nexport {\n    isRawMultipleBaseUrlsEnvironment,\n    isRawSingleBaseUrlEnvironment,\n    visitRawEnvironmentDeclaration\n} from \"./utils/visitRawEnvironmentDeclaration.js\";\nexport {\n    isVariablePathParameter,\n    type PathParameterDeclarationVisitor,\n    visitRawPathParameter\n} from \"./utils/visitRawPathParameter.js\";\nexport {\n    isRawAliasDefinition,\n    isRawDiscriminatedUnionDefinition,\n    isRawEnumDefinition,\n    isRawObjectDefinition,\n    isRawUndiscriminatedUnionDefinition,\n    type RawTypeDeclarationVisitor,\n    visitRawTypeDeclaration\n} from \"./utils/visitRawTypeDeclaration.js\";\nexport { FernContainerRegex, visitRawTypeReference } from \"./utils/visitRawTypeReference.js\";\n","export declare namespace HttpEndpointReferenceParser {\n    interface Parsed {\n        path: string;\n        method: Method;\n        namespace: string | undefined;\n    }\n\n    type Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\";\n\n    export type ValidationResult = Valid | Invalid;\n\n    interface Valid {\n        type: \"valid\";\n    }\n\n    interface Invalid {\n        type: \"invalid\";\n    }\n}\n\n/**\n * Parses an HTTP endpoint reference like `POST /users/get` or `namespace::POST /users/get`\n */\nexport class HttpEndpointReferenceParser {\n    //eslint-disable-next-line\n    private REFERENCE_REGEX = /^(?:(\\w+)::)?(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n\n    public validate(reference: string): HttpEndpointReferenceParser.ValidationResult {\n        const validFormat = this.REFERENCE_REGEX.test(reference);\n        if (!validFormat) {\n            return { type: \"invalid\" };\n        }\n        return { type: \"valid\" };\n    }\n\n    public tryParse(reference: string): HttpEndpointReferenceParser.Parsed | undefined {\n        const validationResponse = this.validate(reference);\n        if (validationResponse.type === \"invalid\") {\n            return undefined;\n        }\n        const match = reference.match(this.REFERENCE_REGEX);\n        if (match == null || match[2] == null || match[3] == null) {\n            return undefined;\n        }\n        return {\n            namespace: match[1], // undefined if no namespace prefix\n            method: match[2] as HttpEndpointReferenceParser.Method,\n            path: match[3]\n        };\n    }\n}\n","export const Severity = {\n    Critical: \"CRITICAL\",\n    Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n    type Path = readonly PathItem[];\n\n    type PathItem = string | ArrayPathItem;\n\n    type Severity = (typeof Severity)[keyof typeof Severity];\n\n    interface ArrayPathItem {\n        index: number;\n    }\n\n    interface Error {\n        path?: Path;\n        severity: Severity;\n        message: string;\n    }\n}\n\ninterface Error_ {\n    severity: \"CRITICAL\" | \"WARNING\";\n    path: string[] | undefined;\n    message: string;\n}\n\nexport class ErrorReporter {\n    private errors: ErrorReporter.Error[];\n    private path: ErrorReporter.PathItem[];\n\n    constructor() {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n        this.errors.push({\n            ...err,\n            path: [...this.path]\n        });\n    }\n\n    public scope(path: ErrorReporter.PathItem): void {\n        this.path.push(path);\n    }\n\n    public unscope(): void {\n        this.path.pop();\n    }\n\n    public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n        return this.errors.filter((err) => err.severity === severity);\n    }\n\n    public empty(): boolean {\n        return this.errors.length === 0;\n    }\n\n    public size(): number {\n        return this.errors.length;\n    }\n\n    public truncate(size: number): void {\n        this.errors.length = size;\n    }\n\n    public clone(): ErrorReporter {\n        const clone = new ErrorReporter();\n        clone.errors = [...this.errors];\n        clone.path = [...this.path];\n        return clone;\n    }\n\n    public reset(): void {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public toDynamicSnippetErrors(): Error_[] {\n        return this.errors.map((err) => ({\n            severity: err.severity,\n            path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n            message: err.message\n        }));\n    }\n\n    private pathToStringArray(path: ErrorReporter.Path): string[] {\n        const result: string[] = [];\n        for (const item of path) {\n            if (typeof item === \"string\") {\n                result.push(item);\n                continue;\n            }\n            result[result.length - 1] += `[${item.index}]`;\n        }\n        return result;\n    }\n}\n","import { AbstractFormatter } from \"../ast/AbstractFormatter.js\";\n\n// Style of the generated snippets.\nexport enum Style {\n    // Use a concise style for the snippet (top-level statements).\n    Concise = \"concise\",\n\n    // Use the full style for the snippet (a `main` function that can be run).\n    Full = \"full\"\n}\n\n// Options used to customize the behavior of any dynamic snippets generator\nexport interface Options {\n    // Config to use for a specific generator. This is independent of the customConfig\n    // used by the generator, and is primarily used in testing environments.\n    config?: unknown;\n\n    // The formatter to use for the generated snippets.\n    formatter?: AbstractFormatter;\n\n    // Style of the generated snippets. By default, the executable style is used.\n    style?: Style;\n\n    // Skip client instantiation in the generated snippet. Useful for wire tests\n    // where the client is already instantiated in the test setup.\n    skipClientInstantiation?: boolean;\n\n    // Optional endpoint ID to generate a snippet for a specific endpoint.\n    // This is useful when multiple endpoints have the same HTTP method and path\n    // across different namespaces, and we need to generate a snippet for a specific one.\n    endpointId?: string;\n}\n","export const Scope = {\n    PathParameters: \"pathParameters\",\n    QueryParameters: \"queryParameters\",\n    Headers: \"headers\",\n    RequestBody: \"requestBody\"\n} as const;\n\nexport type Scope = (typeof Scope)[keyof typeof Scope];\n","import {\n    AbstractDynamicSnippetsGeneratorContext,\n    FernGeneratorExec,\n    Options,\n    TypeInstance\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { BaseJavaCustomConfigSchema, java } from \"@fern-api/java-ast\";\nimport { camelCase } from \"lodash-es\";\n\nimport { DynamicTypeLiteralMapper } from \"./DynamicTypeLiteralMapper.js\";\nimport { DynamicTypeMapper } from \"./DynamicTypeMapper.js\";\nimport { FilePropertyMapper } from \"./FilePropertyMapper.js\";\n\nconst RESERVED_NAMES = new Set([\n    \"enum\",\n    \"extends\",\n    \"package\",\n    \"void\",\n    \"short\",\n    \"class\",\n    \"abstract\",\n    \"return\",\n    \"import\",\n    \"for\",\n    \"assert\",\n    \"switch\"\n]);\n\n// Method names that conflict with final methods in Java's Object class\nconst RESERVED_METHOD_NAMES = new Set([\"getClass\", \"notify\", \"notifyAll\", \"wait\"]);\n\nexport class DynamicSnippetsGeneratorContext extends AbstractDynamicSnippetsGeneratorContext {\n    public ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    public customConfig: BaseJavaCustomConfigSchema;\n    public dynamicTypeMapper: DynamicTypeMapper;\n    public dynamicTypeLiteralMapper: DynamicTypeLiteralMapper;\n    public filePropertyMapper: FilePropertyMapper;\n\n    constructor({\n        ir,\n        config,\n        options,\n        sharedCustomConfig\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n        sharedCustomConfig?: BaseJavaCustomConfigSchema;\n    }) {\n        super({ ir, config, options });\n        this.ir = ir;\n        this.customConfig = sharedCustomConfig ?? BaseJavaCustomConfigSchema.parse(config.customConfig ?? {});\n        this.dynamicTypeMapper = new DynamicTypeMapper({ context: this });\n        this.dynamicTypeLiteralMapper = new DynamicTypeLiteralMapper({ context: this });\n        this.filePropertyMapper = new FilePropertyMapper({ context: this });\n    }\n\n    public clone(): DynamicSnippetsGeneratorContext {\n        return new DynamicSnippetsGeneratorContext({\n            ir: this.ir,\n            config: this.config,\n            options: this.options,\n            sharedCustomConfig: this.customConfig\n        });\n    }\n\n    public getClassName(name: FernIr.Name): string {\n        return this.getName(name.pascalCase.safeName);\n    }\n\n    public getEnumName(name: FernIr.Name): string {\n        return this.getName(name.screamingSnakeCase.safeName);\n    }\n\n    public getPropertyName(name: FernIr.Name): string {\n        return this.getName(name.camelCase.safeName);\n    }\n\n    public getMethodName(name: FernIr.Name): string {\n        const methodName = name.camelCase.safeName;\n        // Use suffix for reserved method names to match Java v1 generator behavior\n        if (this.isReservedMethodName(methodName)) {\n            return methodName + \"_\";\n        }\n        return this.getName(methodName);\n    }\n\n    public getRootClientClassReference(): java.ClassReference {\n        return java.classReference({\n            name: this.getRootClientClassName(),\n            packageName: this.getRootPackageName()\n        });\n    }\n\n    public getRootClientClassName(): string {\n        return this.customConfig?.[\"client-class-name\"] ?? `${this.getBaseNamePrefix()}Client`;\n    }\n\n    public getEnvironmentClassName(): string {\n        return \"Environment\";\n    }\n\n    public getEnvironmentTypeReferenceFromID(environmentID: string): java.AstNode | undefined {\n        const environmentName = this.resolveEnvironmentName(environmentID);\n        if (environmentName == null) {\n            return undefined;\n        }\n        return java.codeblock((writer) => {\n            writer.writeNode(this.getEnvironmentClassReference());\n            writer.write(\".\");\n            writer.write(this.getEnumName(environmentName));\n        });\n    }\n\n    public getEnvironmentClassReference(): java.ClassReference {\n        return java.classReference({\n            name: this.getEnvironmentClassName(),\n            packageName: this.getCorePackageName()\n        });\n    }\n\n    public getJavaClassReferenceFromDeclaration({\n        declaration\n    }: {\n        declaration: FernIr.dynamic.Declaration;\n    }): java.ClassReference {\n        return java.classReference({\n            name: declaration.name.pascalCase.unsafeName,\n            packageName: this.getTypesPackageName(declaration.fernFilepath)\n        });\n    }\n\n    public getNullableClassReference(): java.ClassReference {\n        return java.classReference({\n            name: \"Nullable\",\n            packageName: this.getCorePackageName()\n        });\n    }\n\n    public getNullableOfNull(): java.TypeLiteral {\n        return java.TypeLiteral.reference(\n            java.invokeMethod({\n                on: this.getNullableClassReference(),\n                method: \"ofNull\",\n                arguments_: []\n            })\n        );\n    }\n\n    public getOptionalNullableClassReference(): java.ClassReference {\n        return java.classReference({\n            name: \"OptionalNullable\",\n            packageName: this.getCorePackageName()\n        });\n    }\n\n    public getOptionalNullableAbsent(): java.TypeLiteral {\n        return java.TypeLiteral.reference(\n            java.invokeMethod({\n                on: this.getOptionalNullableClassReference(),\n                method: \"absent\",\n                arguments_: []\n            })\n        );\n    }\n\n    public getOptionalNullableOf(value: java.TypeLiteral): java.TypeLiteral {\n        return java.TypeLiteral.reference(\n            java.invokeMethod({\n                on: this.getOptionalNullableClassReference(),\n                method: \"of\",\n                arguments_: [value]\n            })\n        );\n    }\n\n    public getFileStreamFromString(content: string): java.TypeLiteral {\n        return java.TypeLiteral.reference(\n            java.codeblock((writer) => {\n                writer.write(\"new \");\n                writer.writeNode(this.getFileStreamClassReference());\n                writer.write(\"(\");\n                writer.writeNode(this.getByteArrayInputStreamClassReference());\n                writer.write(\"(\");\n                writer.writeNode(java.TypeLiteral.string(content));\n                writer.write(\".getBytes(\");\n                writer.writeNode(this.getStandardCharsetsClassReference());\n                writer.write(\".UTF_8)))\");\n            })\n        );\n    }\n\n    public getFileStreamClassReference(): java.ClassReference {\n        return java.classReference({\n            name: \"FileStream\",\n            packageName: this.getCorePackageName()\n        });\n    }\n\n    public getByteArrayInputStreamClassReference(): java.ClassReference {\n        return java.classReference({\n            name: \"ByteArrayInputStream\",\n            packageName: \"java.io\"\n        });\n    }\n\n    public getStandardCharsetsClassReference(): java.ClassReference {\n        return java.classReference({\n            name: \"StandardCharsets\",\n            packageName: \"java.nio.charset\"\n        });\n    }\n\n    public isPrimitive(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"primitive\":\n                return true;\n            case \"optional\":\n            case \"nullable\":\n                return this.isPrimitive(typeReference.value);\n            case \"named\": {\n                const named = this.resolveNamedType({ typeId: typeReference.value });\n                if (named == null) {\n                    return false;\n                }\n                switch (named.type) {\n                    case \"alias\":\n                        return this.isPrimitive(named.typeReference);\n                    case \"discriminatedUnion\":\n                    case \"undiscriminatedUnion\":\n                    case \"object\":\n                    case \"enum\":\n                        return false;\n                    default:\n                        assertNever(named);\n                }\n                break;\n            }\n            case \"list\":\n            case \"set\":\n            case \"map\":\n            case \"literal\":\n            case \"unknown\":\n                return false;\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    public isDirectLiteral(typeReference: FernIr.dynamic.TypeReference): boolean {\n        return typeReference.type === \"literal\";\n    }\n\n    public sortTypeInstancesByRequiredFirst(\n        instances: Array<{\n            name: FernIr.dynamic.NameAndWireValue;\n            typeReference: FernIr.dynamic.TypeReference;\n            value: unknown;\n        }>,\n        parameters: FernIr.dynamic.NamedParameter[]\n    ): Array<{ name: FernIr.dynamic.NameAndWireValue; typeReference: FernIr.dynamic.TypeReference; value: unknown }> {\n        const indexMap = new Map<string, number>();\n        parameters.forEach((param, index) => {\n            indexMap.set(param.name.wireValue, index);\n        });\n\n        const required: Array<{\n            name: FernIr.dynamic.NameAndWireValue;\n            typeReference: FernIr.dynamic.TypeReference;\n            value: unknown;\n        }> = [];\n        const optional: Array<{\n            name: FernIr.dynamic.NameAndWireValue;\n            typeReference: FernIr.dynamic.TypeReference;\n            value: unknown;\n        }> = [];\n\n        for (const instance of instances) {\n            if (this.isOptional(instance.typeReference)) {\n                optional.push(instance);\n            } else {\n                required.push(instance);\n            }\n        }\n\n        required.sort((a, b) => (indexMap.get(a.name.wireValue) ?? 0) - (indexMap.get(b.name.wireValue) ?? 0));\n\n        return [...required, ...optional];\n    }\n\n    /**\n     * Override to preserve parameter order for Java staged builders.\n     *\n     * Java uses type-state staged builders where method call order is enforced at compile time.\n     * Unlike Python/TypeScript/Go which use keyword arguments or object literals (order-independent),\n     * Java requires fields to be set in the exact order they appear in the schema definition.\n     *\n     * This override calls the base implementation to preserve all error handling semantics,\n     * then reorders the results to match schema parameter order.\n     */\n    public override associateByWireValue({\n        parameters,\n        values,\n        ignoreMissingParameters\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n        ignoreMissingParameters?: boolean;\n    }): TypeInstance[] {\n        // Call base implementation to preserve all error handling semantics\n        const instances = super.associateByWireValue({ parameters, values, ignoreMissingParameters });\n\n        // Build a map of wire value -> TypeInstance for efficient lookup\n        const byWireValue = new Map<string, TypeInstance>();\n        for (const instance of instances) {\n            byWireValue.set(instance.name.wireValue, instance);\n        }\n\n        // Reorder instances to match schema parameter order\n        const ordered: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            const instance = byWireValue.get(parameter.name.wireValue);\n            if (instance != null) {\n                ordered.push(instance);\n            }\n        }\n\n        return ordered;\n    }\n\n    public getRootPackageName(): string {\n        const tokens = this.getPackagePrefixTokens();\n        return this.joinPackageTokens(tokens);\n    }\n\n    public getCorePackageName(): string {\n        const tokens = this.getPackagePrefixTokens();\n        tokens.push(\"core\");\n        return this.joinPackageTokens(tokens);\n    }\n\n    public getTypesPackageName(fernFilepath: FernIr.dynamic.FernFilepath): string {\n        return this.getResourcesPackage(fernFilepath, \"types\");\n    }\n\n    public getRequestsPackageName(fernFilepath: FernIr.dynamic.FernFilepath): string {\n        if (this.getPackageLayout() === \"flat\") {\n            return this.getTypesPackageName(fernFilepath);\n        }\n        return this.getResourcesPackage(fernFilepath, \"requests\");\n    }\n\n    protected getResourcesPackage(fernFilepath: FernIr.dynamic.FernFilepath, suffix?: string): string {\n        const tokens = this.getPackagePrefixTokens();\n        switch (this.getPackageLayout()) {\n            case \"flat\":\n                if (fernFilepath != null) {\n                    tokens.push(\n                        ...fernFilepath.packagePath.map((name: FernIr.dynamic.Name) => this.getPackageNameSegment(name))\n                    );\n                }\n                break;\n            case \"nested\":\n            default:\n                if (fernFilepath != null && fernFilepath.allParts.length > 0) {\n                    tokens.push(\"resources\");\n                }\n                if (fernFilepath != null) {\n                    tokens.push(\n                        ...fernFilepath.allParts.map((name: FernIr.dynamic.Name) => this.getPackageNameSegment(name))\n                    );\n                }\n        }\n        if (suffix != null) {\n            tokens.push(suffix);\n        }\n        return this.joinPackageTokens(tokens);\n    }\n\n    public getPackageName(fernFilepath: FernIr.dynamic.FernFilepath, suffix?: string): string {\n        let parts = this.getPackageNameSegments(fernFilepath);\n        parts = suffix != null ? [...parts, suffix] : parts;\n        return [...this.getPackagePrefixTokens(), ...parts].join(\".\");\n    }\n\n    public getPackageLayout(): string {\n        return this.customConfig?.[\"package-layout\"] ?? \"nested\";\n    }\n\n    public shouldInlinePathParameters(): boolean {\n        return this.customConfig?.[\"inline-path-parameters\"] ?? false;\n    }\n\n    public shouldInlineFileProperties(): boolean {\n        return this.customConfig?.[\"inline-file-properties\"] ?? false;\n    }\n\n    private getPackageNameSegments(fernFilepath: FernIr.dynamic.FernFilepath): string[] {\n        return fernFilepath.packagePath.map((segment: FernIr.dynamic.Name) => this.getPackageNameSegment(segment));\n    }\n\n    private getPackageNameSegment(name: FernIr.dynamic.Name): string {\n        return name.camelCase.safeName.toLowerCase();\n    }\n\n    private getPackagePrefixTokens(): string[] {\n        if (this.customConfig?.[\"package-prefix\"] != null) {\n            return this.customConfig[\"package-prefix\"].split(\".\");\n        }\n        const prefix: string[] = [];\n        prefix.push(\"com\");\n        prefix.push(...this.splitOnNonAlphaNumericChar(this.config.organization));\n        prefix.push(...this.splitOnNonAlphaNumericChar(this.getApiName()));\n        return prefix;\n    }\n\n    private getBaseNamePrefix(): string {\n        return (\n            this.convertKebabCaseToUpperCamelCase(this.config.organization) +\n            this.convertKebabCaseToUpperCamelCase(this.getApiName())\n        );\n    }\n\n    private getApiName(): string {\n        return camelCase(this.config.workspaceName);\n    }\n\n    private startsWithNumber(token: string): boolean {\n        return /^\\d/.test(token);\n    }\n\n    private splitOnNonAlphaNumericChar(value: string): string[] {\n        return value.split(/[^a-zA-Z0-9]/);\n    }\n\n    private convertKebabCaseToUpperCamelCase(kebab: string): string {\n        return kebab.replace(/-([a-z])/g, (_, char) => char.toUpperCase()).replace(/^[a-z]/, (c) => c.toUpperCase());\n    }\n\n    private joinPackageTokens(tokens: string[]): string {\n        const sanitizedTokens = tokens.map((token) => {\n            return this.startsWithNumber(token) ? \"_\" + token : token;\n        });\n        return sanitizedTokens.join(\".\");\n    }\n\n    private getName(name: string): string {\n        if (this.isReservedName(name)) {\n            return \"_\" + name;\n        }\n        return name;\n    }\n\n    private isReservedName(name: string): boolean {\n        return RESERVED_NAMES.has(name);\n    }\n\n    private isReservedMethodName(name: string): boolean {\n        return RESERVED_METHOD_NAMES.has(name);\n    }\n}\n","export { JavaFile } from \"./ast/core/JavaFile.js\";\nexport { Writer } from \"./ast/core/Writer.js\";\nexport { BaseJavaCustomConfigSchema } from \"./custom-config/BaseJavaCustomConfigSchema.js\";\nexport * as java from \"./java.js\";\n","import { Writer } from \"./Writer.js\";\n\nexport declare namespace JavaFile {\n    interface Args extends Writer.Args {}\n}\n\nexport class JavaFile extends Writer {\n    constructor({ packageName, customConfig, formatter }: JavaFile.Args) {\n        super({ packageName, customConfig, formatter });\n    }\n\n    public async toStringAsync(): Promise<string> {\n        const content = this.getContent();\n        if (this.formatter != null) {\n            try {\n                return this.formatter.format(content);\n            } catch (error) {\n                throw new Error(`Failed to format Java file: ${error}\\n${content}`);\n            }\n        }\n        return content;\n    }\n\n    public toString(): string {\n        const content = this.getContent();\n        if (this.formatter != null) {\n            try {\n                return this.formatter.formatSync(content);\n            } catch (error) {\n                throw new Error(`Failed to format Java file: ${error}\\n${content}`);\n            }\n        }\n        return content;\n    }\n\n    private getContent(): string {\n        const packageStatement = `package ${this.packageName};\\n\\n`;\n        const imports = this.stringifyImports();\n        return imports.length > 0\n            ? `${packageStatement}${imports}\n\n${this.buffer}`\n            : packageStatement + this.buffer;\n    }\n\n    private stringifyImports(): string {\n        return Array.from(this.imports)\n            .filter((packageName) => packageName !== this.packageName) // Skip the target package\n            .map((packageName) => `import ${packageName};`)\n            .sort()\n            .join(\"\\n\");\n    }\n}\n","import { AbstractFormatter, AbstractWriter, NopFormatter } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { BaseJavaCustomConfigSchema } from \"../../custom-config/BaseJavaCustomConfigSchema.js\";\n\ntype PackageName = string;\n\nexport declare namespace Writer {\n    interface Args {\n        /* The package name of the file */\n        packageName: string;\n        /* Custom generator config */\n        customConfig: BaseJavaCustomConfigSchema;\n        /* Formatter used to format Java source files */\n        formatter?: AbstractFormatter;\n    }\n}\n\nexport class Writer extends AbstractWriter {\n    /* The package name that is being written to */\n    public packageName: string;\n    /* Custom generator config */\n    public customConfig: BaseJavaCustomConfigSchema;\n    /* Formatter used to format Java source files */\n    public formatter: AbstractFormatter;\n\n    /* Import statements */\n    protected imports: Set<PackageName> = new Set();\n\n    constructor({ packageName, customConfig, formatter }: Writer.Args) {\n        super();\n        this.packageName = packageName;\n        this.customConfig = customConfig;\n        this.formatter = formatter ?? new NopFormatter();\n    }\n\n    /**\n     * Adds the given package name to the rolling set.\n     */\n    public addImport(packageName: string): void {\n        this.imports.add(packageName);\n    }\n\n    /**\n     * Gets the current set of imports.\n     */\n    public getImports(): Set<PackageName> {\n        return new Set(this.imports);\n    }\n}\n","import { z } from \"zod\";\nimport { CustomReadmeSectionSchema } from \"./CustomReadmeSectionSchema.js\";\n\nexport const BaseJavaCustomConfigSchema = z.object({\n    // Influences dynamic snippets.\n    \"base-api-exception-class-name\": z.string().optional(),\n    \"base-exception-class-name\": z.string().optional(),\n    \"client-class-name\": z.string().optional(),\n    \"inline-file-properties\": z.boolean().optional(),\n    \"inline-path-parameters\": z.boolean().optional(),\n    \"package-layout\": z.enum([\"flat\", \"nested\"]).optional(),\n    \"package-prefix\": z.string().optional(),\n    \"use-local-date-for-dates\": z.boolean().optional(),\n\n    // General options.\n    \"custom-dependencies\": z.array(z.string()).optional(),\n    \"custom-plugins\": z.array(z.string()).optional(),\n    \"disable-required-property-builder-checks\": z.boolean().optional(),\n    \"enable-forward-compatible-enums\": z.boolean().optional(),\n    \"enable-inline-types\": z.boolean().optional(),\n    \"enable-public-constructors\": z.boolean().optional(),\n    \"generate-unknown-as-json-node\": z.boolean().optional(),\n    \"json-include\": z.enum([\"non-absent\", \"non-empty\"]).optional(),\n    \"enable-extensible-builders\": z.boolean().optional(),\n    \"use-default-request-parameter-values\": z.boolean().optional(),\n    \"enable-wire-tests\": z.boolean().default(false),\n    \"collapse-optional-nullable\": z.boolean().optional(),\n    \"custom-readme-sections\": z.array(CustomReadmeSectionSchema).optional(),\n    \"custom-pager-name\": z.string().optional(),\n    \"default-timeout-in-seconds\": z.number().optional(),\n    \"gradle-distribution-url\": z.string().optional(),\n    \"gradle-plugin-management\": z.string().optional(),\n    \"gradle-central-dependency-management\": z.boolean().optional(),\n    \"output-directory\": z.enum([\"source-root\", \"project-root\"]).optional(),\n    \"custom-interceptors\": z.boolean().optional(),\n    \"omit-fern-headers\": z.boolean().optional(),\n\n    // Hidden options (for debugging).\n    \"enable-gradle-profiling\": z.boolean().optional(),\n\n    // Deprecated.\n    \"wrapped-aliases\": z.boolean().optional(),\n    maxRetries: z.number().int().min(0).optional()\n});\n\nexport type BaseJavaCustomConfigSchema = z.infer<typeof BaseJavaCustomConfigSchema>;\n","import * as z from \"./v3/external.js\";\nexport * from \"./v3/external.js\";\nexport { z };\nexport default z;\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n    overrideErrorMap = map;\n}\nexport function getErrorMap() {\n    return overrideErrorMap;\n}\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n    let message;\n    switch (issue.code) {\n        case ZodIssueCode.invalid_type:\n            if (issue.received === ZodParsedType.undefined) {\n                message = \"Required\";\n            }\n            else {\n                message = `Expected ${issue.expected}, received ${issue.received}`;\n            }\n            break;\n        case ZodIssueCode.invalid_literal:\n            message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n            break;\n        case ZodIssueCode.unrecognized_keys:\n            message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n            break;\n        case ZodIssueCode.invalid_union:\n            message = `Invalid input`;\n            break;\n        case ZodIssueCode.invalid_union_discriminator:\n            message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n            break;\n        case ZodIssueCode.invalid_enum_value:\n            message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n            break;\n        case ZodIssueCode.invalid_arguments:\n            message = `Invalid function arguments`;\n            break;\n        case ZodIssueCode.invalid_return_type:\n            message = `Invalid function return type`;\n            break;\n        case ZodIssueCode.invalid_date:\n            message = `Invalid date`;\n            break;\n        case ZodIssueCode.invalid_string:\n            if (typeof issue.validation === \"object\") {\n                if (\"includes\" in issue.validation) {\n                    message = `Invalid input: must include \"${issue.validation.includes}\"`;\n                    if (typeof issue.validation.position === \"number\") {\n                        message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n                    }\n                }\n                else if (\"startsWith\" in issue.validation) {\n                    message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n                }\n                else if (\"endsWith\" in issue.validation) {\n                    message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n                }\n                else {\n                    util.assertNever(issue.validation);\n                }\n            }\n            else if (issue.validation !== \"regex\") {\n                message = `Invalid ${issue.validation}`;\n            }\n            else {\n                message = \"Invalid\";\n            }\n            break;\n        case ZodIssueCode.too_small:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n            else if (issue.type === \"bigint\")\n                message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodIssueCode.too_big:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"bigint\")\n                message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodIssueCode.custom:\n            message = `Invalid input`;\n            break;\n        case ZodIssueCode.invalid_intersection_types:\n            message = `Intersection results could not be merged`;\n            break;\n        case ZodIssueCode.not_multiple_of:\n            message = `Number must be a multiple of ${issue.multipleOf}`;\n            break;\n        case ZodIssueCode.not_finite:\n            message = \"Number must be finite\";\n            break;\n        default:\n            message = _ctx.defaultError;\n            util.assertNever(issue);\n    }\n    return { message };\n};\nexport default errorMap;\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n    \"invalid_type\",\n    \"invalid_literal\",\n    \"custom\",\n    \"invalid_union\",\n    \"invalid_union_discriminator\",\n    \"invalid_enum_value\",\n    \"unrecognized_keys\",\n    \"invalid_arguments\",\n    \"invalid_return_type\",\n    \"invalid_date\",\n    \"invalid_string\",\n    \"too_small\",\n    \"too_big\",\n    \"invalid_intersection_types\",\n    \"not_multiple_of\",\n    \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n    const json = JSON.stringify(obj, null, 2);\n    return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n    get errors() {\n        return this.issues;\n    }\n    constructor(issues) {\n        super();\n        this.issues = [];\n        this.addIssue = (sub) => {\n            this.issues = [...this.issues, sub];\n        };\n        this.addIssues = (subs = []) => {\n            this.issues = [...this.issues, ...subs];\n        };\n        const actualProto = new.target.prototype;\n        if (Object.setPrototypeOf) {\n            // eslint-disable-next-line ban/ban\n            Object.setPrototypeOf(this, actualProto);\n        }\n        else {\n            this.__proto__ = actualProto;\n        }\n        this.name = \"ZodError\";\n        this.issues = issues;\n    }\n    format(_mapper) {\n        const mapper = _mapper ||\n            function (issue) {\n                return issue.message;\n            };\n        const fieldErrors = { _errors: [] };\n        const processError = (error) => {\n            for (const issue of error.issues) {\n                if (issue.code === \"invalid_union\") {\n                    issue.unionErrors.map(processError);\n                }\n                else if (issue.code === \"invalid_return_type\") {\n                    processError(issue.returnTypeError);\n                }\n                else if (issue.code === \"invalid_arguments\") {\n                    processError(issue.argumentsError);\n                }\n                else if (issue.path.length === 0) {\n                    fieldErrors._errors.push(mapper(issue));\n                }\n                else {\n                    let curr = fieldErrors;\n                    let i = 0;\n                    while (i < issue.path.length) {\n                        const el = issue.path[i];\n                        const terminal = i === issue.path.length - 1;\n                        if (!terminal) {\n                            curr[el] = curr[el] || { _errors: [] };\n                            // if (typeof el === \"string\") {\n                            //   curr[el] = curr[el] || { _errors: [] };\n                            // } else if (typeof el === \"number\") {\n                            //   const errorArray: any = [];\n                            //   errorArray._errors = [];\n                            //   curr[el] = curr[el] || errorArray;\n                            // }\n                        }\n                        else {\n                            curr[el] = curr[el] || { _errors: [] };\n                            curr[el]._errors.push(mapper(issue));\n                        }\n                        curr = curr[el];\n                        i++;\n                    }\n                }\n            }\n        };\n        processError(this);\n        return fieldErrors;\n    }\n    static assert(value) {\n        if (!(value instanceof ZodError)) {\n            throw new Error(`Not a ZodError: ${value}`);\n        }\n    }\n    toString() {\n        return this.message;\n    }\n    get message() {\n        return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n    }\n    get isEmpty() {\n        return this.issues.length === 0;\n    }\n    flatten(mapper = (issue) => issue.message) {\n        const fieldErrors = {};\n        const formErrors = [];\n        for (const sub of this.issues) {\n            if (sub.path.length > 0) {\n                const firstEl = sub.path[0];\n                fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n                fieldErrors[firstEl].push(mapper(sub));\n            }\n            else {\n                formErrors.push(mapper(sub));\n            }\n        }\n        return { formErrors, fieldErrors };\n    }\n    get formErrors() {\n        return this.flatten();\n    }\n}\nZodError.create = (issues) => {\n    const error = new ZodError(issues);\n    return error;\n};\n","export var util;\n(function (util) {\n    util.assertEqual = (_) => { };\n    function assertIs(_arg) { }\n    util.assertIs = assertIs;\n    function assertNever(_x) {\n        throw new Error();\n    }\n    util.assertNever = assertNever;\n    util.arrayToEnum = (items) => {\n        const obj = {};\n        for (const item of items) {\n            obj[item] = item;\n        }\n        return obj;\n    };\n    util.getValidEnumValues = (obj) => {\n        const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n        const filtered = {};\n        for (const k of validKeys) {\n            filtered[k] = obj[k];\n        }\n        return util.objectValues(filtered);\n    };\n    util.objectValues = (obj) => {\n        return util.objectKeys(obj).map(function (e) {\n            return obj[e];\n        });\n    };\n    util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n        ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n        : (object) => {\n            const keys = [];\n            for (const key in object) {\n                if (Object.prototype.hasOwnProperty.call(object, key)) {\n                    keys.push(key);\n                }\n            }\n            return keys;\n        };\n    util.find = (arr, checker) => {\n        for (const item of arr) {\n            if (checker(item))\n                return item;\n        }\n        return undefined;\n    };\n    util.isInteger = typeof Number.isInteger === \"function\"\n        ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n        : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n    function joinValues(array, separator = \" | \") {\n        return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n    }\n    util.joinValues = joinValues;\n    util.jsonStringifyReplacer = (_, value) => {\n        if (typeof value === \"bigint\") {\n            return value.toString();\n        }\n        return value;\n    };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n    objectUtil.mergeShapes = (first, second) => {\n        return {\n            ...first,\n            ...second, // second overwrites first\n        };\n    };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n    \"string\",\n    \"nan\",\n    \"number\",\n    \"integer\",\n    \"float\",\n    \"boolean\",\n    \"date\",\n    \"bigint\",\n    \"symbol\",\n    \"function\",\n    \"undefined\",\n    \"null\",\n    \"array\",\n    \"object\",\n    \"unknown\",\n    \"promise\",\n    \"void\",\n    \"never\",\n    \"map\",\n    \"set\",\n]);\nexport const getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"undefined\":\n            return ZodParsedType.undefined;\n        case \"string\":\n            return ZodParsedType.string;\n        case \"number\":\n            return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n        case \"boolean\":\n            return ZodParsedType.boolean;\n        case \"function\":\n            return ZodParsedType.function;\n        case \"bigint\":\n            return ZodParsedType.bigint;\n        case \"symbol\":\n            return ZodParsedType.symbol;\n        case \"object\":\n            if (Array.isArray(data)) {\n                return ZodParsedType.array;\n            }\n            if (data === null) {\n                return ZodParsedType.null;\n            }\n            if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n                return ZodParsedType.promise;\n            }\n            if (typeof Map !== \"undefined\" && data instanceof Map) {\n                return ZodParsedType.map;\n            }\n            if (typeof Set !== \"undefined\" && data instanceof Set) {\n                return ZodParsedType.set;\n            }\n            if (typeof Date !== \"undefined\" && data instanceof Date) {\n                return ZodParsedType.date;\n            }\n            return ZodParsedType.object;\n        default:\n            return ZodParsedType.unknown;\n    }\n};\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n    const { data, path, errorMaps, issueData } = params;\n    const fullPath = [...path, ...(issueData.path || [])];\n    const fullIssue = {\n        ...issueData,\n        path: fullPath,\n    };\n    if (issueData.message !== undefined) {\n        return {\n            ...issueData,\n            path: fullPath,\n            message: issueData.message,\n        };\n    }\n    let errorMessage = \"\";\n    const maps = errorMaps\n        .filter((m) => !!m)\n        .slice()\n        .reverse();\n    for (const map of maps) {\n        errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n    }\n    return {\n        ...issueData,\n        path: fullPath,\n        message: errorMessage,\n    };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n    const overrideMap = getErrorMap();\n    const issue = makeIssue({\n        issueData: issueData,\n        data: ctx.data,\n        path: ctx.path,\n        errorMaps: [\n            ctx.common.contextualErrorMap, // contextual error map is first priority\n            ctx.schemaErrorMap, // then schema-bound map if available\n            overrideMap, // then global override map\n            overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n        ].filter((x) => !!x),\n    });\n    ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n    constructor() {\n        this.value = \"valid\";\n    }\n    dirty() {\n        if (this.value === \"valid\")\n            this.value = \"dirty\";\n    }\n    abort() {\n        if (this.value !== \"aborted\")\n            this.value = \"aborted\";\n    }\n    static mergeArray(status, results) {\n        const arrayValue = [];\n        for (const s of results) {\n            if (s.status === \"aborted\")\n                return INVALID;\n            if (s.status === \"dirty\")\n                status.dirty();\n            arrayValue.push(s.value);\n        }\n        return { status: status.value, value: arrayValue };\n    }\n    static async mergeObjectAsync(status, pairs) {\n        const syncPairs = [];\n        for (const pair of pairs) {\n            const key = await pair.key;\n            const value = await pair.value;\n            syncPairs.push({\n                key,\n                value,\n            });\n        }\n        return ParseStatus.mergeObjectSync(status, syncPairs);\n    }\n    static mergeObjectSync(status, pairs) {\n        const finalObject = {};\n        for (const pair of pairs) {\n            const { key, value } = pair;\n            if (key.status === \"aborted\")\n                return INVALID;\n            if (value.status === \"aborted\")\n                return INVALID;\n            if (key.status === \"dirty\")\n                status.dirty();\n            if (value.status === \"dirty\")\n                status.dirty();\n            if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n                finalObject[key.value] = value.value;\n            }\n        }\n        return { status: status.value, value: finalObject };\n    }\n}\nexport const INVALID = Object.freeze({\n    status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n    constructor(parent, value, path, key) {\n        this._cachedPath = [];\n        this.parent = parent;\n        this.data = value;\n        this._path = path;\n        this._key = key;\n    }\n    get path() {\n        if (!this._cachedPath.length) {\n            if (Array.isArray(this._key)) {\n                this._cachedPath.push(...this._path, ...this._key);\n            }\n            else {\n                this._cachedPath.push(...this._path, this._key);\n            }\n        }\n        return this._cachedPath;\n    }\n}\nconst handleResult = (ctx, result) => {\n    if (isValid(result)) {\n        return { success: true, data: result.value };\n    }\n    else {\n        if (!ctx.common.issues.length) {\n            throw new Error(\"Validation failed but no issues detected.\");\n        }\n        return {\n            success: false,\n            get error() {\n                if (this._error)\n                    return this._error;\n                const error = new ZodError(ctx.common.issues);\n                this._error = error;\n                return this._error;\n            },\n        };\n    }\n};\nfunction processCreateParams(params) {\n    if (!params)\n        return {};\n    const { errorMap, invalid_type_error, required_error, description } = params;\n    if (errorMap && (invalid_type_error || required_error)) {\n        throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n    }\n    if (errorMap)\n        return { errorMap: errorMap, description };\n    const customMap = (iss, ctx) => {\n        const { message } = params;\n        if (iss.code === \"invalid_enum_value\") {\n            return { message: message ?? ctx.defaultError };\n        }\n        if (typeof ctx.data === \"undefined\") {\n            return { message: message ?? required_error ?? ctx.defaultError };\n        }\n        if (iss.code !== \"invalid_type\")\n            return { message: ctx.defaultError };\n        return { message: message ?? invalid_type_error ?? ctx.defaultError };\n    };\n    return { errorMap: customMap, description };\n}\nexport class ZodType {\n    get description() {\n        return this._def.description;\n    }\n    _getType(input) {\n        return getParsedType(input.data);\n    }\n    _getOrReturnCtx(input, ctx) {\n        return (ctx || {\n            common: input.parent.common,\n            data: input.data,\n            parsedType: getParsedType(input.data),\n            schemaErrorMap: this._def.errorMap,\n            path: input.path,\n            parent: input.parent,\n        });\n    }\n    _processInputParams(input) {\n        return {\n            status: new ParseStatus(),\n            ctx: {\n                common: input.parent.common,\n                data: input.data,\n                parsedType: getParsedType(input.data),\n                schemaErrorMap: this._def.errorMap,\n                path: input.path,\n                parent: input.parent,\n            },\n        };\n    }\n    _parseSync(input) {\n        const result = this._parse(input);\n        if (isAsync(result)) {\n            throw new Error(\"Synchronous parse encountered promise.\");\n        }\n        return result;\n    }\n    _parseAsync(input) {\n        const result = this._parse(input);\n        return Promise.resolve(result);\n    }\n    parse(data, params) {\n        const result = this.safeParse(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    safeParse(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                async: params?.async ?? false,\n                contextualErrorMap: params?.errorMap,\n            },\n            path: params?.path || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n        return handleResult(ctx, result);\n    }\n    \"~validate\"(data) {\n        const ctx = {\n            common: {\n                issues: [],\n                async: !!this[\"~standard\"].async,\n            },\n            path: [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        if (!this[\"~standard\"].async) {\n            try {\n                const result = this._parseSync({ data, path: [], parent: ctx });\n                return isValid(result)\n                    ? {\n                        value: result.value,\n                    }\n                    : {\n                        issues: ctx.common.issues,\n                    };\n            }\n            catch (err) {\n                if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n                    this[\"~standard\"].async = true;\n                }\n                ctx.common = {\n                    issues: [],\n                    async: true,\n                };\n            }\n        }\n        return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n            ? {\n                value: result.value,\n            }\n            : {\n                issues: ctx.common.issues,\n            });\n    }\n    async parseAsync(data, params) {\n        const result = await this.safeParseAsync(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    async safeParseAsync(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                contextualErrorMap: params?.errorMap,\n                async: true,\n            },\n            path: params?.path || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n        const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n        return handleResult(ctx, result);\n    }\n    refine(check, message) {\n        const getIssueProperties = (val) => {\n            if (typeof message === \"string\" || typeof message === \"undefined\") {\n                return { message };\n            }\n            else if (typeof message === \"function\") {\n                return message(val);\n            }\n            else {\n                return message;\n            }\n        };\n        return this._refinement((val, ctx) => {\n            const result = check(val);\n            const setError = () => ctx.addIssue({\n                code: ZodIssueCode.custom,\n                ...getIssueProperties(val),\n            });\n            if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n                return result.then((data) => {\n                    if (!data) {\n                        setError();\n                        return false;\n                    }\n                    else {\n                        return true;\n                    }\n                });\n            }\n            if (!result) {\n                setError();\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    refinement(check, refinementData) {\n        return this._refinement((val, ctx) => {\n            if (!check(val)) {\n                ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    _refinement(refinement) {\n        return new ZodEffects({\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"refinement\", refinement },\n        });\n    }\n    superRefine(refinement) {\n        return this._refinement(refinement);\n    }\n    constructor(def) {\n        /** Alias of safeParseAsync */\n        this.spa = this.safeParseAsync;\n        this._def = def;\n        this.parse = this.parse.bind(this);\n        this.safeParse = this.safeParse.bind(this);\n        this.parseAsync = this.parseAsync.bind(this);\n        this.safeParseAsync = this.safeParseAsync.bind(this);\n        this.spa = this.spa.bind(this);\n        this.refine = this.refine.bind(this);\n        this.refinement = this.refinement.bind(this);\n        this.superRefine = this.superRefine.bind(this);\n        this.optional = this.optional.bind(this);\n        this.nullable = this.nullable.bind(this);\n        this.nullish = this.nullish.bind(this);\n        this.array = this.array.bind(this);\n        this.promise = this.promise.bind(this);\n        this.or = this.or.bind(this);\n        this.and = this.and.bind(this);\n        this.transform = this.transform.bind(this);\n        this.brand = this.brand.bind(this);\n        this.default = this.default.bind(this);\n        this.catch = this.catch.bind(this);\n        this.describe = this.describe.bind(this);\n        this.pipe = this.pipe.bind(this);\n        this.readonly = this.readonly.bind(this);\n        this.isNullable = this.isNullable.bind(this);\n        this.isOptional = this.isOptional.bind(this);\n        this[\"~standard\"] = {\n            version: 1,\n            vendor: \"zod\",\n            validate: (data) => this[\"~validate\"](data),\n        };\n    }\n    optional() {\n        return ZodOptional.create(this, this._def);\n    }\n    nullable() {\n        return ZodNullable.create(this, this._def);\n    }\n    nullish() {\n        return this.nullable().optional();\n    }\n    array() {\n        return ZodArray.create(this);\n    }\n    promise() {\n        return ZodPromise.create(this, this._def);\n    }\n    or(option) {\n        return ZodUnion.create([this, option], this._def);\n    }\n    and(incoming) {\n        return ZodIntersection.create(this, incoming, this._def);\n    }\n    transform(transform) {\n        return new ZodEffects({\n            ...processCreateParams(this._def),\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"transform\", transform },\n        });\n    }\n    default(def) {\n        const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodDefault({\n            ...processCreateParams(this._def),\n            innerType: this,\n            defaultValue: defaultValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodDefault,\n        });\n    }\n    brand() {\n        return new ZodBranded({\n            typeName: ZodFirstPartyTypeKind.ZodBranded,\n            type: this,\n            ...processCreateParams(this._def),\n        });\n    }\n    catch(def) {\n        const catchValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodCatch({\n            ...processCreateParams(this._def),\n            innerType: this,\n            catchValue: catchValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodCatch,\n        });\n    }\n    describe(description) {\n        const This = this.constructor;\n        return new This({\n            ...this._def,\n            description,\n        });\n    }\n    pipe(target) {\n        return ZodPipeline.create(this, target);\n    }\n    readonly() {\n        return ZodReadonly.create(this);\n    }\n    isOptional() {\n        return this.safeParse(undefined).success;\n    }\n    isNullable() {\n        return this.safeParse(null).success;\n    }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n//   /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n//   /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n//   /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n//   /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n//   /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n    let secondsRegexSource = `[0-5]\\\\d`;\n    if (args.precision) {\n        secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n    }\n    else if (args.precision == null) {\n        secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n    }\n    const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n    return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n    return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n    let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n    const opts = [];\n    opts.push(args.local ? `Z?` : `Z`);\n    if (args.offset)\n        opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n    regex = `${regex}(${opts.join(\"|\")})`;\n    return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nfunction isValidJWT(jwt, alg) {\n    if (!jwtRegex.test(jwt))\n        return false;\n    try {\n        const [header] = jwt.split(\".\");\n        if (!header)\n            return false;\n        // Convert base64url to base64\n        const base64 = header\n            .replace(/-/g, \"+\")\n            .replace(/_/g, \"/\")\n            .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n        const decoded = JSON.parse(atob(base64));\n        if (typeof decoded !== \"object\" || decoded === null)\n            return false;\n        if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n            return false;\n        if (!decoded.alg)\n            return false;\n        if (alg && decoded.alg !== alg)\n            return false;\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nfunction isValidCidr(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nexport class ZodString extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = String(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.string) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.string,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const status = new ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.length < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.length > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"length\") {\n                const tooBig = input.data.length > check.value;\n                const tooSmall = input.data.length < check.value;\n                if (tooBig || tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    if (tooBig) {\n                        addIssueToContext(ctx, {\n                            code: ZodIssueCode.too_big,\n                            maximum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    else if (tooSmall) {\n                        addIssueToContext(ctx, {\n                            code: ZodIssueCode.too_small,\n                            minimum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"email\") {\n                if (!emailRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"email\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"emoji\") {\n                if (!emojiRegex) {\n                    emojiRegex = new RegExp(_emojiRegex, \"u\");\n                }\n                if (!emojiRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"emoji\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"uuid\") {\n                if (!uuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"uuid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"nanoid\") {\n                if (!nanoidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"nanoid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid\") {\n                if (!cuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cuid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid2\") {\n                if (!cuid2Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cuid2\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ulid\") {\n                if (!ulidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"ulid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"url\") {\n                try {\n                    new URL(input.data);\n                }\n                catch {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"url\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"regex\") {\n                check.regex.lastIndex = 0;\n                const testResult = check.regex.test(input.data);\n                if (!testResult) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"regex\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"trim\") {\n                input.data = input.data.trim();\n            }\n            else if (check.kind === \"includes\") {\n                if (!input.data.includes(check.value, check.position)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { includes: check.value, position: check.position },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"toLowerCase\") {\n                input.data = input.data.toLowerCase();\n            }\n            else if (check.kind === \"toUpperCase\") {\n                input.data = input.data.toUpperCase();\n            }\n            else if (check.kind === \"startsWith\") {\n                if (!input.data.startsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { startsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"endsWith\") {\n                if (!input.data.endsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { endsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"datetime\") {\n                const regex = datetimeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"datetime\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"date\") {\n                const regex = dateRegex;\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"date\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"time\") {\n                const regex = timeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"time\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"duration\") {\n                if (!durationRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"duration\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ip\") {\n                if (!isValidIP(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"ip\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"jwt\") {\n                if (!isValidJWT(input.data, check.alg)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"jwt\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cidr\") {\n                if (!isValidCidr(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cidr\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64\") {\n                if (!base64Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"base64\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64url\") {\n                if (!base64urlRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"base64url\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _regex(regex, validation, message) {\n        return this.refinement((data) => regex.test(data), {\n            validation,\n            code: ZodIssueCode.invalid_string,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    _addCheck(check) {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    email(message) {\n        return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n    }\n    url(message) {\n        return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n    }\n    emoji(message) {\n        return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n    }\n    uuid(message) {\n        return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n    }\n    nanoid(message) {\n        return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n    }\n    cuid(message) {\n        return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n    }\n    cuid2(message) {\n        return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n    }\n    ulid(message) {\n        return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n    }\n    base64(message) {\n        return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n    }\n    base64url(message) {\n        // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n        return this._addCheck({\n            kind: \"base64url\",\n            ...errorUtil.errToObj(message),\n        });\n    }\n    jwt(options) {\n        return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n    }\n    ip(options) {\n        return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n    }\n    cidr(options) {\n        return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n    }\n    datetime(options) {\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"datetime\",\n                precision: null,\n                offset: false,\n                local: false,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"datetime\",\n            precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n            offset: options?.offset ?? false,\n            local: options?.local ?? false,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    date(message) {\n        return this._addCheck({ kind: \"date\", message });\n    }\n    time(options) {\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"time\",\n                precision: null,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"time\",\n            precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    duration(message) {\n        return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n    }\n    regex(regex, message) {\n        return this._addCheck({\n            kind: \"regex\",\n            regex: regex,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    includes(value, options) {\n        return this._addCheck({\n            kind: \"includes\",\n            value: value,\n            position: options?.position,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    startsWith(value, message) {\n        return this._addCheck({\n            kind: \"startsWith\",\n            value: value,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    endsWith(value, message) {\n        return this._addCheck({\n            kind: \"endsWith\",\n            value: value,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    min(minLength, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minLength,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    max(maxLength, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxLength,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    length(len, message) {\n        return this._addCheck({\n            kind: \"length\",\n            value: len,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    /**\n     * Equivalent to `.min(1)`\n     */\n    nonempty(message) {\n        return this.min(1, errorUtil.errToObj(message));\n    }\n    trim() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"trim\" }],\n        });\n    }\n    toLowerCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n        });\n    }\n    toUpperCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n        });\n    }\n    get isDatetime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n    }\n    get isDate() {\n        return !!this._def.checks.find((ch) => ch.kind === \"date\");\n    }\n    get isTime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"time\");\n    }\n    get isDuration() {\n        return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n    }\n    get isEmail() {\n        return !!this._def.checks.find((ch) => ch.kind === \"email\");\n    }\n    get isURL() {\n        return !!this._def.checks.find((ch) => ch.kind === \"url\");\n    }\n    get isEmoji() {\n        return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n    }\n    get isUUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n    }\n    get isNANOID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n    }\n    get isCUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n    }\n    get isCUID2() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n    }\n    get isULID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n    }\n    get isIP() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n    }\n    get isCIDR() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n    }\n    get isBase64() {\n        return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n    }\n    get isBase64url() {\n        // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n        return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n    }\n    get minLength() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxLength() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nZodString.create = (params) => {\n    return new ZodString({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodString,\n        coerce: params?.coerce ?? false,\n        ...processCreateParams(params),\n    });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n    const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n    const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n    const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n    const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n    const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n    return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n        this.step = this.multipleOf;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Number(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.number) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.number,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        let ctx = undefined;\n        const status = new ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"int\") {\n                if (!util.isInteger(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_type,\n                        expected: \"integer\",\n                        received: \"float\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"min\") {\n                const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (floatSafeRemainder(input.data, check.value) !== 0) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"finite\") {\n                if (!Number.isFinite(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_finite,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    int(message) {\n        return this._addCheck({\n            kind: \"int\",\n            message: errorUtil.toString(message),\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value: value,\n            message: errorUtil.toString(message),\n        });\n    }\n    finite(message) {\n        return this._addCheck({\n            kind: \"finite\",\n            message: errorUtil.toString(message),\n        });\n    }\n    safe(message) {\n        return this._addCheck({\n            kind: \"min\",\n            inclusive: true,\n            value: Number.MIN_SAFE_INTEGER,\n            message: errorUtil.toString(message),\n        })._addCheck({\n            kind: \"max\",\n            inclusive: true,\n            value: Number.MAX_SAFE_INTEGER,\n            message: errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n    get isInt() {\n        return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n    }\n    get isFinite() {\n        let max = null;\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n                return true;\n            }\n            else if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n            else if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return Number.isFinite(min) && Number.isFinite(max);\n    }\n}\nZodNumber.create = (params) => {\n    return new ZodNumber({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodNumber,\n        coerce: params?.coerce || false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodBigInt extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            try {\n                input.data = BigInt(input.data);\n            }\n            catch {\n                return this._getInvalidInput(input);\n            }\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.bigint) {\n            return this._getInvalidInput(input);\n        }\n        let ctx = undefined;\n        const status = new ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        type: \"bigint\",\n                        minimum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        type: \"bigint\",\n                        maximum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (input.data % check.value !== BigInt(0)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _getInvalidInput(input) {\n        const ctx = this._getOrReturnCtx(input);\n        addIssueToContext(ctx, {\n            code: ZodIssueCode.invalid_type,\n            expected: ZodParsedType.bigint,\n            received: ctx.parsedType,\n        });\n        return INVALID;\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value,\n            message: errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nZodBigInt.create = (params) => {\n    return new ZodBigInt({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodBigInt,\n        coerce: params?.coerce ?? false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodBoolean extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Boolean(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.boolean) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.boolean,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodBoolean.create = (params) => {\n    return new ZodBoolean({\n        typeName: ZodFirstPartyTypeKind.ZodBoolean,\n        coerce: params?.coerce || false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodDate extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = new Date(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.date) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.date,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (Number.isNaN(input.data.getTime())) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_date,\n            });\n            return INVALID;\n        }\n        const status = new ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.getTime() < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        minimum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.getTime() > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        maximum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return {\n            status: status.value,\n            value: new Date(input.data.getTime()),\n        };\n    }\n    _addCheck(check) {\n        return new ZodDate({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    min(minDate, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minDate.getTime(),\n            message: errorUtil.toString(message),\n        });\n    }\n    max(maxDate, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxDate.getTime(),\n            message: errorUtil.toString(message),\n        });\n    }\n    get minDate() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min != null ? new Date(min) : null;\n    }\n    get maxDate() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max != null ? new Date(max) : null;\n    }\n}\nZodDate.create = (params) => {\n    return new ZodDate({\n        checks: [],\n        coerce: params?.coerce || false,\n        typeName: ZodFirstPartyTypeKind.ZodDate,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodSymbol extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.symbol) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.symbol,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodSymbol.create = (params) => {\n    return new ZodSymbol({\n        typeName: ZodFirstPartyTypeKind.ZodSymbol,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUndefined extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.undefined,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodUndefined.create = (params) => {\n    return new ZodUndefined({\n        typeName: ZodFirstPartyTypeKind.ZodUndefined,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNull extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.null) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.null,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodNull.create = (params) => {\n    return new ZodNull({\n        typeName: ZodFirstPartyTypeKind.ZodNull,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodAny extends ZodType {\n    constructor() {\n        super(...arguments);\n        // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n        this._any = true;\n    }\n    _parse(input) {\n        return OK(input.data);\n    }\n}\nZodAny.create = (params) => {\n    return new ZodAny({\n        typeName: ZodFirstPartyTypeKind.ZodAny,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUnknown extends ZodType {\n    constructor() {\n        super(...arguments);\n        // required\n        this._unknown = true;\n    }\n    _parse(input) {\n        return OK(input.data);\n    }\n}\nZodUnknown.create = (params) => {\n    return new ZodUnknown({\n        typeName: ZodFirstPartyTypeKind.ZodUnknown,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNever extends ZodType {\n    _parse(input) {\n        const ctx = this._getOrReturnCtx(input);\n        addIssueToContext(ctx, {\n            code: ZodIssueCode.invalid_type,\n            expected: ZodParsedType.never,\n            received: ctx.parsedType,\n        });\n        return INVALID;\n    }\n}\nZodNever.create = (params) => {\n    return new ZodNever({\n        typeName: ZodFirstPartyTypeKind.ZodNever,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodVoid extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.void,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodVoid.create = (params) => {\n    return new ZodVoid({\n        typeName: ZodFirstPartyTypeKind.ZodVoid,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodArray extends ZodType {\n    _parse(input) {\n        const { ctx, status } = this._processInputParams(input);\n        const def = this._def;\n        if (ctx.parsedType !== ZodParsedType.array) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (def.exactLength !== null) {\n            const tooBig = ctx.data.length > def.exactLength.value;\n            const tooSmall = ctx.data.length < def.exactLength.value;\n            if (tooBig || tooSmall) {\n                addIssueToContext(ctx, {\n                    code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n                    minimum: (tooSmall ? def.exactLength.value : undefined),\n                    maximum: (tooBig ? def.exactLength.value : undefined),\n                    type: \"array\",\n                    inclusive: true,\n                    exact: true,\n                    message: def.exactLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.minLength !== null) {\n            if (ctx.data.length < def.minLength.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_small,\n                    minimum: def.minLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxLength !== null) {\n            if (ctx.data.length > def.maxLength.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_big,\n                    maximum: def.maxLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.all([...ctx.data].map((item, i) => {\n                return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n            })).then((result) => {\n                return ParseStatus.mergeArray(status, result);\n            });\n        }\n        const result = [...ctx.data].map((item, i) => {\n            return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n        });\n        return ParseStatus.mergeArray(status, result);\n    }\n    get element() {\n        return this._def.type;\n    }\n    min(minLength, message) {\n        return new ZodArray({\n            ...this._def,\n            minLength: { value: minLength, message: errorUtil.toString(message) },\n        });\n    }\n    max(maxLength, message) {\n        return new ZodArray({\n            ...this._def,\n            maxLength: { value: maxLength, message: errorUtil.toString(message) },\n        });\n    }\n    length(len, message) {\n        return new ZodArray({\n            ...this._def,\n            exactLength: { value: len, message: errorUtil.toString(message) },\n        });\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nZodArray.create = (schema, params) => {\n    return new ZodArray({\n        type: schema,\n        minLength: null,\n        maxLength: null,\n        exactLength: null,\n        typeName: ZodFirstPartyTypeKind.ZodArray,\n        ...processCreateParams(params),\n    });\n};\nfunction deepPartialify(schema) {\n    if (schema instanceof ZodObject) {\n        const newShape = {};\n        for (const key in schema.shape) {\n            const fieldSchema = schema.shape[key];\n            newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n        }\n        return new ZodObject({\n            ...schema._def,\n            shape: () => newShape,\n        });\n    }\n    else if (schema instanceof ZodArray) {\n        return new ZodArray({\n            ...schema._def,\n            type: deepPartialify(schema.element),\n        });\n    }\n    else if (schema instanceof ZodOptional) {\n        return ZodOptional.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodNullable) {\n        return ZodNullable.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodTuple) {\n        return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n    }\n    else {\n        return schema;\n    }\n}\nexport class ZodObject extends ZodType {\n    constructor() {\n        super(...arguments);\n        this._cached = null;\n        /**\n         * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n         * If you want to pass through unknown properties, use `.passthrough()` instead.\n         */\n        this.nonstrict = this.passthrough;\n        // extend<\n        //   Augmentation extends ZodRawShape,\n        //   NewOutput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_output\"]\n        //       : k extends keyof Output\n        //       ? Output[k]\n        //       : never;\n        //   }>,\n        //   NewInput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_input\"]\n        //       : k extends keyof Input\n        //       ? Input[k]\n        //       : never;\n        //   }>\n        // >(\n        //   augmentation: Augmentation\n        // ): ZodObject<\n        //   extendShape<T, Augmentation>,\n        //   UnknownKeys,\n        //   Catchall,\n        //   NewOutput,\n        //   NewInput\n        // > {\n        //   return new ZodObject({\n        //     ...this._def,\n        //     shape: () => ({\n        //       ...this._def.shape(),\n        //       ...augmentation,\n        //     }),\n        //   }) as any;\n        // }\n        /**\n         * @deprecated Use `.extend` instead\n         *  */\n        this.augment = this.extend;\n    }\n    _getCached() {\n        if (this._cached !== null)\n            return this._cached;\n        const shape = this._def.shape();\n        const keys = util.objectKeys(shape);\n        this._cached = { shape, keys };\n        return this._cached;\n    }\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.object) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const { status, ctx } = this._processInputParams(input);\n        const { shape, keys: shapeKeys } = this._getCached();\n        const extraKeys = [];\n        if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n            for (const key in ctx.data) {\n                if (!shapeKeys.includes(key)) {\n                    extraKeys.push(key);\n                }\n            }\n        }\n        const pairs = [];\n        for (const key of shapeKeys) {\n            const keyValidator = shape[key];\n            const value = ctx.data[key];\n            pairs.push({\n                key: { status: \"valid\", value: key },\n                value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (this._def.catchall instanceof ZodNever) {\n            const unknownKeys = this._def.unknownKeys;\n            if (unknownKeys === \"passthrough\") {\n                for (const key of extraKeys) {\n                    pairs.push({\n                        key: { status: \"valid\", value: key },\n                        value: { status: \"valid\", value: ctx.data[key] },\n                    });\n                }\n            }\n            else if (unknownKeys === \"strict\") {\n                if (extraKeys.length > 0) {\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.unrecognized_keys,\n                        keys: extraKeys,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (unknownKeys === \"strip\") {\n            }\n            else {\n                throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n            }\n        }\n        else {\n            // run catchall validation\n            const catchall = this._def.catchall;\n            for (const key of extraKeys) {\n                const value = ctx.data[key];\n                pairs.push({\n                    key: { status: \"valid\", value: key },\n                    value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n                    ),\n                    alwaysSet: key in ctx.data,\n                });\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.resolve()\n                .then(async () => {\n                const syncPairs = [];\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    syncPairs.push({\n                        key,\n                        value,\n                        alwaysSet: pair.alwaysSet,\n                    });\n                }\n                return syncPairs;\n            })\n                .then((syncPairs) => {\n                return ParseStatus.mergeObjectSync(status, syncPairs);\n            });\n        }\n        else {\n            return ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get shape() {\n        return this._def.shape();\n    }\n    strict(message) {\n        errorUtil.errToObj;\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strict\",\n            ...(message !== undefined\n                ? {\n                    errorMap: (issue, ctx) => {\n                        const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n                        if (issue.code === \"unrecognized_keys\")\n                            return {\n                                message: errorUtil.errToObj(message).message ?? defaultError,\n                            };\n                        return {\n                            message: defaultError,\n                        };\n                    },\n                }\n                : {}),\n        });\n    }\n    strip() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strip\",\n        });\n    }\n    passthrough() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"passthrough\",\n        });\n    }\n    // const AugmentFactory =\n    //   <Def extends ZodObjectDef>(def: Def) =>\n    //   <Augmentation extends ZodRawShape>(\n    //     augmentation: Augmentation\n    //   ): ZodObject<\n    //     extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n    //     Def[\"unknownKeys\"],\n    //     Def[\"catchall\"]\n    //   > => {\n    //     return new ZodObject({\n    //       ...def,\n    //       shape: () => ({\n    //         ...def.shape(),\n    //         ...augmentation,\n    //       }),\n    //     }) as any;\n    //   };\n    extend(augmentation) {\n        return new ZodObject({\n            ...this._def,\n            shape: () => ({\n                ...this._def.shape(),\n                ...augmentation,\n            }),\n        });\n    }\n    /**\n     * Prior to zod@1.0.12 there was a bug in the\n     * inferred type of merged objects. Please\n     * upgrade if you are experiencing issues.\n     */\n    merge(merging) {\n        const merged = new ZodObject({\n            unknownKeys: merging._def.unknownKeys,\n            catchall: merging._def.catchall,\n            shape: () => ({\n                ...this._def.shape(),\n                ...merging._def.shape(),\n            }),\n            typeName: ZodFirstPartyTypeKind.ZodObject,\n        });\n        return merged;\n    }\n    // merge<\n    //   Incoming extends AnyZodObject,\n    //   Augmentation extends Incoming[\"shape\"],\n    //   NewOutput extends {\n    //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_output\"]\n    //       : k extends keyof Output\n    //       ? Output[k]\n    //       : never;\n    //   },\n    //   NewInput extends {\n    //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_input\"]\n    //       : k extends keyof Input\n    //       ? Input[k]\n    //       : never;\n    //   }\n    // >(\n    //   merging: Incoming\n    // ): ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"],\n    //   NewOutput,\n    //   NewInput\n    // > {\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    setKey(key, schema) {\n        return this.augment({ [key]: schema });\n    }\n    // merge<Incoming extends AnyZodObject>(\n    //   merging: Incoming\n    // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n    // ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"]\n    // > {\n    //   // const mergedShape = objectUtil.mergeShapes(\n    //   //   this._def.shape(),\n    //   //   merging._def.shape()\n    //   // );\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    catchall(index) {\n        return new ZodObject({\n            ...this._def,\n            catchall: index,\n        });\n    }\n    pick(mask) {\n        const shape = {};\n        for (const key of util.objectKeys(mask)) {\n            if (mask[key] && this.shape[key]) {\n                shape[key] = this.shape[key];\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    omit(mask) {\n        const shape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            if (!mask[key]) {\n                shape[key] = this.shape[key];\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    /**\n     * @deprecated\n     */\n    deepPartial() {\n        return deepPartialify(this);\n    }\n    partial(mask) {\n        const newShape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            const fieldSchema = this.shape[key];\n            if (mask && !mask[key]) {\n                newShape[key] = fieldSchema;\n            }\n            else {\n                newShape[key] = fieldSchema.optional();\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    required(mask) {\n        const newShape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            if (mask && !mask[key]) {\n                newShape[key] = this.shape[key];\n            }\n            else {\n                const fieldSchema = this.shape[key];\n                let newField = fieldSchema;\n                while (newField instanceof ZodOptional) {\n                    newField = newField._def.innerType;\n                }\n                newShape[key] = newField;\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    keyof() {\n        return createZodEnum(util.objectKeys(this.shape));\n    }\n}\nZodObject.create = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.strictCreate = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strict\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.lazycreate = (shape, params) => {\n    return new ZodObject({\n        shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const options = this._def.options;\n        function handleResults(results) {\n            // return first issue-free validation if it exists\n            for (const result of results) {\n                if (result.result.status === \"valid\") {\n                    return result.result;\n                }\n            }\n            for (const result of results) {\n                if (result.result.status === \"dirty\") {\n                    // add issues from dirty option\n                    ctx.common.issues.push(...result.ctx.common.issues);\n                    return result.result;\n                }\n            }\n            // return invalid\n            const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return INVALID;\n        }\n        if (ctx.common.async) {\n            return Promise.all(options.map(async (option) => {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                return {\n                    result: await option._parseAsync({\n                        data: ctx.data,\n                        path: ctx.path,\n                        parent: childCtx,\n                    }),\n                    ctx: childCtx,\n                };\n            })).then(handleResults);\n        }\n        else {\n            let dirty = undefined;\n            const issues = [];\n            for (const option of options) {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                const result = option._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: childCtx,\n                });\n                if (result.status === \"valid\") {\n                    return result;\n                }\n                else if (result.status === \"dirty\" && !dirty) {\n                    dirty = { result, ctx: childCtx };\n                }\n                if (childCtx.common.issues.length) {\n                    issues.push(childCtx.common.issues);\n                }\n            }\n            if (dirty) {\n                ctx.common.issues.push(...dirty.ctx.common.issues);\n                return dirty.result;\n            }\n            const unionErrors = issues.map((issues) => new ZodError(issues));\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return INVALID;\n        }\n    }\n    get options() {\n        return this._def.options;\n    }\n}\nZodUnion.create = (types, params) => {\n    return new ZodUnion({\n        options: types,\n        typeName: ZodFirstPartyTypeKind.ZodUnion,\n        ...processCreateParams(params),\n    });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n//////////                                 //////////\n//////////      ZodDiscriminatedUnion      //////////\n//////////                                 //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n    if (type instanceof ZodLazy) {\n        return getDiscriminator(type.schema);\n    }\n    else if (type instanceof ZodEffects) {\n        return getDiscriminator(type.innerType());\n    }\n    else if (type instanceof ZodLiteral) {\n        return [type.value];\n    }\n    else if (type instanceof ZodEnum) {\n        return type.options;\n    }\n    else if (type instanceof ZodNativeEnum) {\n        // eslint-disable-next-line ban/ban\n        return util.objectValues(type.enum);\n    }\n    else if (type instanceof ZodDefault) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else if (type instanceof ZodUndefined) {\n        return [undefined];\n    }\n    else if (type instanceof ZodNull) {\n        return [null];\n    }\n    else if (type instanceof ZodOptional) {\n        return [undefined, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodNullable) {\n        return [null, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodBranded) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodReadonly) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodCatch) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else {\n        return [];\n    }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.object) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const discriminator = this.discriminator;\n        const discriminatorValue = ctx.data[discriminator];\n        const option = this.optionsMap.get(discriminatorValue);\n        if (!option) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union_discriminator,\n                options: Array.from(this.optionsMap.keys()),\n                path: [discriminator],\n            });\n            return INVALID;\n        }\n        if (ctx.common.async) {\n            return option._parseAsync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n        else {\n            return option._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n    }\n    get discriminator() {\n        return this._def.discriminator;\n    }\n    get options() {\n        return this._def.options;\n    }\n    get optionsMap() {\n        return this._def.optionsMap;\n    }\n    /**\n     * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n     * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n     * have a different value for each object in the union.\n     * @param discriminator the name of the discriminator property\n     * @param types an array of object schemas\n     * @param params\n     */\n    static create(discriminator, options, params) {\n        // Get all the valid discriminator values\n        const optionsMap = new Map();\n        // try {\n        for (const type of options) {\n            const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n            if (!discriminatorValues.length) {\n                throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n            }\n            for (const value of discriminatorValues) {\n                if (optionsMap.has(value)) {\n                    throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n                }\n                optionsMap.set(value, type);\n            }\n        }\n        return new ZodDiscriminatedUnion({\n            typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n            discriminator,\n            options,\n            optionsMap,\n            ...processCreateParams(params),\n        });\n    }\n}\nfunction mergeValues(a, b) {\n    const aType = getParsedType(a);\n    const bType = getParsedType(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n        const bKeys = util.objectKeys(b);\n        const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        for (const key of sharedKeys) {\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n        if (a.length !== b.length) {\n            return { valid: false };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n        return { valid: true, data: a };\n    }\n    else {\n        return { valid: false };\n    }\n}\nexport class ZodIntersection extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const handleParsed = (parsedLeft, parsedRight) => {\n            if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n                return INVALID;\n            }\n            const merged = mergeValues(parsedLeft.value, parsedRight.value);\n            if (!merged.valid) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.invalid_intersection_types,\n                });\n                return INVALID;\n            }\n            if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n                status.dirty();\n            }\n            return { status: status.value, value: merged.data };\n        };\n        if (ctx.common.async) {\n            return Promise.all([\n                this._def.left._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n                this._def.right._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n            ]).then(([left, right]) => handleParsed(left, right));\n        }\n        else {\n            return handleParsed(this._def.left._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }), this._def.right._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }));\n        }\n    }\n}\nZodIntersection.create = (left, right, params) => {\n    return new ZodIntersection({\n        left: left,\n        right: right,\n        typeName: ZodFirstPartyTypeKind.ZodIntersection,\n        ...processCreateParams(params),\n    });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.array) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (ctx.data.length < this._def.items.length) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.too_small,\n                minimum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            return INVALID;\n        }\n        const rest = this._def.rest;\n        if (!rest && ctx.data.length > this._def.items.length) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.too_big,\n                maximum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            status.dirty();\n        }\n        const items = [...ctx.data]\n            .map((item, itemIndex) => {\n            const schema = this._def.items[itemIndex] || this._def.rest;\n            if (!schema)\n                return null;\n            return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n        })\n            .filter((x) => !!x); // filter nulls\n        if (ctx.common.async) {\n            return Promise.all(items).then((results) => {\n                return ParseStatus.mergeArray(status, results);\n            });\n        }\n        else {\n            return ParseStatus.mergeArray(status, items);\n        }\n    }\n    get items() {\n        return this._def.items;\n    }\n    rest(rest) {\n        return new ZodTuple({\n            ...this._def,\n            rest,\n        });\n    }\n}\nZodTuple.create = (schemas, params) => {\n    if (!Array.isArray(schemas)) {\n        throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n    }\n    return new ZodTuple({\n        items: schemas,\n        typeName: ZodFirstPartyTypeKind.ZodTuple,\n        rest: null,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodRecord extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.object) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const pairs = [];\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        for (const key in ctx.data) {\n            pairs.push({\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n                value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (ctx.common.async) {\n            return ParseStatus.mergeObjectAsync(status, pairs);\n        }\n        else {\n            return ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get element() {\n        return this._def.valueType;\n    }\n    static create(first, second, third) {\n        if (second instanceof ZodType) {\n            return new ZodRecord({\n                keyType: first,\n                valueType: second,\n                typeName: ZodFirstPartyTypeKind.ZodRecord,\n                ...processCreateParams(third),\n            });\n        }\n        return new ZodRecord({\n            keyType: ZodString.create(),\n            valueType: first,\n            typeName: ZodFirstPartyTypeKind.ZodRecord,\n            ...processCreateParams(second),\n        });\n    }\n}\nexport class ZodMap extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.map) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.map,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n            return {\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n                value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n            };\n        });\n        if (ctx.common.async) {\n            const finalMap = new Map();\n            return Promise.resolve().then(async () => {\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    if (key.status === \"aborted\" || value.status === \"aborted\") {\n                        return INVALID;\n                    }\n                    if (key.status === \"dirty\" || value.status === \"dirty\") {\n                        status.dirty();\n                    }\n                    finalMap.set(key.value, value.value);\n                }\n                return { status: status.value, value: finalMap };\n            });\n        }\n        else {\n            const finalMap = new Map();\n            for (const pair of pairs) {\n                const key = pair.key;\n                const value = pair.value;\n                if (key.status === \"aborted\" || value.status === \"aborted\") {\n                    return INVALID;\n                }\n                if (key.status === \"dirty\" || value.status === \"dirty\") {\n                    status.dirty();\n                }\n                finalMap.set(key.value, value.value);\n            }\n            return { status: status.value, value: finalMap };\n        }\n    }\n}\nZodMap.create = (keyType, valueType, params) => {\n    return new ZodMap({\n        valueType,\n        keyType,\n        typeName: ZodFirstPartyTypeKind.ZodMap,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodSet extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.set) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.set,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const def = this._def;\n        if (def.minSize !== null) {\n            if (ctx.data.size < def.minSize.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_small,\n                    minimum: def.minSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minSize.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxSize !== null) {\n            if (ctx.data.size > def.maxSize.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_big,\n                    maximum: def.maxSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxSize.message,\n                });\n                status.dirty();\n            }\n        }\n        const valueType = this._def.valueType;\n        function finalizeSet(elements) {\n            const parsedSet = new Set();\n            for (const element of elements) {\n                if (element.status === \"aborted\")\n                    return INVALID;\n                if (element.status === \"dirty\")\n                    status.dirty();\n                parsedSet.add(element.value);\n            }\n            return { status: status.value, value: parsedSet };\n        }\n        const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n        if (ctx.common.async) {\n            return Promise.all(elements).then((elements) => finalizeSet(elements));\n        }\n        else {\n            return finalizeSet(elements);\n        }\n    }\n    min(minSize, message) {\n        return new ZodSet({\n            ...this._def,\n            minSize: { value: minSize, message: errorUtil.toString(message) },\n        });\n    }\n    max(maxSize, message) {\n        return new ZodSet({\n            ...this._def,\n            maxSize: { value: maxSize, message: errorUtil.toString(message) },\n        });\n    }\n    size(size, message) {\n        return this.min(size, message).max(size, message);\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nZodSet.create = (valueType, params) => {\n    return new ZodSet({\n        valueType,\n        minSize: null,\n        maxSize: null,\n        typeName: ZodFirstPartyTypeKind.ZodSet,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodFunction extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.validate = this.implement;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.function) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.function,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        function makeArgsIssue(args, error) {\n            return makeIssue({\n                data: args,\n                path: ctx.path,\n                errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n                issueData: {\n                    code: ZodIssueCode.invalid_arguments,\n                    argumentsError: error,\n                },\n            });\n        }\n        function makeReturnsIssue(returns, error) {\n            return makeIssue({\n                data: returns,\n                path: ctx.path,\n                errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n                issueData: {\n                    code: ZodIssueCode.invalid_return_type,\n                    returnTypeError: error,\n                },\n            });\n        }\n        const params = { errorMap: ctx.common.contextualErrorMap };\n        const fn = ctx.data;\n        if (this._def.returns instanceof ZodPromise) {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return OK(async function (...args) {\n                const error = new ZodError([]);\n                const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n                    error.addIssue(makeArgsIssue(args, e));\n                    throw error;\n                });\n                const result = await Reflect.apply(fn, this, parsedArgs);\n                const parsedReturns = await me._def.returns._def.type\n                    .parseAsync(result, params)\n                    .catch((e) => {\n                    error.addIssue(makeReturnsIssue(result, e));\n                    throw error;\n                });\n                return parsedReturns;\n            });\n        }\n        else {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return OK(function (...args) {\n                const parsedArgs = me._def.args.safeParse(args, params);\n                if (!parsedArgs.success) {\n                    throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n                }\n                const result = Reflect.apply(fn, this, parsedArgs.data);\n                const parsedReturns = me._def.returns.safeParse(result, params);\n                if (!parsedReturns.success) {\n                    throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n                }\n                return parsedReturns.data;\n            });\n        }\n    }\n    parameters() {\n        return this._def.args;\n    }\n    returnType() {\n        return this._def.returns;\n    }\n    args(...items) {\n        return new ZodFunction({\n            ...this._def,\n            args: ZodTuple.create(items).rest(ZodUnknown.create()),\n        });\n    }\n    returns(returnType) {\n        return new ZodFunction({\n            ...this._def,\n            returns: returnType,\n        });\n    }\n    implement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    strictImplement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    static create(args, returns, params) {\n        return new ZodFunction({\n            args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n            returns: returns || ZodUnknown.create(),\n            typeName: ZodFirstPartyTypeKind.ZodFunction,\n            ...processCreateParams(params),\n        });\n    }\n}\nexport class ZodLazy extends ZodType {\n    get schema() {\n        return this._def.getter();\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const lazySchema = this._def.getter();\n        return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n    }\n}\nZodLazy.create = (getter, params) => {\n    return new ZodLazy({\n        getter: getter,\n        typeName: ZodFirstPartyTypeKind.ZodLazy,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodLiteral extends ZodType {\n    _parse(input) {\n        if (input.data !== this._def.value) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_literal,\n                expected: this._def.value,\n            });\n            return INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n    get value() {\n        return this._def.value;\n    }\n}\nZodLiteral.create = (value, params) => {\n    return new ZodLiteral({\n        value: value,\n        typeName: ZodFirstPartyTypeKind.ZodLiteral,\n        ...processCreateParams(params),\n    });\n};\nfunction createZodEnum(values, params) {\n    return new ZodEnum({\n        values,\n        typeName: ZodFirstPartyTypeKind.ZodEnum,\n        ...processCreateParams(params),\n    });\n}\nexport class ZodEnum extends ZodType {\n    _parse(input) {\n        if (typeof input.data !== \"string\") {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            addIssueToContext(ctx, {\n                expected: util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodIssueCode.invalid_type,\n            });\n            return INVALID;\n        }\n        if (!this._cache) {\n            this._cache = new Set(this._def.values);\n        }\n        if (!this._cache.has(input.data)) {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n    get options() {\n        return this._def.values;\n    }\n    get enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Values() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    extract(values, newDef = this._def) {\n        return ZodEnum.create(values, {\n            ...this._def,\n            ...newDef,\n        });\n    }\n    exclude(values, newDef = this._def) {\n        return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n            ...this._def,\n            ...newDef,\n        });\n    }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n    _parse(input) {\n        const nativeEnumValues = util.getValidEnumValues(this._def.values);\n        const ctx = this._getOrReturnCtx(input);\n        if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n            const expectedValues = util.objectValues(nativeEnumValues);\n            addIssueToContext(ctx, {\n                expected: util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodIssueCode.invalid_type,\n            });\n            return INVALID;\n        }\n        if (!this._cache) {\n            this._cache = new Set(util.getValidEnumValues(this._def.values));\n        }\n        if (!this._cache.has(input.data)) {\n            const expectedValues = util.objectValues(nativeEnumValues);\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n    get enum() {\n        return this._def.values;\n    }\n}\nZodNativeEnum.create = (values, params) => {\n    return new ZodNativeEnum({\n        values: values,\n        typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodPromise extends ZodType {\n    unwrap() {\n        return this._def.type;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.promise,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n        return OK(promisified.then((data) => {\n            return this._def.type.parseAsync(data, {\n                path: ctx.path,\n                errorMap: ctx.common.contextualErrorMap,\n            });\n        }));\n    }\n}\nZodPromise.create = (schema, params) => {\n    return new ZodPromise({\n        type: schema,\n        typeName: ZodFirstPartyTypeKind.ZodPromise,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodEffects extends ZodType {\n    innerType() {\n        return this._def.schema;\n    }\n    sourceType() {\n        return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n            ? this._def.schema.sourceType()\n            : this._def.schema;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const effect = this._def.effect || null;\n        const checkCtx = {\n            addIssue: (arg) => {\n                addIssueToContext(ctx, arg);\n                if (arg.fatal) {\n                    status.abort();\n                }\n                else {\n                    status.dirty();\n                }\n            },\n            get path() {\n                return ctx.path;\n            },\n        };\n        checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n        if (effect.type === \"preprocess\") {\n            const processed = effect.transform(ctx.data, checkCtx);\n            if (ctx.common.async) {\n                return Promise.resolve(processed).then(async (processed) => {\n                    if (status.value === \"aborted\")\n                        return INVALID;\n                    const result = await this._def.schema._parseAsync({\n                        data: processed,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                    if (result.status === \"aborted\")\n                        return INVALID;\n                    if (result.status === \"dirty\")\n                        return DIRTY(result.value);\n                    if (status.value === \"dirty\")\n                        return DIRTY(result.value);\n                    return result;\n                });\n            }\n            else {\n                if (status.value === \"aborted\")\n                    return INVALID;\n                const result = this._def.schema._parseSync({\n                    data: processed,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (result.status === \"aborted\")\n                    return INVALID;\n                if (result.status === \"dirty\")\n                    return DIRTY(result.value);\n                if (status.value === \"dirty\")\n                    return DIRTY(result.value);\n                return result;\n            }\n        }\n        if (effect.type === \"refinement\") {\n            const executeRefinement = (acc) => {\n                const result = effect.refinement(acc, checkCtx);\n                if (ctx.common.async) {\n                    return Promise.resolve(result);\n                }\n                if (result instanceof Promise) {\n                    throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n                }\n                return acc;\n            };\n            if (ctx.common.async === false) {\n                const inner = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inner.status === \"aborted\")\n                    return INVALID;\n                if (inner.status === \"dirty\")\n                    status.dirty();\n                // return value is ignored\n                executeRefinement(inner.value);\n                return { status: status.value, value: inner.value };\n            }\n            else {\n                return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n                    if (inner.status === \"aborted\")\n                        return INVALID;\n                    if (inner.status === \"dirty\")\n                        status.dirty();\n                    return executeRefinement(inner.value).then(() => {\n                        return { status: status.value, value: inner.value };\n                    });\n                });\n            }\n        }\n        if (effect.type === \"transform\") {\n            if (ctx.common.async === false) {\n                const base = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (!isValid(base))\n                    return INVALID;\n                const result = effect.transform(base.value, checkCtx);\n                if (result instanceof Promise) {\n                    throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n                }\n                return { status: status.value, value: result };\n            }\n            else {\n                return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n                    if (!isValid(base))\n                        return INVALID;\n                    return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n                        status: status.value,\n                        value: result,\n                    }));\n                });\n            }\n        }\n        util.assertNever(effect);\n    }\n}\nZodEffects.create = (schema, effect, params) => {\n    return new ZodEffects({\n        schema,\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        effect,\n        ...processCreateParams(params),\n    });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n    return new ZodEffects({\n        schema,\n        effect: { type: \"preprocess\", transform: preprocess },\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        ...processCreateParams(params),\n    });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === ZodParsedType.undefined) {\n            return OK(undefined);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodOptional.create = (type, params) => {\n    return new ZodOptional({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodOptional,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNullable extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === ZodParsedType.null) {\n            return OK(null);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodNullable.create = (type, params) => {\n    return new ZodNullable({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodNullable,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodDefault extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        let data = ctx.data;\n        if (ctx.parsedType === ZodParsedType.undefined) {\n            data = this._def.defaultValue();\n        }\n        return this._def.innerType._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    removeDefault() {\n        return this._def.innerType;\n    }\n}\nZodDefault.create = (type, params) => {\n    return new ZodDefault({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodDefault,\n        defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodCatch extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        // newCtx is used to not collect issues from inner types in ctx\n        const newCtx = {\n            ...ctx,\n            common: {\n                ...ctx.common,\n                issues: [],\n            },\n        };\n        const result = this._def.innerType._parse({\n            data: newCtx.data,\n            path: newCtx.path,\n            parent: {\n                ...newCtx,\n            },\n        });\n        if (isAsync(result)) {\n            return result.then((result) => {\n                return {\n                    status: \"valid\",\n                    value: result.status === \"valid\"\n                        ? result.value\n                        : this._def.catchValue({\n                            get error() {\n                                return new ZodError(newCtx.common.issues);\n                            },\n                            input: newCtx.data,\n                        }),\n                };\n            });\n        }\n        else {\n            return {\n                status: \"valid\",\n                value: result.status === \"valid\"\n                    ? result.value\n                    : this._def.catchValue({\n                        get error() {\n                            return new ZodError(newCtx.common.issues);\n                        },\n                        input: newCtx.data,\n                    }),\n            };\n        }\n    }\n    removeCatch() {\n        return this._def.innerType;\n    }\n}\nZodCatch.create = (type, params) => {\n    return new ZodCatch({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodCatch,\n        catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNaN extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.nan) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.nan,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n}\nZodNaN.create = (params) => {\n    return new ZodNaN({\n        typeName: ZodFirstPartyTypeKind.ZodNaN,\n        ...processCreateParams(params),\n    });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const data = ctx.data;\n        return this._def.type._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    unwrap() {\n        return this._def.type;\n    }\n}\nexport class ZodPipeline extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.common.async) {\n            const handleAsync = async () => {\n                const inResult = await this._def.in._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inResult.status === \"aborted\")\n                    return INVALID;\n                if (inResult.status === \"dirty\") {\n                    status.dirty();\n                    return DIRTY(inResult.value);\n                }\n                else {\n                    return this._def.out._parseAsync({\n                        data: inResult.value,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                }\n            };\n            return handleAsync();\n        }\n        else {\n            const inResult = this._def.in._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n            if (inResult.status === \"aborted\")\n                return INVALID;\n            if (inResult.status === \"dirty\") {\n                status.dirty();\n                return {\n                    status: \"dirty\",\n                    value: inResult.value,\n                };\n            }\n            else {\n                return this._def.out._parseSync({\n                    data: inResult.value,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n            }\n        }\n    }\n    static create(a, b) {\n        return new ZodPipeline({\n            in: a,\n            out: b,\n            typeName: ZodFirstPartyTypeKind.ZodPipeline,\n        });\n    }\n}\nexport class ZodReadonly extends ZodType {\n    _parse(input) {\n        const result = this._def.innerType._parse(input);\n        const freeze = (data) => {\n            if (isValid(data)) {\n                data.value = Object.freeze(data.value);\n            }\n            return data;\n        };\n        return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodReadonly.create = (type, params) => {\n    return new ZodReadonly({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodReadonly,\n        ...processCreateParams(params),\n    });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n//////////                    //////////\n//////////      z.custom      //////////\n//////////                    //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n    const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n    const p2 = typeof p === \"string\" ? { message: p } : p;\n    return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n    if (check)\n        return ZodAny.create().superRefine((data, ctx) => {\n            const r = check(data);\n            if (r instanceof Promise) {\n                return r.then((r) => {\n                    if (!r) {\n                        const params = cleanParams(_params, data);\n                        const _fatal = params.fatal ?? fatal ?? true;\n                        ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n                    }\n                });\n            }\n            if (!r) {\n                const params = cleanParams(_params, data);\n                const _fatal = params.fatal ?? fatal ?? true;\n                ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n            }\n            return;\n        });\n    return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n    object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n    ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n    ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n    ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n    ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n    ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n    ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n    ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n    ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n    ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n    ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n    ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n    ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n    ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n    ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n    ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n    ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n    ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n    ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n    ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n    ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n    ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n    ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n    ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n    ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n    ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n    ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n    ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n    ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n    ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n    ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n    ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n    ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n    ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n    ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n    ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n    ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n    constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n    message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n    string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n    number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n    boolean: ((arg) => ZodBoolean.create({\n        ...arg,\n        coerce: true,\n    })),\n    bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n    date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","export var errorUtil;\n(function (errorUtil) {\n    errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n    // biome-ignore lint:\n    errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { z } from \"zod\";\n\nexport const CustomReadmeSectionSchema = z.strictObject({\n    title: z.string(),\n    content: z.string()\n});\n\nexport type CustomReadmeSectionSchema = z.infer<typeof CustomReadmeSectionSchema>;\n","import { Class } from \"./ast/Class.js\";\nimport { ClassInstantiation, ClassReference, CodeBlock, MethodInvocation } from \"./ast/index.js\";\nimport { Method } from \"./ast/Method.js\";\nimport { Parameter } from \"./ast/Parameter.js\";\n\nexport function codeblock(arg: CodeBlock.Arg): CodeBlock {\n    return new CodeBlock(arg);\n}\n\nexport function class_(args: Class.Args): Class {\n    return new Class(args);\n}\n\nexport function classReference(args: ClassReference.Args): ClassReference {\n    return new ClassReference(args);\n}\n\nexport function instantiateClass(args: ClassInstantiation.Args): ClassInstantiation {\n    return new ClassInstantiation(args);\n}\n\nexport function invokeMethod(args: MethodInvocation.Args): MethodInvocation {\n    return new MethodInvocation(args);\n}\n\nexport function method(args: Method.Args): Method {\n    return new Method(args);\n}\n\nexport function parameter(args: Parameter.Args): Parameter {\n    return new Parameter(args);\n}\n\nexport { AstNode } from \"./ast/core/AstNode.js\";\nexport {\n    Access,\n    type BuilderParameter,\n    Class,\n    ClassInstantiation,\n    ClassReference,\n    CodeBlock,\n    type ConstructorParameter,\n    Method,\n    MethodInvocation,\n    Parameter,\n    Type,\n    TypeLiteral,\n    Writer\n} from \"./ast/index.js\";\n","import { Access } from \"./Access.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Method } from \"./Method.js\";\n\nexport declare namespace Class {\n    interface Args {\n        /* The name of the class */\n        name: string;\n        /* The access level of the class */\n        access: Access;\n    }\n}\n\nexport class Class extends AstNode {\n    public readonly name: string;\n    public readonly access: Access;\n\n    private methods: Method[] = [];\n\n    constructor({ name, access }: Class.Args) {\n        super();\n\n        this.name = name;\n        this.access = access;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(`${this.access} class ${this.name}`);\n        if (this.isEmpty()) {\n            writer.writeLine(\" {}\");\n            return;\n        }\n        writer.writeLine(\" {\");\n        writer.indent();\n        for (const method of this.methods) {\n            writer.writeNode(method);\n            writer.newLine();\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n\n    public addMethod(method: Method): void {\n        this.methods.push(method);\n    }\n\n    private isEmpty(): boolean {\n        return this.methods.length === 0;\n    }\n}\n","import { AbstractAstNode, AbstractFormatter } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { BaseJavaCustomConfigSchema } from \"../../custom-config/BaseJavaCustomConfigSchema.js\";\nimport { JavaFile } from \"./JavaFile.js\";\n\nexport abstract class AstNode extends AbstractAstNode {\n    /**\n     * Writes the node to a string.\n     */\n    public async toStringAsync({\n        packageName,\n        customConfig,\n        formatter\n    }: {\n        packageName: string;\n        customConfig: BaseJavaCustomConfigSchema;\n        formatter?: AbstractFormatter;\n    }): Promise<string> {\n        const file = new JavaFile({\n            packageName,\n            customConfig,\n            formatter\n        });\n        this.write(file);\n        return file.toStringAsync();\n    }\n\n    /**\n     * Writes the node to a string.\n     */\n    public toString({\n        packageName,\n        customConfig,\n        formatter\n    }: {\n        packageName: string;\n        customConfig: BaseJavaCustomConfigSchema;\n        formatter?: AbstractFormatter;\n    }): string {\n        const file = new JavaFile({\n            packageName,\n            customConfig,\n            formatter\n        });\n        this.write(file);\n        return file.toString();\n    }\n}\n","export { Access } from \"./Access.js\";\nexport { Class } from \"./Class.js\";\nexport { ClassInstantiation } from \"./ClassInstantiation.js\";\nexport { ClassReference } from \"./ClassReference.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { AstNode } from \"./core/AstNode.js\";\nexport { Writer } from \"./core/Writer.js\";\nexport { Method } from \"./Method.js\";\nexport { MethodInvocation } from \"./MethodInvocation.js\";\nexport { Parameter } from \"./Parameter.js\";\nexport { Type } from \"./Type.js\";\nexport { type BuilderParameter, type ConstructorParameter, TypeLiteral } from \"./TypeLiteral.js\";\n","export const Access = {\n    Public: \"public\",\n    Protected: \"protected\",\n    Private: \"private\"\n} as const;\n\nexport type Access = (typeof Access)[keyof typeof Access];\n","import { ClassReference } from \"./ClassReference.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { writeArguments } from \"./utils/writeArguments.js\";\n\nexport declare namespace ClassInstantiation {\n    interface Args {\n        /* The class to instantiate */\n        classReference: ClassReference;\n        /* The arguments passed to the constructor */\n        arguments_: AstNode[];\n    }\n}\n\nexport class ClassInstantiation extends AstNode {\n    private classReference: ClassReference;\n    private arguments_: AstNode[];\n\n    constructor({ classReference, arguments_ }: ClassInstantiation.Args) {\n        super();\n\n        this.classReference = classReference;\n        this.arguments_ = arguments_;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.classReference);\n        writeArguments({ writer, arguments_: this.arguments_ });\n    }\n}\n","import { Argument, Arguments, isNamedArgument } from \"@fern-api/browser-compatible-base-generator\";\nimport { Writer } from \"../core/Writer.js\";\nimport { TypeLiteral } from \"../TypeLiteral.js\";\n\nexport function writeArguments({ writer, arguments_ }: { writer: Writer; arguments_: Arguments }): void {\n    const filteredArguments = filterNopArguments(arguments_);\n    if (filteredArguments.length === 0) {\n        writer.write(\"()\");\n        return;\n    }\n    const shouldWriteMultiline = filteredArguments.some((arg) => {\n        return arg instanceof TypeLiteral && !arg.shouldWriteInLine();\n    });\n    if (shouldWriteMultiline) {\n        writeMultilineArguments({ writer, arguments_: filteredArguments });\n        return;\n    }\n    writer.write(\"(\");\n    filteredArguments.forEach((argument, index) => {\n        if (index > 0) {\n            writer.write(\", \");\n        }\n        writeArgument({ writer, argument });\n    });\n    writer.write(\")\");\n}\n\nfunction writeMultilineArguments({ writer, arguments_ }: { writer: Writer; arguments_: Argument[] }): void {\n    writer.writeLine(\"(\");\n    writer.indent();\n    arguments_.forEach((argument, index) => {\n        if (index > 0) {\n            writer.writeLine(\",\");\n        }\n        writeArgument({ writer, argument });\n    });\n    writer.dedent();\n    if (arguments_.length > 0) {\n        writer.newLine();\n    }\n    writer.write(\")\");\n}\n\nfunction writeArgument({ writer, argument }: { writer: Writer; argument: Argument }): void {\n    if (isNamedArgument(argument)) {\n        writer.writeNodeOrString(argument.assignment);\n    } else {\n        argument.write(writer);\n    }\n}\n\nfunction filterNopArguments(arguments_: Argument[]): Argument[] {\n    return arguments_.filter((argument) => !(argument instanceof TypeLiteral && TypeLiteral.isNop(argument)));\n}\n","import { assertNever } from \"@fern-api/core-utils\";\n\nimport { java } from \"../index.js\";\nimport { ClassReference } from \"./ClassReference.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { ArraysClassReference, OptionalClassReference, Type } from \"./Type.js\";\n\ntype InternalTypeLiteral =\n    | BigInteger\n    | Boolean_\n    | Builder\n    | Bytes\n    | Class_\n    | Date\n    | DateTime\n    | Double\n    | Enum\n    | Float\n    | Integer\n    | List\n    | Long\n    | Map\n    | Optional\n    | Raw\n    | Reference\n    | Set\n    | String_\n    | Unknown\n    | UUID\n    | Nop;\n\ninterface BigInteger {\n    type: \"bigInteger\";\n    value: string;\n}\n\ninterface Boolean_ {\n    type: \"boolean\";\n    value: boolean;\n}\n\ninterface Builder {\n    type: \"builder\";\n    classReference: ClassReference;\n    parameters: BuilderParameter[];\n}\n\nexport interface BuilderParameter {\n    name: string;\n    value: TypeLiteral;\n}\n\ninterface Bytes {\n    type: \"bytes\";\n    value: string;\n}\n\ninterface Class_ {\n    type: \"class\";\n    reference: ClassReference;\n    parameters: ConstructorParameter[];\n}\n\nexport interface ConstructorParameter {\n    name: string;\n    value: TypeLiteral;\n}\n\ninterface Float {\n    type: \"float\";\n    value: number;\n}\n\ninterface Date {\n    type: \"date\";\n    value: string;\n}\n\ninterface DateTime {\n    type: \"dateTime\";\n    value: string;\n}\n\ninterface Double {\n    type: \"double\";\n    value: number;\n}\n\ninterface Enum {\n    type: \"enum\";\n    classReference: ClassReference;\n    value: string;\n}\n\ninterface Integer {\n    type: \"integer\";\n    value: number;\n}\n\ninterface List {\n    type: \"list\";\n    valueType: Type;\n    values: TypeLiteral[];\n    isParameter?: boolean; // If true, generates Arrays.asList() directly for method parameters instead of wrapping with new ArrayList()\n}\n\ninterface Long {\n    type: \"long\";\n    value: number;\n}\n\ninterface Map {\n    type: \"map\";\n    keyType: Type;\n    valueType: Type;\n    entries: MapEntry[];\n}\n\ninterface MapEntry {\n    key: TypeLiteral;\n    value: TypeLiteral;\n}\n\ninterface Optional {\n    type: \"optional\";\n    value: TypeLiteral;\n    useOf?: boolean;\n}\n\ninterface Raw {\n    type: \"raw\";\n    value: string | AstNode;\n}\n\ninterface Reference {\n    type: \"reference\";\n    value: AstNode;\n}\n\ninterface Set {\n    type: \"set\";\n    valueType: Type;\n    values: TypeLiteral[];\n}\n\ninterface String_ {\n    type: \"string\";\n    value: string;\n}\n\ninterface Unknown {\n    type: \"unknown\";\n    value: unknown;\n}\n\ninterface UUID {\n    type: \"uuid\";\n    value: string;\n}\n\ninterface Nop {\n    type: \"nop\";\n}\n\nexport class TypeLiteral extends AstNode {\n    private constructor(public readonly internalType: InternalTypeLiteral) {\n        super();\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalType.type) {\n            case \"bigInteger\":\n                this.writeBigInteger({ writer, bigInteger: this.internalType });\n                break;\n            case \"boolean\":\n                writer.write(this.internalType.value.toString());\n                break;\n            case \"builder\":\n                this.writeBuilder({ writer, builder: this.internalType });\n                break;\n            case \"bytes\":\n                writer.write(`\"${this.internalType.value}\".getBytes()`);\n                break;\n            case \"class\": {\n                this.writeClass({ writer, class_: this.internalType });\n                break;\n            }\n            case \"date\":\n                this.writeDate({ writer, date: this.internalType });\n                break;\n            case \"dateTime\":\n                this.writeDateTime({ writer, dateTime: this.internalType });\n                break;\n            case \"double\": {\n                const valueStr = this.internalType.value.toString();\n                if (!valueStr.includes(\".\") && !valueStr.includes(\"e\") && !valueStr.includes(\"E\")) {\n                    writer.write(`${valueStr}.0`);\n                } else {\n                    writer.write(valueStr);\n                }\n                break;\n            }\n            case \"enum\":\n                this.writeEnum({ writer, enum_: this.internalType });\n                break;\n            case \"float\":\n                writer.write(`${this.internalType.value}f`);\n                break;\n            case \"integer\":\n                writer.write(Math.floor(this.internalType.value).toString());\n                break;\n            case \"list\": {\n                this.writeList({ writer, list: this.internalType });\n                break;\n            }\n            case \"long\": {\n                writer.write(`${Math.floor(this.internalType.value)}L`);\n                break;\n            }\n            case \"map\": {\n                this.writeMap({ writer, map: this.internalType });\n                break;\n            }\n            case \"optional\": {\n                this.writeOptional({ writer, optional: this.internalType });\n                break;\n            }\n            case \"raw\": {\n                if (this.internalType.value instanceof AstNode) {\n                    writer.writeNode(this.internalType.value);\n                } else {\n                    writer.write(this.internalType.value);\n                }\n                break;\n            }\n            case \"reference\":\n                writer.writeNode(this.internalType.value);\n                break;\n            case \"set\": {\n                this.writeSet({ writer, set: this.internalType });\n                break;\n            }\n            case \"string\":\n                writer.write(`\"${this.escapeString(this.internalType.value)}\"`);\n                break;\n            case \"unknown\":\n                this.writeUnknown({ writer, value: this.internalType.value });\n                break;\n            case \"uuid\":\n                this.writeUUID({ writer, uuid: this.internalType });\n                break;\n            case \"nop\":\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    public isOptional(): boolean {\n        return this.internalType.type === \"optional\";\n    }\n\n    /* Static factory methods for creating a Type */\n    public static bigInteger(value: string): TypeLiteral {\n        return new this({\n            type: \"bigInteger\",\n            value\n        });\n    }\n\n    public static boolean(value: boolean): TypeLiteral {\n        return new this({\n            type: \"boolean\",\n            value\n        });\n    }\n\n    public static builder({\n        classReference,\n        parameters\n    }: {\n        classReference: ClassReference;\n        parameters: BuilderParameter[];\n    }): TypeLiteral {\n        return new this({ type: \"builder\", classReference, parameters });\n    }\n\n    public static bytes(value: string): TypeLiteral {\n        return new this({\n            type: \"bytes\",\n            value\n        });\n    }\n\n    public static class_({\n        reference,\n        parameters\n    }: {\n        reference: ClassReference;\n        parameters: ConstructorParameter[];\n    }): TypeLiteral {\n        return new this({ type: \"class\", reference, parameters });\n    }\n\n    public static date(value: string): TypeLiteral {\n        return new this({\n            type: \"date\",\n            value\n        });\n    }\n\n    public static dateTime(value: string): TypeLiteral {\n        return new this({\n            type: \"dateTime\",\n            value\n        });\n    }\n\n    public static double(value: number): TypeLiteral {\n        return new this({\n            type: \"double\",\n            value\n        });\n    }\n\n    public static enum_({ classReference, value }: { classReference: ClassReference; value: string }): TypeLiteral {\n        return new this({\n            type: \"enum\",\n            classReference,\n            value\n        });\n    }\n\n    public static float(value: number): TypeLiteral {\n        return new this({\n            type: \"float\",\n            value\n        });\n    }\n\n    public static integer(value: number): TypeLiteral {\n        return new this({\n            type: \"integer\",\n            value\n        });\n    }\n\n    public static list({\n        valueType,\n        values,\n        isParameter\n    }: {\n        valueType: Type;\n        values: TypeLiteral[];\n        isParameter?: boolean;\n    }): TypeLiteral {\n        return new this({\n            type: \"list\",\n            valueType,\n            values,\n            isParameter\n        });\n    }\n\n    public static long(value: number): TypeLiteral {\n        return new this({\n            type: \"long\",\n            value\n        });\n    }\n\n    public static map({\n        keyType,\n        valueType,\n        entries\n    }: {\n        keyType: Type;\n        valueType: Type;\n        entries: MapEntry[];\n    }): TypeLiteral {\n        return new this({\n            type: \"map\",\n            keyType,\n            valueType,\n            entries\n        });\n    }\n\n    public static optional({ value, useOf }: { value: TypeLiteral; useOf?: boolean }): TypeLiteral {\n        // Avoids double optional.\n        if (this.isAlreadyOptional(value)) {\n            return value;\n        }\n        return new this({\n            type: \"optional\",\n            value,\n            useOf\n        });\n    }\n\n    public static raw(value: string | AstNode): TypeLiteral {\n        return new this({\n            type: \"raw\",\n            value\n        });\n    }\n\n    public static reference(value: AstNode): TypeLiteral {\n        return new this({\n            type: \"reference\",\n            value\n        });\n    }\n\n    public static set({ valueType, values }: { valueType: Type; values: TypeLiteral[] }): TypeLiteral {\n        return new this({\n            type: \"set\",\n            valueType,\n            values\n        });\n    }\n\n    public static string(value: string): TypeLiteral {\n        return new this({\n            type: \"string\",\n            value\n        });\n    }\n\n    public static unknown(value: unknown): TypeLiteral {\n        return new this({\n            type: \"unknown\",\n            value\n        });\n    }\n\n    public static uuid(value: string): TypeLiteral {\n        return new this({\n            type: \"uuid\",\n            value\n        });\n    }\n\n    public static nop(): TypeLiteral {\n        return new this({\n            type: \"nop\"\n        });\n    }\n\n    public static isNop(typeLiteral: TypeLiteral): boolean {\n        return typeLiteral.internalType.type === \"nop\";\n    }\n\n    /* Returns true if the type literal should be written on a single line. */\n    public shouldWriteInLine(): boolean {\n        switch (this.internalType.type) {\n            case \"bigInteger\":\n            case \"boolean\":\n            case \"bytes\":\n            case \"date\":\n            case \"dateTime\":\n            case \"double\":\n            case \"enum\":\n            case \"float\":\n            case \"integer\":\n            case \"long\":\n            case \"nop\":\n            case \"raw\":\n            case \"string\":\n            case \"unknown\":\n            case \"uuid\":\n                return true;\n            case \"optional\":\n                return this.internalType.value.shouldWriteInLine();\n            case \"builder\":\n            case \"class\":\n            case \"list\":\n            case \"map\":\n            case \"reference\":\n            case \"set\":\n                return false;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    private writeBigInteger({ writer, bigInteger }: { writer: Writer; bigInteger: BigInteger }): void {\n        writer.write(\"new \");\n        writer.writeNode(\n            java.instantiateClass({\n                classReference: BigIntegerClassReference,\n                arguments_: [TypeLiteral.string(bigInteger.value)]\n            })\n        );\n    }\n\n    private writeBuilder({ writer, builder }: { writer: Writer; builder: Builder }): void {\n        writer.writeNode(builder.classReference);\n        writer.writeNewLineIfLastLineNot();\n        writer.indent();\n        this.writeBuilderParameters({\n            writer,\n            parameters: this.orderBuilderParameters(filterNopBuilderParameters({ parameters: builder.parameters }))\n        });\n        writer.dedent();\n    }\n\n    private writeBuilderParameters({ writer, parameters }: { writer: Writer; parameters: BuilderParameter[] }): void {\n        writer.writeLine(\".builder()\");\n        for (const parameter of parameters) {\n            writer.write(`.${parameter.name}(`);\n            if (!parameter.value.shouldWriteInLine()) {\n                writer.newLine();\n            }\n            writer.indent();\n            writer.writeNode(parameter.value);\n            writer.dedent();\n            if (!parameter.value.shouldWriteInLine()) {\n                writer.newLine();\n            }\n            writer.writeLine(\")\");\n        }\n        writer.writeNewLineIfLastLineNot();\n        writer.write(\".build()\");\n    }\n\n    public orderBuilderParameters(parameters: java.BuilderParameter[]): java.BuilderParameter[] {\n        const hasRequiredFields = parameters.some((p) => !p.value.isOptional() && !this.isCollection(p.value));\n\n        if (!hasRequiredFields) {\n            return parameters.sort((a, b) => {\n                const aIsOptional = a.value.isOptional();\n                const bIsOptional = b.value.isOptional();\n\n                if (aIsOptional && !bIsOptional) {\n                    return 1;\n                }\n                if (!aIsOptional && bIsOptional) {\n                    return -1;\n                }\n\n                return 0;\n            });\n        }\n\n        return parameters.sort((a, b) => {\n            const aIsNonRequired = this.isNonRequired(a.value);\n            const bIsNonRequired = this.isNonRequired(b.value);\n\n            if (aIsNonRequired && !bIsNonRequired) {\n                return 1;\n            }\n            if (!aIsNonRequired && bIsNonRequired) {\n                return -1;\n            }\n\n            return 0;\n        });\n    }\n\n    private isCollection(value: TypeLiteral): boolean {\n        const internalType = value.internalType.type;\n        return internalType === \"list\" || internalType === \"set\" || internalType === \"map\";\n    }\n\n    private isNonRequired(value: TypeLiteral): boolean {\n        return value.isOptional() || this.isCollection(value);\n    }\n\n    private writeClass({ writer, class_: class_ }: { writer: Writer; class_: Class_ }): void {\n        const parameters = filterNopConstructorParameters({ parameters: class_.parameters });\n        writer.writeNode(\n            java.instantiateClass({\n                classReference: class_.reference,\n                arguments_: parameters.map((parameter) => parameter.value)\n            })\n        );\n    }\n\n    private writeDate({ writer, date }: { writer: Writer; date: Date }): void {\n        writer.writeNode(\n            java.invokeMethod({\n                on: LocalDateClassReference,\n                method: \"parse\",\n                arguments_: [TypeLiteral.string(date.value)]\n            })\n        );\n    }\n\n    private writeDateTime({ writer, dateTime }: { writer: Writer; dateTime: DateTime }): void {\n        writer.writeNode(\n            java.invokeMethod({\n                on: OffsetDateTimeClassReference,\n                method: \"parse\",\n                arguments_: [TypeLiteral.string(dateTime.value)]\n            })\n        );\n    }\n\n    private writeEnum({ writer, enum_: enum_ }: { writer: Writer; enum_: Enum }): void {\n        writer.writeNode(enum_.classReference);\n        writer.write(\".\" + enum_.value);\n    }\n\n    private writeList({ writer, list }: { writer: Writer; list: List }): void {\n        this.writeIterable({ writer, iterable: list });\n    }\n\n    private writeMap({ writer, map }: { writer: Writer; map: Map }): void {\n        const entries = filterNopMapEntries({ entries: map.entries });\n        if (entries.length === 0) {\n            writer.write(\"new \");\n            writer.writeNode(HashMapClassReference);\n            writer.write(\"<\");\n            writer.writeNode(map.keyType);\n            writer.write(\", \");\n            writer.writeNode(map.valueType);\n            writer.write(\">()\");\n            return;\n        }\n\n        writer.write(\"new \");\n        writer.writeNode(HashMapClassReference);\n        writer.write(\"<\");\n        writer.writeNode(map.keyType);\n        writer.write(\", \");\n        writer.writeNode(map.valueType);\n        writer.writeLine(\">() {{\");\n        writer.indent();\n        for (const entry of entries) {\n            writer.write(\"put(\");\n            writer.writeNode(entry.key);\n            writer.write(\", \");\n            writer.writeNode(entry.value);\n            writer.writeLine(\");\");\n        }\n        writer.dedent();\n        writer.write(\"}}\");\n    }\n\n    private writeOptional({ writer, optional }: { writer: Writer; optional: Optional }): void {\n        if (!optional.useOf) {\n            writer.writeNode(optional.value);\n            return;\n        }\n        writer.writeNode(\n            java.invokeMethod({\n                on: OptionalClassReference,\n                method: \"of\",\n                arguments_: [optional.value]\n            })\n        );\n    }\n\n    private writeSet({ writer, set }: { writer: Writer; set: Set }): void {\n        this.writeIterable({ writer, iterable: set });\n    }\n\n    private writeIterable({ writer, iterable }: { writer: Writer; iterable: List | Set }): void {\n        const classReference = iterable.type === \"list\" ? ArrayListClassReference : HashSetClassReference;\n        const values = filterNopValues({ values: iterable.values });\n\n        if (iterable.type === \"list\" && iterable.isParameter && values.length > 0) {\n            writer.writeNode(\n                java.invokeMethod({\n                    on: ArraysClassReference,\n                    method: \"asList\",\n                    arguments_: values\n                })\n            );\n            return;\n        }\n\n        if (values.length === 0) {\n            writer.write(\"new \");\n            writer.writeNode(classReference);\n            writer.write(\"<\");\n            writer.writeNode(iterable.valueType);\n            writer.write(\">()\");\n            return;\n        }\n\n        writer.write(\"new \");\n        writer.writeNode(classReference);\n        writer.write(\"<\");\n        writer.writeNode(iterable.valueType);\n        writer.writeLine(\">(\");\n        writer.indent();\n        writer.writeNode(\n            java.invokeMethod({\n                on: ArraysClassReference,\n                method: \"asList\",\n                arguments_: values\n            })\n        );\n        writer.writeNewLineIfLastLineNot();\n        writer.dedent();\n        writer.write(\")\");\n    }\n\n    private writeUnknown({ writer, value }: { writer: Writer; value: unknown }): void {\n        switch (typeof value) {\n            case \"boolean\":\n                writer.write(value.toString());\n                return;\n            case \"string\":\n                writer.write(`\"${this.escapeString(value)}\"`);\n                return;\n            case \"number\":\n                writer.write(value.toString());\n                return;\n            case \"object\":\n                if (value == null) {\n                    writer.write(\"null\");\n                    return;\n                }\n                if (Array.isArray(value)) {\n                    this.writeUnknownArray({ writer, value });\n                    return;\n                }\n                this.writeUnknownMap({ writer, value });\n                return;\n            default:\n                throw new Error(`Internal error; unsupported unknown type: ${typeof value}`);\n        }\n    }\n\n    private writeUnknownArray({\n        writer,\n        value\n    }: {\n        writer: Writer;\n        // biome-ignore lint/suspicious/noExplicitAny: allow\n        value: any[];\n    }): void {\n        if (value.length === 0) {\n            writer.write(\"new \");\n            writer.writeNode(ArrayListClassReference);\n            writer.write(\"<Object>()\");\n            return;\n        }\n        writer.write(\"new \");\n        writer.writeNode(ArrayListClassReference);\n        writer.write(\"<Object>(\");\n        writer.writeNode(\n            java.invokeMethod({\n                on: ArraysClassReference,\n                method: \"asList\",\n                arguments_: value.map((element) => TypeLiteral.unknown(element))\n            })\n        );\n        writer.write(\")\");\n    }\n\n    private writeUnknownMap({ writer, value }: { writer: Writer; value: object }): void {\n        const entries = Object.entries(value);\n        if (entries.length === 0) {\n            writer.write(\"new \");\n            writer.writeNode(HashMapClassReference);\n            writer.write(\"<String, Object>()\");\n            return;\n        }\n        writer.writeLine(\"new \");\n        writer.writeNode(HashMapClassReference);\n        writer.write(\"<String, Object>() {{\");\n        writer.indent();\n        for (const [key, val] of entries) {\n            writer.write(`put(\"${key}\", `);\n            writer.writeNode(TypeLiteral.unknown(val));\n            writer.writeLine(\");\");\n        }\n        writer.dedent();\n        writer.write(\"}}\");\n    }\n\n    private writeUUID({ writer, uuid }: { writer: Writer; uuid: UUID }): void {\n        writer.writeNode(\n            java.invokeMethod({\n                on: UUIDClassReference,\n                method: \"fromString\",\n                arguments_: [TypeLiteral.string(uuid.value)]\n            })\n        );\n    }\n\n    private escapeString(input: string): string {\n        return input\n            .replace(/\\\\/g, \"\\\\\\\\\") // Escape backslashes\n            .replace(/\"/g, '\\\\\"') // Escape double quotes\n            .replace(/\\n/g, \"\\\\n\") // Escape newlines\n            .replace(/\\r/g, \"\\\\r\") // Escape carriage returns\n            .replace(/\\t/g, \"\\\\t\"); // Escape tabs\n    }\n\n    private static isAlreadyOptional(value: TypeLiteral) {\n        return value.internalType.type === \"optional\";\n    }\n}\n\nexport const ArrayListClassReference = new ClassReference({\n    name: \"ArrayList\",\n    packageName: \"java.util\"\n});\n\nexport const BigIntegerClassReference = new ClassReference({\n    name: \"BigInteger\",\n    packageName: \"java.math\"\n});\n\nexport const HashMapClassReference = new ClassReference({\n    name: \"HashMap\",\n    packageName: \"java.util\"\n});\n\nexport const HashSetClassReference = new ClassReference({\n    name: \"HashSet\",\n    packageName: \"java.util\"\n});\n\nexport const ListClassReference = new ClassReference({\n    name: \"List\",\n    packageName: \"java.util\"\n});\n\nexport const LocalDateClassReference = new ClassReference({\n    name: \"LocalDate\",\n    packageName: \"java.time\"\n});\n\nexport const MapClassReference = new ClassReference({\n    name: \"Map\",\n    packageName: \"java.util\"\n});\n\nexport const OffsetDateTimeClassReference = new ClassReference({\n    name: \"OffsetDateTime\",\n    packageName: \"java.time\"\n});\n\nexport const SetClassReference = new ClassReference({\n    name: \"Set\",\n    packageName: \"java.util\"\n});\n\nexport const UUIDClassReference = new ClassReference({\n    name: \"UUID\",\n    packageName: \"java.util\"\n});\n\nfunction filterNopConstructorParameters({\n    parameters\n}: {\n    parameters: ConstructorParameter[];\n}): ConstructorParameter[] {\n    return parameters.filter((parameter) => !TypeLiteral.isNop(parameter.value));\n}\n\nfunction filterNopBuilderParameters({ parameters }: { parameters: BuilderParameter[] }): BuilderParameter[] {\n    return parameters.filter((parameter) => !TypeLiteral.isNop(parameter.value));\n}\n\nfunction filterNopMapEntries({ entries }: { entries: MapEntry[] }): MapEntry[] {\n    return entries.filter((entry) => !TypeLiteral.isNop(entry.key) && !TypeLiteral.isNop(entry.value));\n}\n\nfunction filterNopValues({ values }: { values: TypeLiteral[] }): TypeLiteral[] {\n    return values.filter((value) => !TypeLiteral.isNop(value));\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace ClassReference {\n    interface Args {\n        /* The name of the Java class */\n        name: string;\n        /* The package name of the Java class */\n        packageName: string;\n        /* Force the class reference to be fully qualified */\n        fullyQualified?: boolean;\n    }\n}\n\nexport class ClassReference extends AstNode {\n    public readonly name: string;\n    public readonly packageName: string;\n    public readonly fullyQualified: boolean;\n\n    constructor({ name, packageName, fullyQualified }: ClassReference.Args) {\n        super();\n        this.name = name;\n        this.packageName = packageName;\n        this.fullyQualified = fullyQualified ?? false;\n    }\n\n    public write(writer: Writer): void {\n        writer.addImport(`${this.packageName}.${this.name}`);\n        if (this.fullyQualified) {\n            writer.write(`${this.packageName}.${this.name}`);\n            return;\n        }\n        writer.write(this.name);\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\n\nimport { ClassReference } from \"./ClassReference.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\ntype InternalType =\n    | Array\n    | BigInteger\n    | Boolean_\n    | Bytes\n    | Date\n    | DateTime\n    | Double\n    | Float\n    | Generic\n    | InputStream\n    | Integer\n    | Iterable\n    | List\n    | Long\n    | Map\n    | Object_\n    | Optional\n    | Reference\n    | Set\n    | String_\n    | UUID\n    | Void;\n\ninterface Array {\n    type: \"array\";\n    value: Type;\n}\n\ninterface BigInteger {\n    type: \"bigInteger\";\n}\n\ninterface Boolean_ {\n    type: \"boolean\";\n}\n\ninterface Bytes {\n    type: \"bytes\";\n}\n\ninterface Date {\n    type: \"date\";\n}\n\ninterface DateTime {\n    type: \"dateTime\";\n}\n\ninterface Double {\n    type: \"double\";\n}\n\ninterface Float {\n    type: \"float\";\n}\n\ninterface Generic {\n    type: \"generic\";\n    value: ClassReference;\n    parameters: Type[];\n}\n\ninterface InputStream {\n    type: \"inputStream\";\n}\n\ninterface Integer {\n    type: \"integer\";\n}\n\ninterface Iterable {\n    type: \"iterable\";\n    value: Type;\n}\n\ninterface List {\n    type: \"list\";\n    value: Type;\n}\n\ninterface Long {\n    type: \"long\";\n}\n\ninterface Map {\n    type: \"map\";\n    keyType: Type;\n    valueType: Type;\n}\n\ninterface Object_ {\n    type: \"object\";\n}\n\ninterface Optional {\n    type: \"optional\";\n    value: Type;\n}\n\ninterface Reference {\n    type: \"reference\";\n    value: ClassReference;\n}\n\ninterface Set {\n    type: \"set\";\n    value: Type;\n}\n\ninterface String_ {\n    type: \"string\";\n}\n\ninterface UUID {\n    type: \"uuid\";\n}\n\ninterface Void {\n    type: \"void\";\n}\n\nexport class Type extends AstNode {\n    private constructor(public readonly internalType: InternalType) {\n        super();\n    }\n\n    // TODO: Add unboxed variants for primitive types\n    public write(writer: Writer): void {\n        switch (this.internalType.type) {\n            case \"array\":\n                writer.writeNode(this.internalType.value);\n                writer.write(\"[]\");\n                break;\n            case \"bigInteger\":\n                writer.writeNode(BigIntegerClassReference);\n                break;\n            case \"boolean\":\n                writer.write(\"Boolean\");\n                break;\n            case \"bytes\":\n                writer.write(\"byte[]\");\n                break;\n            case \"date\":\n                writer.write(\"String\");\n                break;\n            case \"dateTime\":\n                writer.writeNode(OffsetDateTimeClassReference);\n                break;\n            case \"double\":\n                writer.write(\"Double\");\n                break;\n            case \"float\":\n                writer.write(\"Float\");\n                break;\n            case \"generic\":\n                writer.writeNode(this.internalType.value);\n                writer.write(\"<\");\n                for (const [index, parameter] of this.internalType.parameters.entries()) {\n                    writer.writeNode(parameter);\n                    if (index < this.internalType.parameters.length - 1) {\n                        writer.write(\", \");\n                    }\n                }\n                writer.write(\">\");\n                break;\n            case \"inputStream\":\n                writer.writeNode(InputStreamClassReference);\n                break;\n            case \"integer\":\n                writer.write(\"Integer\");\n                break;\n            case \"iterable\":\n                this.writeIterable({ writer, iterable: this.internalType });\n                break;\n            case \"list\": {\n                this.writeList({ writer, list: this.internalType });\n                break;\n            }\n            case \"long\": {\n                writer.write(\"Long\");\n                break;\n            }\n            case \"map\": {\n                this.writeMap({ writer, map: this.internalType });\n                break;\n            }\n            case \"object\": {\n                writer.write(\"Object\");\n                break;\n            }\n            case \"optional\": {\n                this.writeOptional({ writer, optional: this.internalType });\n                break;\n            }\n            case \"reference\":\n                writer.writeNode(this.internalType.value);\n                break;\n            case \"set\": {\n                this.writeSet({ writer, set: this.internalType });\n                break;\n            }\n            case \"string\":\n                writer.write(\"String\");\n                break;\n            case \"uuid\":\n                writer.writeNode(UUIDClassReference);\n                break;\n            case \"void\":\n                writer.write(\"Void\");\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    public isOptional(): boolean {\n        return this.internalType.type === \"optional\";\n    }\n\n    /* Static factory methods for creating a Type */\n    public static array(value: Type): Type {\n        return new this({\n            type: \"array\",\n            value\n        });\n    }\n\n    public static bigInteger(): Type {\n        return new this({\n            type: \"bigInteger\"\n        });\n    }\n\n    public static boolean(): Type {\n        return new this({\n            type: \"boolean\"\n        });\n    }\n\n    public static bytes(): Type {\n        return new this({\n            type: \"bytes\"\n        });\n    }\n\n    public static date(): Type {\n        return new this({\n            type: \"date\"\n        });\n    }\n\n    public static dateTime(): Type {\n        return new this({\n            type: \"dateTime\"\n        });\n    }\n\n    public static double(): Type {\n        return new this({\n            type: \"double\"\n        });\n    }\n\n    public static float(): Type {\n        return new this({\n            type: \"float\"\n        });\n    }\n\n    public static integer(): Type {\n        return new this({\n            type: \"integer\"\n        });\n    }\n\n    public static list(value: Type): Type {\n        return new this({\n            type: \"list\",\n            value\n        });\n    }\n\n    public static long(): Type {\n        return new this({\n            type: \"long\"\n        });\n    }\n\n    public static map(keyType: Type, valueType: Type): Type {\n        return new this({\n            type: \"map\",\n            keyType,\n            valueType\n        });\n    }\n\n    public static object(): Type {\n        return new this({\n            type: \"object\"\n        });\n    }\n\n    public static optional(value: Type): Type {\n        // Avoids double optional.\n        if (this.isAlreadyOptional(value)) {\n            return value;\n        }\n        return new this({\n            type: \"optional\",\n            value\n        });\n    }\n\n    public static reference(value: ClassReference): Type {\n        return new this({\n            type: \"reference\",\n            value\n        });\n    }\n\n    public static generic(value: ClassReference, parameters: Type[]): Type {\n        return new this({\n            type: \"generic\",\n            value,\n            parameters\n        });\n    }\n\n    public static set(value: Type): Type {\n        return new this({\n            type: \"set\",\n            value\n        });\n    }\n\n    public static string(): Type {\n        return new this({\n            type: \"string\"\n        });\n    }\n\n    public static uuid(): Type {\n        return new this({\n            type: \"uuid\"\n        });\n    }\n\n    public static void(): Type {\n        return new this({\n            type: \"void\"\n        });\n    }\n\n    public static iterable(value: Type): Type {\n        return new this({\n            type: \"iterable\",\n            value\n        });\n    }\n\n    public static inputStream(): Type {\n        return new this({\n            type: \"inputStream\"\n        });\n    }\n\n    private writeList({ writer, list }: { writer: Writer; list: List }): void {\n        writer.writeNode(ListClassReference);\n        writer.write(\"<\");\n        list.value.write(writer);\n        writer.write(\">\");\n    }\n\n    private writeMap({ writer, map }: { writer: Writer; map: Map }): void {\n        writer.writeNode(MapClassReference);\n        writer.write(\"<\");\n        map.keyType.write(writer);\n        writer.write(\", \");\n        map.valueType.write(writer);\n        writer.write(\">\");\n    }\n\n    private writeOptional({ writer, optional }: { writer: Writer; optional: Optional }): void {\n        writer.writeNode(OptionalClassReference);\n        writer.write(\"<\");\n        optional.value.write(writer);\n        writer.write(\">\");\n    }\n\n    private writeIterable({ writer, iterable }: { writer: Writer; iterable: Iterable }): void {\n        writer.writeNode(IterableClassReference);\n        writer.write(\"<\");\n        iterable.value.write(writer);\n        writer.write(\">\");\n    }\n\n    private writeSet({ writer, set }: { writer: Writer; set: Set }): void {\n        writer.writeNode(SetClassReference);\n        writer.write(\"<\");\n        set.value.write(writer);\n        writer.write(\">\");\n    }\n\n    private static isAlreadyOptional(value: Type) {\n        return value.internalType.type === \"optional\";\n    }\n}\n\nexport const ArraysClassReference = new ClassReference({\n    name: \"Arrays\",\n    packageName: \"java.util\"\n});\n\nexport const BigIntegerClassReference = new ClassReference({\n    name: \"BigInteger\",\n    packageName: \"java.math\"\n});\n\nexport const HashMapClassReference = new ClassReference({\n    name: \"HashMap\",\n    packageName: \"java.util\"\n});\n\nexport const ListClassReference = new ClassReference({\n    name: \"List\",\n    packageName: \"java.util\"\n});\n\nexport const MapClassReference = new ClassReference({\n    name: \"Map\",\n    packageName: \"java.util\"\n});\n\nexport const OffsetDateTimeClassReference = new ClassReference({\n    name: \"OffsetDateTime\",\n    packageName: \"java.time\"\n});\n\nexport const OptionalClassReference = new ClassReference({\n    name: \"Optional\",\n    packageName: \"java.util\"\n});\n\nexport const SetClassReference = new ClassReference({\n    name: \"Set\",\n    packageName: \"java.util\"\n});\n\nexport const UUIDClassReference = new ClassReference({\n    name: \"UUID\",\n    packageName: \"java.util\"\n});\n\nexport const InputStreamClassReference = new ClassReference({\n    name: \"InputStream\",\n    packageName: \"java.io\"\n});\n\nexport const IterableClassReference = new ClassReference({\n    name: \"Iterable\",\n    packageName: \"java.lang\"\n});\n","import { CodeBlock as CommonCodeBlock } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg = CommonCodeBlock.Arg<Writer>;\n}\n\nexport class CodeBlock extends AstNode {\n    private arg: CodeBlock.Arg;\n\n    public constructor(arg: CodeBlock.Arg) {\n        super();\n        this.arg = arg;\n    }\n\n    public write(writer: Writer): void {\n        const commonCodeBlock = new CommonCodeBlock(this.arg);\n        return commonCodeBlock.write(writer);\n    }\n}\n","import { Access } from \"./Access.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Parameter } from \"./Parameter.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Method {\n    interface Args {\n        /* The name of the method */\n        name: string;\n        /* The access level of the method */\n        access: Access;\n        /* The parameters of the method */\n        parameters: Parameter[];\n        /* The body of the method */\n        body?: AstNode;\n        /* The return type of the method */\n        return_?: Type;\n        /* Whether the method is static */\n        static_?: boolean;\n    }\n}\n\nexport class Method extends AstNode {\n    private name: string;\n    private access: Access;\n    private parameters: Parameter[];\n    private body: AstNode | undefined;\n    private return_: Type | undefined;\n    private static_: boolean;\n\n    constructor({ name, access, parameters, body, static_, return_ }: Method.Args) {\n        super();\n\n        this.name = name;\n        this.access = access;\n        this.parameters = parameters;\n        this.body = body;\n        this.return_ = return_;\n        this.static_ = static_ ?? false;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(`${this.access} `);\n        if (this.static_) {\n            writer.write(\"static \");\n        }\n\n        if (this.return_ != null) {\n            writer.writeNode(this.return_);\n        } else {\n            writer.write(\"void\");\n        }\n\n        writer.write(` ${this.name}`);\n\n        if (this.parameters.length === 0) {\n            writer.write(\"()\");\n        } else if (this.parameters.length === 1) {\n            writer.write(\"(\");\n            if (this.parameters[0] == null) {\n                throw new Error(\"Cannot render parameter \" + this.parameters[0]);\n            }\n            writer.writeNode(this.parameters[0]);\n            writer.write(\")\");\n        } else {\n            writer.writeLine(\"(\");\n            writer.indent();\n            this.parameters.forEach((parameter, index) => {\n                if (index > 0) {\n                    writer.writeLine(\", \");\n                }\n                writer.writeNode(parameter);\n            });\n            writer.dedent();\n            writer.write(\")\");\n        }\n\n        if (this.body == null) {\n            writer.write(\";\");\n            return;\n        }\n\n        writer.writeLine(\" {\");\n        writer.indent();\n        writer.writeNode(this.body);\n        writer.writeNewLineIfLastLineNot();\n        writer.dedent();\n        writer.write(\"}\");\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { writeArguments } from \"./utils/writeArguments.js\";\n\nexport declare namespace MethodInvocation {\n    interface Args {\n        /* The instance to invoke the method on */\n        on: AstNode;\n        /* The method to invoke */\n        method: string;\n        /* The arguments passed to the method */\n        arguments_: AstNode[];\n    }\n}\n\nexport class MethodInvocation extends AstNode {\n    private on: AstNode;\n    private method: string;\n    private arguments_: AstNode[];\n\n    constructor({ method, arguments_, on }: MethodInvocation.Args) {\n        super();\n\n        this.on = on;\n        this.method = method;\n        this.arguments_ = arguments_;\n    }\n\n    public write(writer: Writer): void {\n        this.on.write(writer);\n        writer.write(\".\");\n        writer.write(this.method);\n        writeArguments({ writer, arguments_: this.arguments_ });\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Parameter {\n    interface Args {\n        /* The name of the parameter */\n        name: string;\n        /* The type of the parameter */\n        type: Type;\n    }\n}\n\nexport class Parameter extends AstNode {\n    public readonly name: string;\n    public readonly type: Type;\n\n    constructor({ name, type }: Parameter.Args) {\n        super();\n        this.name = name;\n        this.type = type;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.type);\n        writer.write(` ${this.name}`);\n    }\n}\n","import { Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever, extractErrorMessage } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { java } from \"@fern-api/java-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n    interface Args {\n        typeReference: FernIr.dynamic.TypeReference;\n        value: unknown;\n        as?: ConvertedAs;\n        inUndiscriminatedUnion?: boolean;\n        // Set to true when we've detected a nested optional+nullable type that should\n        // collapse into OptionalNullable<T> (only relevant when collapse-optional-nullable is enabled).\n        isCollapsedOptionalNullable?: boolean;\n    }\n\n    // Identifies what the type is being converted as, which sometimes influences how\n    // the type is instantiated.\n    type ConvertedAs = \"mapKey\" | \"mapValue\" | \"request\";\n}\n\nexport class DynamicTypeLiteralMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    private usesOptionalNullable(): boolean {\n        return this.context.customConfig?.[\"collapse-optional-nullable\"] === true;\n    }\n\n    private wrapInOptionalIfNotNop(\n        value: java.TypeLiteral,\n        useOf: boolean = false,\n        isCollapsedOptionalNullable: boolean = false\n    ): java.TypeLiteral {\n        if (java.TypeLiteral.isNop(value)) {\n            return value;\n        }\n        if (isCollapsedOptionalNullable) {\n            return this.context.getOptionalNullableOf(value);\n        }\n        return java.TypeLiteral.optional({ value, useOf });\n    }\n\n    public convert(args: DynamicTypeLiteralMapper.Args): java.TypeLiteral {\n        // eslint-disable-next-line eqeqeq\n        if (args.value === null) {\n            if (this.context.isNullable(args.typeReference)) {\n                return this.context.getNullableOfNull();\n            }\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Expected non-null value, but got null\"\n            });\n            return java.TypeLiteral.nop();\n        }\n        if (args.value === undefined) {\n            return java.TypeLiteral.nop();\n        }\n        switch (args.typeReference.type) {\n            case \"list\":\n                return this.convertList({ list: args.typeReference.value, value: args.value, as: args.as });\n            case \"literal\":\n                return this.convertLiteral({ literal: args.typeReference.value, value: args.value });\n            case \"map\":\n                return this.convertMap({ map: args.typeReference, value: args.value, as: args.as });\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return this.convertNamed({\n                    named,\n                    value: args.value,\n                    as: args.as,\n                    inUndiscriminatedUnion: args.inUndiscriminatedUnion\n                });\n            }\n            case \"nullable\":\n            case \"optional\": {\n                if (\n                    args.value === undefined ||\n                    (typeof args.value === \"object\" &&\n                        args.value !== null &&\n                        Object.keys(args.value).length === 0 &&\n                        args.typeReference.value.type === \"named\")\n                ) {\n                    // Use OptionalNullable.absent() only when the type is truly a collapsed\n                    // optional+nullable (either detected here or propagated from outer recursion).\n                    const isCollapsed =\n                        args.isCollapsedOptionalNullable ||\n                        (this.usesOptionalNullable() &&\n                            (args.typeReference.value.type === \"optional\" ||\n                                args.typeReference.value.type === \"nullable\"));\n                    if (isCollapsed) {\n                        return this.context.getOptionalNullableAbsent();\n                    } else {\n                        return java.TypeLiteral.reference(\n                            java.invokeMethod({\n                                on: java.classReference({\n                                    name: \"Optional\",\n                                    packageName: \"java.util\"\n                                }),\n                                method: \"empty\",\n                                arguments_: []\n                            })\n                        );\n                    }\n                }\n\n                if (args.typeReference.value.type === \"list\") {\n                    const listLiteral = this.convertList({ list: args.typeReference.value.value, value: args.value });\n                    return this.wrapInOptionalIfNotNop(listLiteral, true, args.isCollapsedOptionalNullable === true);\n                }\n\n                // When using OptionalNullable mode and we have nested optional/nullable,\n                // skip wrapping since they collapse into a single OptionalNullable<T>\n                if (\n                    this.usesOptionalNullable() &&\n                    (args.typeReference.value.type === \"optional\" || args.typeReference.value.type === \"nullable\")\n                ) {\n                    return this.convert({\n                        typeReference: args.typeReference.value,\n                        value: args.value,\n                        as: args.as,\n                        inUndiscriminatedUnion: args.inUndiscriminatedUnion,\n                        isCollapsedOptionalNullable: true\n                    });\n                }\n\n                const convertedValue = this.convert({\n                    typeReference: args.typeReference.value,\n                    value: args.value,\n                    as: args.as,\n                    inUndiscriminatedUnion: args.inUndiscriminatedUnion\n                });\n                // TODO(amckinney): The Java generator produces Map<T, Optional<U>> whenever the value is an optional.\n                //\n                // This is difficult to use in practice - we should update this to unbox the map values and remove this\n                // flag.\n                // When in an undiscriminated union, we always use Optional.of() for optional types\n                const useOf = args.as === \"mapValue\" || args.inUndiscriminatedUnion === true;\n                return this.wrapInOptionalIfNotNop(convertedValue, useOf, args.isCollapsedOptionalNullable === true);\n            }\n            case \"primitive\":\n                return this.convertPrimitive({ primitive: args.typeReference.value, value: args.value, as: args.as });\n            case \"set\":\n                return this.convertSet({ set: args.typeReference.value, value: args.value, as: args.as });\n            case \"unknown\":\n                return this.convertUnknown({ value: args.value });\n            default:\n                assertNever(args.typeReference);\n        }\n    }\n\n    private convertList({\n        list,\n        value,\n        as\n    }: {\n        list: FernIr.dynamic.TypeReference;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): java.TypeLiteral {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return java.TypeLiteral.nop();\n        }\n\n        const isItemOptional = list.type === \"optional\" || list.type === \"nullable\";\n\n        return java.TypeLiteral.list({\n            valueType: this.context.dynamicTypeMapper.convert({ typeReference: list }),\n            values: value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    if (isItemOptional) {\n                        const itemValue = this.convert({ typeReference: list.value, value: v, as });\n                        return this.wrapInOptionalIfNotNop(itemValue, true);\n                    }\n                    return this.convert({ typeReference: list, value: v, as });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }),\n            isParameter: true // For dynamic snippets, we're generating method parameters\n        });\n    }\n\n    private convertLiteral({\n        literal,\n        value\n    }: {\n        literal: FernIr.dynamic.LiteralType;\n        value: unknown;\n    }): java.TypeLiteral {\n        switch (literal.type) {\n            case \"boolean\": {\n                const bool = this.context.getValueAsBoolean({ value });\n                if (bool == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.boolean(bool);\n            }\n            case \"string\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.string(str);\n            }\n            default:\n                assertNever(literal);\n        }\n    }\n\n    private convertSet({\n        set,\n        value,\n        as\n    }: {\n        set: FernIr.dynamic.TypeReference;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): java.TypeLiteral {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return java.TypeLiteral.nop();\n        }\n        return java.TypeLiteral.set({\n            valueType: this.context.dynamicTypeMapper.convert({ typeReference: set }),\n            values: value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: set, value: v, as });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertMap({\n        map,\n        value,\n        as\n    }: {\n        map: FernIr.dynamic.MapType;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): java.TypeLiteral {\n        if (typeof value !== \"object\" || value == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n            });\n            return java.TypeLiteral.nop();\n        }\n        return java.TypeLiteral.map({\n            keyType: this.context.dynamicTypeMapper.convert({ typeReference: map.key }),\n            valueType: this.context.dynamicTypeMapper.convert({ typeReference: map.value }),\n            entries: Object.entries(value).map(([key, value]) => {\n                this.context.errors.scope(key);\n                try {\n                    return {\n                        key: this.convert({ typeReference: map.key, value: key, as: \"mapKey\" }),\n                        value: this.convert({\n                            typeReference: map.value,\n                            value,\n                            as: \"mapValue\"\n                        })\n                    };\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertNamed({\n        named,\n        value,\n        as,\n        inUndiscriminatedUnion\n    }: {\n        named: FernIr.dynamic.NamedType;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n        inUndiscriminatedUnion?: boolean;\n    }): java.TypeLiteral {\n        switch (named.type) {\n            case \"alias\":\n                if (named.typeReference.type === \"unknown\") {\n                    const convertedValue = this.convert({\n                        typeReference: named.typeReference,\n                        value,\n                        as,\n                        inUndiscriminatedUnion\n                    });\n                    return java.TypeLiteral.reference(\n                        java.invokeMethod({\n                            on: this.context.getJavaClassReferenceFromDeclaration({\n                                declaration: named.declaration\n                            }),\n                            method: \"of\",\n                            arguments_: [convertedValue]\n                        })\n                    );\n                }\n                return this.convert({ typeReference: named.typeReference, value, as, inUndiscriminatedUnion });\n            case \"discriminatedUnion\":\n                return this.convertDiscriminatedUnion({\n                    discriminatedUnion: named,\n                    value\n                });\n            case \"enum\":\n                return this.convertEnum({ enum_: named, value });\n            case \"object\":\n                return this.convertObject({ object_: named, value, as, inUndiscriminatedUnion });\n            case \"undiscriminatedUnion\":\n                // Don't pass inUndiscriminatedUnion here - we're AT the undiscriminated union level,\n                // not within it. The flag should only apply to the variants within the union.\n                return this.convertUndiscriminatedUnion({ undiscriminatedUnion: named, value });\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertDiscriminatedUnion({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): java.TypeLiteral {\n        const classReference = this.context.getJavaClassReferenceFromDeclaration({\n            declaration: discriminatedUnion.declaration\n        });\n        const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n            discriminatedUnion,\n            value\n        });\n        if (discriminatedUnionTypeInstance == null) {\n            return java.TypeLiteral.nop();\n        }\n        const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n        switch (unionVariant.type) {\n            case \"samePropertiesAsObject\": {\n                const named = this.context.resolveNamedType({\n                    typeId: unionVariant.typeId\n                });\n                if (named == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.reference(\n                    java.invokeMethod({\n                        on: classReference,\n                        method: this.context.getPropertyName(unionVariant.discriminantValue.name),\n                        arguments_: [this.convertNamed({ named, value: discriminatedUnionTypeInstance.value })]\n                    })\n                );\n            }\n            case \"singleProperty\": {\n                const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n                if (record == null) {\n                    return java.TypeLiteral.nop();\n                }\n                try {\n                    this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n                    // For primitive union variants, the property key is always \"value\"\n                    const propertyKey = \"value\";\n                    return java.TypeLiteral.reference(\n                        java.invokeMethod({\n                            on: classReference,\n                            method: this.context.getPropertyName(unionVariant.discriminantValue.name),\n                            arguments_: [\n                                this.convert({\n                                    typeReference: unionVariant.typeReference,\n                                    value: record[propertyKey]\n                                })\n                            ]\n                        })\n                    );\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }\n            case \"noProperties\":\n                return java.TypeLiteral.reference(\n                    java.invokeMethod({\n                        on: classReference,\n                        method: this.context.getPropertyName(unionVariant.discriminantValue.name),\n                        arguments_: []\n                    })\n                );\n            default:\n                assertNever(unionVariant);\n        }\n    }\n\n    private convertObject({\n        object_,\n        value,\n        as,\n        inUndiscriminatedUnion\n    }: {\n        object_: FernIr.dynamic.ObjectType;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n        inUndiscriminatedUnion?: boolean;\n    }): java.TypeLiteral {\n        const properties = this.context.associateByWireValue({\n            parameters: object_.properties,\n            values: this.context.getRecord(value) ?? {}\n        });\n        // Add missing required properties with default values to ensure valid staged builder code.\n        // Java uses type-state staged builders where required fields must be set before build() can\n        // be called. Without this, an empty value like {} would generate .builder().build() which\n        // fails to compile when the builder has required stages.\n        //\n        // When inside undiscriminated union matching, throw on missing required properties instead\n        // of adding defaults. This allows the matching to reject incorrect variants and try others.\n        const existingWireValues = new Set(properties.map((p) => p.name.wireValue));\n        for (const param of object_.properties) {\n            if (!existingWireValues.has(param.name.wireValue) && !this.context.isOptional(param.typeReference)) {\n                if (inUndiscriminatedUnion === true) {\n                    throw new Error(`Required property \"${param.name.wireValue}\" is missing from value`);\n                }\n                const defaultValue = this.getDefaultValueForTypeReference(param.typeReference);\n                if (defaultValue !== undefined) {\n                    properties.push({\n                        name: param.name,\n                        typeReference: param.typeReference,\n                        value: defaultValue\n                    });\n                }\n            }\n        }\n        // Re-sort all properties (including newly added defaults) to match schema declaration order.\n        // Java staged builders require method calls in the exact order defined by the schema.\n        const paramOrderMap = new Map<string, number>();\n        object_.properties.forEach((param, index) => {\n            paramOrderMap.set(param.name.wireValue, index);\n        });\n        properties.sort(\n            (a, b) => (paramOrderMap.get(a.name.wireValue) ?? 0) - (paramOrderMap.get(b.name.wireValue) ?? 0)\n        );\n        const filteredProperties =\n            as === \"request\"\n                ? properties.filter((property) => !this.context.isDirectLiteral(property.typeReference))\n                : properties;\n        const builderParameters: java.BuilderParameter[] = [];\n        for (const property of filteredProperties) {\n            this.context.errors.scope(property.name.wireValue);\n            try {\n                const convertedValue = this.convert({\n                    typeReference: property.typeReference,\n                    value: property.value,\n                    as,\n                    inUndiscriminatedUnion\n                });\n                // If a required property converts to nop (e.g., invalid enum value for the wrong\n                // union variant), throw to reject this variant during undiscriminated union matching.\n                // Outside of union matching, just skip the nop value to produce best-effort output.\n                if (java.TypeLiteral.isNop(convertedValue) && !this.context.isOptional(property.typeReference)) {\n                    if (inUndiscriminatedUnion === true) {\n                        throw new Error(`Required property \"${property.name.wireValue}\" could not be converted`);\n                    }\n                    continue;\n                }\n                builderParameters.push({\n                    name: this.context.getMethodName(property.name.name),\n                    value: convertedValue\n                });\n            } finally {\n                this.context.errors.unscope();\n            }\n        }\n        return java.TypeLiteral.builder({\n            classReference: this.context.getJavaClassReferenceFromDeclaration({\n                declaration: object_.declaration\n            }),\n            parameters: builderParameters\n        });\n    }\n\n    private getDefaultValueForTypeReference(typeReference: FernIr.dynamic.TypeReference): unknown {\n        switch (typeReference.type) {\n            case \"primitive\":\n                return this.getDefaultPrimitiveValue(typeReference.value);\n            case \"nullable\":\n                return null;\n            case \"optional\":\n                return undefined;\n            case \"list\":\n            case \"set\":\n                return [];\n            case \"map\":\n                return {};\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: typeReference.value });\n                if (named == null) {\n                    return {};\n                }\n                switch (named.type) {\n                    case \"enum\":\n                        if (named.values.length > 0) {\n                            const firstValue = named.values[0];\n                            return firstValue != null ? firstValue.wireValue : undefined;\n                        }\n                        return undefined;\n                    case \"object\":\n                    case \"alias\":\n                        return {};\n                    case \"discriminatedUnion\":\n                    case \"undiscriminatedUnion\":\n                        // Cannot synthesize valid defaults for union types\n                        return undefined;\n                    default:\n                        return {};\n                }\n            }\n            case \"literal\":\n                return typeReference.value.value;\n            case \"unknown\":\n                return {};\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    private getDefaultPrimitiveValue(primitive: FernIr.dynamic.PrimitiveTypeV1): unknown {\n        switch (primitive) {\n            case \"STRING\":\n                return \"string\";\n            case \"INTEGER\":\n            case \"UINT\":\n                return 1;\n            case \"LONG\":\n            case \"UINT_64\":\n                return 1000000;\n            case \"FLOAT\":\n            case \"DOUBLE\":\n                return 1.1;\n            case \"BOOLEAN\":\n                return true;\n            case \"DATE\":\n                return \"2024-01-15\";\n            case \"DATE_TIME\":\n                return \"2024-01-15T09:30:00Z\";\n            case \"UUID\":\n                return \"d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32\";\n            case \"BASE_64\":\n                return \"SGVsbG8gd29ybGQh\";\n            case \"BIG_INTEGER\":\n                return \"123456789\";\n            default: {\n                const primitiveStr: string = primitive;\n                if (primitiveStr === \"DATE_TIME_RFC_2822\") {\n                    return \"Tue, 15 Jan 2024 09:30:00 +0000\";\n                }\n                return \"string\";\n            }\n        }\n    }\n\n    private convertEnum({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): java.TypeLiteral {\n        const name = this.getEnumValueName({ enum_, value });\n        if (name == null) {\n            return java.TypeLiteral.nop();\n        }\n        return java.TypeLiteral.enum_({\n            classReference: this.context.getJavaClassReferenceFromDeclaration({\n                declaration: enum_.declaration\n            }),\n            value: name\n        });\n    }\n\n    private getEnumValueName({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected enum value string, got: ${typeof value}`\n            });\n            return undefined;\n        }\n        const enumValue = enum_.values.find((v) => v.wireValue === value);\n        if (enumValue == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `An enum value named \"${value}\" does not exist in this context`\n            });\n            return undefined;\n        }\n        return this.context.getEnumName(enumValue.name);\n    }\n\n    private convertUndiscriminatedUnion({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): java.TypeLiteral {\n        const result = this.findMatchingUndiscriminatedUnionType({\n            undiscriminatedUnion,\n            value\n        });\n        if (result == null) {\n            return java.TypeLiteral.nop();\n        }\n        if (this.context.isPrimitive(result.valueTypeReference)) {\n            // Primitive types overload the 'of' method rather than\n            // defining a separate method from the type.\n            return java.TypeLiteral.reference(\n                java.invokeMethod({\n                    on: this.context.getJavaClassReferenceFromDeclaration({\n                        declaration: undiscriminatedUnion.declaration\n                    }),\n                    method: \"of\",\n                    arguments_: [result.typeInstantiation]\n                })\n            );\n        }\n        // Use simple 'of' method name for consistency across all union factory methods\n        // This matches the Java SDK's generated code pattern\n        return java.TypeLiteral.reference(\n            java.invokeMethod({\n                on: this.context.getJavaClassReferenceFromDeclaration({\n                    declaration: undiscriminatedUnion.declaration\n                }),\n                method: \"of\",\n                arguments_: [result.typeInstantiation]\n            })\n        );\n    }\n\n    private findMatchingUndiscriminatedUnionType({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): { valueTypeReference: FernIr.dynamic.TypeReference; typeInstantiation: java.TypeLiteral } | undefined {\n        const attemptedVariants: string[] = [];\n        const variantErrors: string[] = [];\n\n        for (const typeReference of undiscriminatedUnion.types) {\n            const errorsBefore = this.context.errors.size();\n            try {\n                attemptedVariants.push(JSON.stringify(typeReference));\n                const typeInstantiation = this.convert({\n                    typeReference,\n                    value,\n                    inUndiscriminatedUnion: true\n                });\n\n                if (java.TypeLiteral.isNop(typeInstantiation)) {\n                    this.context.errors.truncate(errorsBefore);\n                    continue;\n                }\n\n                return { valueTypeReference: typeReference, typeInstantiation };\n            } catch (e) {\n                this.context.errors.truncate(errorsBefore);\n                variantErrors.push(`Type ${JSON.stringify(typeReference)}: ${extractErrorMessage(e)}`);\n                continue;\n            }\n        }\n\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value. Tried ${attemptedVariants.length} variants. Errors: ${variantErrors.join(\"; \")}`\n        });\n\n        // Instead of returning undefined (which causes invalid code generation),\n        // throw an error to fail fast with a clear message\n        const unionName = undiscriminatedUnion.declaration.name ?? \"UnknownUnion\";\n        const detailedErrors = variantErrors.map((error, index) => `  ${index + 1}. ${error}`).join(\"\\n\");\n        throw new Error(\n            `Failed to match undiscriminated union \"${unionName}\" for ${typeof value} value.\\n` +\n                `Value: ${JSON.stringify(value)}\\n` +\n                `Attempted ${attemptedVariants.length} variants:\\n${detailedErrors}\\n\\n` +\n                `This prevents invalid snippet code generation that would cause formatter errors.`\n        );\n    }\n\n    private getUndiscriminatedUnionFieldName({\n        typeReference\n    }: {\n        typeReference: FernIr.dynamic.TypeReference;\n    }): string | undefined {\n        switch (typeReference.type) {\n            case \"list\":\n                return this.getUndiscriminatedUnionFieldNameForList({ list: typeReference });\n            case \"literal\":\n                return this.getUndiscriminatedUnionFieldNameForLiteral({ literal: typeReference.value });\n            case \"map\":\n                return this.getUndiscriminatedUnionFieldNameForMap({ map: typeReference });\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: typeReference.value });\n                if (named == null) {\n                    return undefined;\n                }\n                return this.context.getClassName(named.declaration.name);\n            }\n            case \"optional\":\n                return this.getUndiscriminatedUnionFieldNameForOptional({ typeReference });\n            case \"nullable\":\n                return this.getUndiscriminatedUnionFieldNameForNullable({ typeReference });\n            case \"primitive\":\n                return this.getUndiscriminatedUnionFieldNameForPrimitive({ primitive: typeReference.value });\n            case \"set\":\n                return this.getUndiscriminatedUnionFieldNameForSet({ set: typeReference });\n            case \"unknown\":\n                return \"Unknown\";\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    private getUndiscriminatedUnionFieldNameForList({\n        list\n    }: {\n        list: FernIr.dynamic.TypeReference.List;\n    }): string | undefined {\n        const fieldName = this.getUndiscriminatedUnionFieldName({ typeReference: list });\n        if (fieldName == null) {\n            return undefined;\n        }\n        return `ListOf${fieldName}`;\n    }\n\n    private getUndiscriminatedUnionFieldNameForMap({ map }: { map: FernIr.dynamic.MapType }): string | undefined {\n        const keyFieldName = this.getUndiscriminatedUnionFieldName({ typeReference: map.key });\n        if (keyFieldName == null) {\n            return undefined;\n        }\n        const valueFieldName = this.getUndiscriminatedUnionFieldName({ typeReference: map.value });\n        if (valueFieldName == null) {\n            return undefined;\n        }\n        return `MapOf${keyFieldName}To${valueFieldName}`;\n    }\n\n    private getUndiscriminatedUnionFieldNameForOptional({\n        typeReference\n    }: {\n        typeReference: FernIr.dynamic.TypeReference.Optional | FernIr.dynamic.TypeReference.Nullable;\n    }): string | undefined {\n        const fieldName = this.getUndiscriminatedUnionFieldName({ typeReference });\n        if (fieldName == null) {\n            return undefined;\n        }\n        return `Optional${fieldName}`;\n    }\n\n    private getUndiscriminatedUnionFieldNameForNullable({\n        typeReference\n    }: {\n        typeReference: FernIr.dynamic.TypeReference.Optional | FernIr.dynamic.TypeReference.Nullable;\n    }): string | undefined {\n        const fieldName = this.getUndiscriminatedUnionFieldName({ typeReference });\n        if (fieldName == null) {\n            return undefined;\n        }\n        return `Nullable${fieldName}`;\n    }\n\n    private getUndiscriminatedUnionFieldNameForSet({\n        set\n    }: {\n        set: FernIr.dynamic.TypeReference.Set;\n    }): string | undefined {\n        const fieldName = this.getUndiscriminatedUnionFieldName({ typeReference: set });\n        if (fieldName == null) {\n            return undefined;\n        }\n        return `SetOf${fieldName}`;\n    }\n\n    private getUndiscriminatedUnionFieldNameForLiteral({\n        literal: _literal\n    }: {\n        literal: FernIr.dynamic.LiteralType;\n    }): string | undefined {\n        // The Java SDK doesn't support literal types here.\n        return undefined;\n    }\n\n    private getUndiscriminatedUnionFieldNameForPrimitive({\n        primitive\n    }: {\n        primitive: FernIr.dynamic.PrimitiveTypeV1;\n    }): string {\n        switch (primitive) {\n            case \"INTEGER\":\n            case \"UINT\":\n                return \"Integer\";\n            case \"LONG\":\n            case \"UINT_64\":\n                return \"Long\";\n            case \"FLOAT\":\n                return \"Float\";\n            case \"DOUBLE\":\n                return \"Double\";\n            case \"BOOLEAN\":\n                return \"Boolean\";\n            case \"BIG_INTEGER\":\n                return \"BigInteger\";\n            case \"STRING\":\n                return \"String\";\n            case \"UUID\":\n                return \"Uuid\";\n            case \"DATE\":\n                return \"Date\";\n            case \"DATE_TIME\":\n                return \"DateTime\";\n            case \"BASE_64\":\n                return \"Base64\";\n            default: {\n                // Forward-compatible: handle primitive types not yet in the published SDK\n                const primitiveStr: string = primitive;\n                if (primitiveStr === \"DATE_TIME_RFC_2822\") {\n                    return \"DateTimeRfc2822\";\n                }\n                assertNever(primitive);\n            }\n        }\n    }\n\n    private convertUnknown({ value }: { value: unknown }): java.TypeLiteral {\n        if (this.context.customConfig?.[\"generate-unknown-as-json-node\"] === true) {\n            return this.convertToJsonNode({ value });\n        }\n        return java.TypeLiteral.unknown(value);\n    }\n\n    private convertToJsonNode({ value }: { value: unknown }): java.TypeLiteral {\n        const objectMappersClass = java.classReference({\n            name: \"ObjectMappers\",\n            packageName: this.context.getCorePackageName()\n        });\n\n        // For primitive values, wrap directly in valueToTree\n        if (typeof value === \"string\") {\n            return java.TypeLiteral.reference(\n                java.invokeMethod({\n                    on: java.codeblock((writer) => {\n                        writer.writeNode(objectMappersClass);\n                        writer.write(\".JSON_MAPPER\");\n                    }),\n                    method: \"valueToTree\",\n                    arguments_: [java.TypeLiteral.string(value)]\n                })\n            );\n        }\n\n        if (typeof value === \"number\") {\n            return java.TypeLiteral.reference(\n                java.invokeMethod({\n                    on: java.codeblock((writer) => {\n                        writer.writeNode(objectMappersClass);\n                        writer.write(\".JSON_MAPPER\");\n                    }),\n                    method: \"valueToTree\",\n                    arguments_: [java.TypeLiteral.integer(value)]\n                })\n            );\n        }\n\n        if (typeof value === \"boolean\") {\n            return java.TypeLiteral.reference(\n                java.invokeMethod({\n                    on: java.codeblock((writer) => {\n                        writer.writeNode(objectMappersClass);\n                        writer.write(\".JSON_MAPPER\");\n                    }),\n                    method: \"valueToTree\",\n                    arguments_: [java.TypeLiteral.boolean(value)]\n                })\n            );\n        }\n\n        if (value === null) {\n            return java.TypeLiteral.reference(\n                java.invokeMethod({\n                    on: java.codeblock((writer) => {\n                        writer.writeNode(objectMappersClass);\n                        writer.write(\".JSON_MAPPER\");\n                    }),\n                    method: \"valueToTree\",\n                    arguments_: [java.TypeLiteral.raw(java.codeblock(\"null\"))]\n                })\n            );\n        }\n\n        if (Array.isArray(value)) {\n            return java.TypeLiteral.reference(\n                java.invokeMethod({\n                    on: java.codeblock((writer) => {\n                        writer.writeNode(objectMappersClass);\n                        writer.write(\".JSON_MAPPER\");\n                    }),\n                    method: \"valueToTree\",\n                    arguments_: [\n                        java.TypeLiteral.list({\n                            valueType: java.Type.object(),\n                            values: value.map((v) => java.TypeLiteral.unknown(v)),\n                            isParameter: true\n                        })\n                    ]\n                })\n            );\n        }\n\n        if (typeof value === \"object\" && value !== null) {\n            // For objects, create a map and wrap in valueToTree\n            return java.TypeLiteral.reference(\n                java.invokeMethod({\n                    on: java.codeblock((writer) => {\n                        writer.writeNode(objectMappersClass);\n                        writer.write(\".JSON_MAPPER\");\n                    }),\n                    method: \"valueToTree\",\n                    arguments_: [java.TypeLiteral.unknown(value)]\n                })\n            );\n        }\n\n        // Fallback to regular unknown handling\n        return java.TypeLiteral.unknown(value);\n    }\n\n    private convertPrimitive({\n        primitive,\n        value,\n        as\n    }: {\n        primitive: FernIr.dynamic.PrimitiveTypeV1;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): java.TypeLiteral {\n        switch (primitive) {\n            case \"INTEGER\":\n            case \"UINT\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.integer(num);\n            }\n            case \"LONG\":\n            case \"UINT_64\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.long(num);\n            }\n            case \"FLOAT\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.float(num);\n            }\n            case \"DOUBLE\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.double(num);\n            }\n            case \"BOOLEAN\": {\n                const bool = this.getValueAsBoolean({ value, as });\n                if (bool == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.boolean(bool);\n            }\n            case \"STRING\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.string(str);\n            }\n            case \"DATE\": {\n                const date = this.context.getValueAsString({ value });\n                if (date == null) {\n                    return java.TypeLiteral.nop();\n                }\n                if (this.context.customConfig?.[\"use-local-date-for-dates\"] === true) {\n                    return java.TypeLiteral.date(date);\n                }\n                return java.TypeLiteral.string(date);\n            }\n            case \"DATE_TIME\": {\n                const dateTime = this.context.getValueAsString({ value });\n                if (dateTime == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.dateTime(dateTime);\n            }\n            case \"UUID\": {\n                const uuid = this.context.getValueAsString({ value });\n                if (uuid == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.uuid(uuid);\n            }\n            case \"BASE_64\": {\n                const base64 = this.context.getValueAsString({ value });\n                if (base64 == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.bytes(base64);\n            }\n            case \"BIG_INTEGER\": {\n                const bigInt = this.context.getValueAsString({ value });\n                if (bigInt == null) {\n                    return java.TypeLiteral.nop();\n                }\n                return java.TypeLiteral.bigInteger(bigInt);\n            }\n            default: {\n                // Forward-compatible: handle primitive types not yet in the published SDK\n                const primitiveStr: string = primitive;\n                if (primitiveStr === \"DATE_TIME_RFC_2822\") {\n                    const dateTime = this.context.getValueAsString({ value });\n                    if (dateTime == null) {\n                        return java.TypeLiteral.nop();\n                    }\n                    return java.TypeLiteral.dateTime(dateTime);\n                }\n                assertNever(primitive);\n            }\n        }\n    }\n\n    private getValueAsNumber({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): number | undefined {\n        const num = as === \"mapKey\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n        return this.context.getValueAsNumber({ value: num });\n    }\n\n    private getValueAsBoolean({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): boolean | undefined {\n        const bool =\n            as === \"mapKey\"\n                ? typeof value === \"string\"\n                    ? value === \"true\"\n                    : value === \"false\"\n                      ? false\n                      : value\n                : value;\n        return this.context.getValueAsBoolean({ value: bool });\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { java } from \"@fern-api/java-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport declare namespace DynamicTypeMapper {\n    interface Args {\n        typeReference: FernIr.dynamic.TypeReference;\n    }\n}\n\nexport class DynamicTypeMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public convert(args: DynamicTypeMapper.Args): java.Type {\n        switch (args.typeReference.type) {\n            case \"list\":\n                return java.Type.list(this.convert({ typeReference: args.typeReference }));\n            case \"literal\":\n                return this.convertLiteral({ literal: args.typeReference.value });\n            case \"map\": {\n                return java.Type.map(\n                    this.convert({ typeReference: args.typeReference.key }),\n                    this.convert({ typeReference: args.typeReference.value })\n                );\n            }\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named == null) {\n                    return this.convertUnknown();\n                }\n                return this.convertNamed({ named });\n            }\n            case \"optional\":\n            case \"nullable\": {\n                return java.Type.optional(this.convert({ typeReference: args.typeReference.value }));\n            }\n            case \"primitive\":\n                return this.convertPrimitive({ primitive: args.typeReference.value });\n            case \"set\":\n                return java.Type.set(this.convert({ typeReference: args.typeReference }));\n            case \"unknown\":\n                return this.convertUnknown();\n            default:\n                assertNever(args.typeReference);\n        }\n    }\n\n    private convertNamed({ named }: { named: FernIr.dynamic.NamedType }): java.Type {\n        switch (named.type) {\n            case \"alias\":\n                return this.convert({ typeReference: named.typeReference });\n            case \"enum\":\n            case \"discriminatedUnion\":\n            case \"object\":\n            case \"undiscriminatedUnion\":\n                return java.Type.reference(\n                    java.classReference({\n                        name: this.context.getClassName(named.declaration.name),\n                        packageName: this.context.getTypesPackageName(named.declaration.fernFilepath)\n                    })\n                );\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertLiteral({ literal }: { literal: FernIr.dynamic.LiteralType }): java.Type {\n        switch (literal.type) {\n            case \"boolean\":\n                return java.Type.boolean();\n            case \"string\":\n                return java.Type.string();\n        }\n    }\n\n    private convertUnknown(): java.Type {\n        if (this.context.customConfig?.[\"generate-unknown-as-json-node\"] === true) {\n            return java.Type.reference(\n                java.classReference({\n                    name: \"JsonNode\",\n                    packageName: \"com.fasterxml.jackson.databind\"\n                })\n            );\n        }\n        return java.Type.object();\n    }\n\n    private convertPrimitive({ primitive }: { primitive: FernIr.dynamic.PrimitiveTypeV1 }): java.Type {\n        switch (primitive) {\n            case \"INTEGER\":\n                return java.Type.integer();\n            case \"UINT\":\n                return java.Type.integer();\n            case \"LONG\":\n                return java.Type.long();\n            case \"UINT_64\":\n                return java.Type.long();\n            case \"FLOAT\":\n                return java.Type.float();\n            case \"DOUBLE\":\n                return java.Type.double();\n            case \"BOOLEAN\":\n                return java.Type.boolean();\n            case \"STRING\":\n                return java.Type.string();\n            case \"DATE\":\n                return java.Type.date();\n            case \"DATE_TIME\":\n                return java.Type.dateTime();\n            case \"UUID\":\n                return java.Type.uuid();\n            case \"BASE_64\":\n                return java.Type.bytes();\n            case \"BIG_INTEGER\":\n                return java.Type.bigInteger();\n            default: {\n                // Forward-compatible: handle primitive types not yet in the published SDK\n                const primitiveStr: string = primitive;\n                if (primitiveStr === \"DATE_TIME_RFC_2822\") {\n                    return java.Type.dateTime();\n                }\n                assertNever(primitive);\n            }\n        }\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { java } from \"@fern-api/java-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport interface FilePropertyInfo {\n    fileFields: java.BuilderParameter[];\n    bodyPropertyFields: java.BuilderParameter[];\n}\n\nexport class FilePropertyMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public getFilePropertyInfo({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.FileUploadRequestBody;\n        value: unknown;\n    }): FilePropertyInfo {\n        const result: FilePropertyInfo = {\n            fileFields: [],\n            bodyPropertyFields: []\n        };\n        const record = this.context.getRecord(value) ?? {};\n        for (const property of body.properties) {\n            switch (property.type) {\n                case \"file\":\n                    result.fileFields.push({\n                        name: this.context.getMethodName(property.name),\n                        value: this.getSingleFileProperty({ property, record })\n                    });\n                    break;\n                case \"fileArray\":\n                    result.fileFields.push({\n                        name: this.context.getMethodName(property.name),\n                        value: this.getArrayFileProperty({ property, record })\n                    });\n                    break;\n                case \"bodyProperty\":\n                    result.bodyPropertyFields.push({\n                        name: this.context.getMethodName(property.name.name),\n                        value: this.getBodyProperty({ property, record })\n                    });\n                    break;\n                default:\n                    assertNever(property);\n            }\n        }\n        return result;\n    }\n\n    private getSingleFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): java.TypeLiteral {\n        const fileValue = this.context.getSingleFileValue({ property, record });\n        if (fileValue == null) {\n            return java.TypeLiteral.nop();\n        }\n        return java.TypeLiteral.reference(this.context.getFileStreamFromString(fileValue));\n    }\n\n    private getArrayFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): java.TypeLiteral {\n        const fileValues = this.context.getFileArrayValues({ property, record });\n        if (fileValues == null) {\n            return java.TypeLiteral.nop();\n        }\n        for (const fileValue of fileValues) {\n            // The Java SDK doesn't support file array properties correctly, so we just\n            // return a single file stream.\n            return java.TypeLiteral.reference(this.context.getFileStreamFromString(fileValue));\n        }\n        return java.TypeLiteral.nop();\n    }\n\n    private getBodyProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.NamedParameter;\n        record: Record<string, unknown>;\n    }): java.TypeLiteral {\n        const bodyPropertyValue = record[property.name.wireValue];\n        if (bodyPropertyValue == null) {\n            return java.TypeLiteral.nop();\n        }\n        return this.context.dynamicTypeLiteralMapper.convert({\n            typeReference: property.typeReference,\n            value: bodyPropertyValue\n        });\n    }\n}\n","import { AbstractFormatter, Options, Scope, Severity, Style } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { java } from \"@fern-api/java-ast\";\n\nimport { Config } from \"./Config.js\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper.js\";\n\nconst SNIPPET_PACKAGE_NAME = \"com.example.usage\";\nconst SNIPPET_CLASS_NAME = \"Example\";\nconst SNIPPET_METHOD_NAME = \"main\";\nconst SNIPPET_METHOD_ARG = \"args\";\nconst CLIENT_VAR_NAME = \"client\";\nconst STRING_TYPE_REFERENCE: FernIr.dynamic.TypeReference = {\n    type: \"primitive\",\n    value: \"STRING\"\n};\n\n/**\n * For query parameters with allow-multiple and optional types, the Dynamic IR produces\n * optional<list<optional<T>>> or list<optional<T>>. However, Java SDK builders have\n * convenience overloads that accept List<T> directly. This function unwraps the optional\n * from list items so we generate List<T> instead of List<Optional<T>>.\n *\n * Note: We only unwrap \"optional\", not \"nullable\". Nullable list items (list<nullable<T>>)\n * are a distinct case where items genuinely can be null, and the SDK expects List<Optional<T>>.\n */\nfunction unwrapOptionalFromListItems(typeReference: FernIr.dynamic.TypeReference): FernIr.dynamic.TypeReference {\n    if (typeReference.type === \"optional\" && typeReference.value.type === \"list\") {\n        const listType = typeReference.value;\n        const itemType = listType.value;\n        if (itemType.type === \"optional\") {\n            return {\n                type: \"optional\",\n                value: {\n                    type: \"list\",\n                    value: itemType.value\n                }\n            };\n        }\n    }\n    if (typeReference.type === \"list\") {\n        const itemType = typeReference.value;\n        if (itemType.type === \"optional\") {\n            return {\n                type: \"list\",\n                value: itemType.value\n            };\n        }\n    }\n    return typeReference;\n}\n\nexport class EndpointSnippetGenerator {\n    private context: DynamicSnippetsGeneratorContext;\n    private formatter: AbstractFormatter | undefined;\n\n    constructor({ context, formatter }: { context: DynamicSnippetsGeneratorContext; formatter?: AbstractFormatter }) {\n        this.context = context;\n        this.formatter = formatter;\n    }\n\n    public async generateSnippet({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): Promise<string> {\n        const config = this.getConfig(options);\n        const code = this.buildCodeBlock({ endpoint, snippet: request, options });\n        return await code.toStringAsync({\n            packageName: config.fullStylePackageName ?? SNIPPET_PACKAGE_NAME,\n            customConfig: this.context.customConfig,\n            formatter: this.formatter\n        });\n    }\n\n    public generateSnippetSync({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): string {\n        const config = this.getConfig(options);\n        const code = this.buildCodeBlock({ endpoint, snippet: request, options });\n        return code.toString({\n            packageName: config.fullStylePackageName ?? SNIPPET_PACKAGE_NAME,\n            customConfig: this.context.customConfig,\n            formatter: this.formatter\n        });\n    }\n\n    public async generateSnippetAst({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): Promise<java.AstNode> {\n        throw new Error(\"Unsupported\");\n    }\n\n    private buildCodeBlock({\n        endpoint,\n        snippet,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): java.AstNode {\n        const body = java.codeblock((writer) => {\n            writer.writeNodeStatement(this.constructClient({ endpoint, snippet }));\n            writer.newLine();\n            writer.writeNodeStatement(this.callMethod({ endpoint, snippet }));\n        });\n        const style = this.getStyle(options);\n        switch (style) {\n            case Style.Concise:\n                return body;\n            case Style.Full:\n                return this.buildFullCodeBlock({ body, options });\n            default:\n                assertNever(style);\n        }\n    }\n\n    private constructClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): java.CodeBlock {\n        // For OAuth APIs, use withCredentials() instead of builder()\n        const isOAuth = endpoint.auth?.type === \"oauth\";\n\n        return java.codeblock((writer) => {\n            writer.writeNode(this.context.getRootClientClassReference());\n            writer.write(` ${CLIENT_VAR_NAME} = `);\n\n            if (isOAuth && snippet.auth?.type === \"oauth\") {\n                // OAuth: use withCredentials(clientId, clientSecret) pattern\n                const oauthValues = snippet.auth as FernIr.dynamic.OAuthValues;\n                writer.writeNode(this.context.getRootClientClassReference());\n                writer.write(`.withCredentials(\"${oauthValues.clientId}\", \"${oauthValues.clientSecret}\")`);\n                writer.writeNewLineIfLastLineNot();\n                writer.indent();\n\n                // Add remaining builder args (url, environment, headers, etc.)\n                const otherArgs = this.getRootClientBuilderArgsExcludingAuth({ endpoint, snippet });\n                for (const arg of otherArgs) {\n                    writer.write(`.${arg.name}(`);\n                    if (!arg.value.shouldWriteInLine()) {\n                        writer.newLine();\n                    }\n                    writer.writeNode(arg.value);\n                    if (!arg.value.shouldWriteInLine()) {\n                        writer.newLine();\n                    }\n                    writer.writeLine(\")\");\n                }\n\n                writer.writeLine(\".build()\");\n                writer.dedent();\n            } else {\n                // Standard builder() pattern\n                writer.writeNode(\n                    java.TypeLiteral.builder({\n                        classReference: this.context.getRootClientClassReference(),\n                        parameters: this.getRootClientBuilderArgs({ endpoint, snippet })\n                    })\n                );\n            }\n        });\n    }\n\n    private getRootClientBuilderArgsExcludingAuth({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): java.BuilderParameter[] {\n        const builderArgs: java.BuilderParameter[] = [];\n\n        // Skip auth - it's handled by withCredentials()\n\n        const baseUrlArg = this.getRootClientBaseUrlArg({\n            baseUrl: snippet.baseURL,\n            environment: snippet.environment\n        });\n        if (baseUrlArg != null) {\n            builderArgs.push(baseUrlArg);\n        }\n        this.context.errors.scope(Scope.Headers);\n        if (this.context.ir.headers != null && snippet.headers != null) {\n            builderArgs.push(\n                ...this.getRootClientHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n            );\n        }\n        this.context.errors.unscope();\n\n        const usedVariables = new Set<string>();\n        const allPathParams = [...(this.context.ir.pathParameters ?? []), ...(endpoint.request.pathParameters ?? [])];\n\n        allPathParams.forEach((param) => {\n            if (param.variable != null) {\n                usedVariables.add(param.variable);\n            }\n        });\n\n        if (this.context.ir.variables != null && this.context.ir.variables.length > 0) {\n            for (const variable of this.context.ir.variables) {\n                if (usedVariables.has(variable.id)) {\n                    const variableName = variable.name.camelCase.unsafeName;\n                    builderArgs.push({\n                        name: variableName,\n                        value: java.TypeLiteral.string(`YOUR_${variable.name.screamingSnakeCase.unsafeName}`)\n                    });\n                }\n            }\n        }\n\n        this.context.errors.scope(Scope.PathParameters);\n        if (this.context.ir.pathParameters != null && this.context.ir.pathParameters.length > 0) {\n            const apiPathParams = this.context.ir.pathParameters.filter((param) => param.variable == null);\n            if (apiPathParams.length > 0) {\n                builderArgs.push(...this.getPathParameters({ namedParameters: apiPathParams, snippet }));\n            }\n        }\n        this.context.errors.unscope();\n\n        return builderArgs;\n    }\n\n    private buildFullCodeBlock({ body, options }: { body: java.CodeBlock; options: Options }): java.AstNode {\n        const config = this.getConfig(options);\n        const class_ = java.class_({\n            name: config.fullStyleClassName ?? SNIPPET_CLASS_NAME,\n            access: java.Access.Public\n        });\n        const stringArgs = java.parameter({\n            name: SNIPPET_METHOD_ARG,\n            type: java.Type.array(java.Type.string())\n        });\n        class_.addMethod(\n            java.method({\n                name: SNIPPET_METHOD_NAME,\n                access: java.Access.Public,\n                static_: true,\n                parameters: [stringArgs],\n                body\n            })\n        );\n        return class_;\n    }\n\n    private getRootClientBuilderArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): java.BuilderParameter[] {\n        const builderArgs: java.BuilderParameter[] = [];\n        if (endpoint.auth != null) {\n            if (snippet.auth != null) {\n                builderArgs.push(...this.getRootClientAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n            } else {\n                this.context.errors.add({\n                    severity: Severity.Warning,\n                    message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n                });\n            }\n        }\n        const baseUrlArg = this.getRootClientBaseUrlArg({\n            baseUrl: snippet.baseURL,\n            environment: snippet.environment\n        });\n        if (baseUrlArg != null) {\n            builderArgs.push(baseUrlArg);\n        }\n        this.context.errors.scope(Scope.Headers);\n        if (this.context.ir.headers != null && snippet.headers != null) {\n            builderArgs.push(\n                ...this.getRootClientHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n            );\n        }\n        this.context.errors.unscope();\n\n        const usedVariables = new Set<string>();\n        const allPathParams = [...(this.context.ir.pathParameters ?? []), ...(endpoint.request.pathParameters ?? [])];\n\n        allPathParams.forEach((param) => {\n            if (param.variable != null) {\n                usedVariables.add(param.variable);\n            }\n        });\n\n        if (this.context.ir.variables != null && this.context.ir.variables.length > 0) {\n            for (const variable of this.context.ir.variables) {\n                if (usedVariables.has(variable.id)) {\n                    const variableName = variable.name.camelCase.unsafeName;\n                    builderArgs.push({\n                        name: variableName,\n                        value: java.TypeLiteral.string(`YOUR_${variable.name.screamingSnakeCase.unsafeName}`)\n                    });\n                }\n            }\n        }\n\n        this.context.errors.scope(Scope.PathParameters);\n        if (this.context.ir.pathParameters != null && this.context.ir.pathParameters.length > 0) {\n            const apiPathParams = this.context.ir.pathParameters.filter((param) => param.variable == null);\n            if (apiPathParams.length > 0) {\n                builderArgs.push(...this.getPathParameters({ namedParameters: apiPathParams, snippet }));\n            }\n        }\n        this.context.errors.unscope();\n\n        return builderArgs;\n    }\n\n    private getRootClientBaseUrlArg({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): java.BuilderParameter | undefined {\n        if (baseUrl != null && environment != null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Cannot specify both baseUrl and environment options\"\n            });\n            return undefined;\n        }\n        if (baseUrl != null) {\n            if (this.context.ir.environments?.environments.type === \"multipleBaseUrls\") {\n                this.context.errors.add({\n                    severity: Severity.Critical,\n                    message: \"The Java SDK doesn't support a baseUrl when multiple URL environments are configured\"\n                });\n                return undefined;\n            }\n            return {\n                name: \"url\",\n                value: java.TypeLiteral.string(baseUrl)\n            };\n        }\n        if (environment != null) {\n            if (this.context.isSingleEnvironmentID(environment)) {\n                const classReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n                if (classReference == null) {\n                    this.context.errors.add({\n                        severity: Severity.Warning,\n                        message: `Environment ${JSON.stringify(environment)} was not found`\n                    });\n                    return undefined;\n                }\n                return {\n                    name: \"environment\",\n                    value: java.TypeLiteral.reference(classReference)\n                };\n            }\n            if (this.context.isMultiEnvironmentValues(environment)) {\n                if (!this.context.validateMultiEnvironmentUrlValues(environment)) {\n                    return undefined;\n                }\n                return {\n                    name: \"environment\",\n                    value: java.TypeLiteral.reference(\n                        java.instantiateClass({\n                            classReference: this.context.getEnvironmentClassReference(),\n                            arguments_: Object.values(environment).map((value) =>\n                                this.context.dynamicTypeLiteralMapper.convert({\n                                    typeReference: STRING_TYPE_REFERENCE,\n                                    value\n                                })\n                            )\n                        })\n                    )\n                };\n            }\n        }\n        return undefined;\n    }\n\n    private getRootClientAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): java.BuilderParameter[] {\n        if (values.type !== auth.type) {\n            this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n            return [];\n        }\n        switch (auth.type) {\n            case \"basic\":\n                return values.type === \"basic\" ? this.getRootClientBasicAuthArgs({ auth, values }) : [];\n            case \"bearer\":\n                return values.type === \"bearer\" ? this.getRootClientBearerAuthArgs({ auth, values }) : [];\n            case \"header\":\n                return values.type === \"header\" ? this.getRootClientHeaderAuthArgs({ auth, values }) : [];\n            case \"oauth\":\n                return values.type === \"oauth\" ? this.getRootClientOAuthArgs({ auth, values }) : [];\n            case \"inferred\":\n                this.addWarning(\"The Java SDK Generator does not support Inferred auth scheme yet\");\n                return [];\n            default:\n                assertNever(auth);\n        }\n    }\n\n    private addError(message: string): void {\n        this.context.errors.add({ severity: Severity.Critical, message });\n    }\n\n    private addWarning(message: string): void {\n        this.context.errors.add({ severity: Severity.Warning, message });\n    }\n\n    private getRootClientBasicAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BasicAuth;\n        values: FernIr.dynamic.BasicAuthValues;\n    }): java.BuilderParameter[] {\n        return [\n            {\n                name: \"credentials\",\n                value: java.TypeLiteral.raw(`\"${values.username}\", \"${values.password}\"`)\n            }\n        ];\n    }\n\n    private getRootClientBearerAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BearerAuth;\n        values: FernIr.dynamic.BearerAuthValues;\n    }): java.BuilderParameter[] {\n        return [\n            {\n                name: this.context.getMethodName(auth.token),\n                value: java.TypeLiteral.string(values.token)\n            }\n        ];\n    }\n\n    private getRootClientHeaderAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.HeaderAuth;\n        values: FernIr.dynamic.HeaderAuthValues;\n    }): java.BuilderParameter[] {\n        return [\n            {\n                name: this.context.getMethodName(auth.header.name.name),\n                value: this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: auth.header.typeReference,\n                    value: values.value\n                })\n            }\n        ];\n    }\n\n    private getRootClientOAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.OAuth;\n        values: FernIr.dynamic.OAuthValues;\n    }): java.BuilderParameter[] {\n        return [\n            {\n                name: this.context.getMethodName(auth.clientId),\n                value: java.TypeLiteral.string(values.clientId)\n            },\n            {\n                name: this.context.getMethodName(auth.clientSecret),\n                value: java.TypeLiteral.string(values.clientSecret)\n            }\n        ];\n    }\n\n    private getRootClientHeaderArgs({\n        headers,\n        values\n    }: {\n        headers: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): java.BuilderParameter[] {\n        const args: java.BuilderParameter[] = [];\n        for (const header of headers) {\n            const value = values[header.name.wireValue];\n            const arg = this.getRootClientHeaderArg({ header, value });\n            if (arg != null) {\n                args.push({\n                    name: this.context.getMethodName(header.name.name),\n                    value: arg\n                });\n            }\n        }\n        return args;\n    }\n\n    private getRootClientHeaderArg({\n        header,\n        value\n    }: {\n        header: FernIr.dynamic.NamedParameter;\n        value: unknown;\n    }): java.TypeLiteral | undefined {\n        const typeLiteral = this.context.dynamicTypeLiteralMapper.convert({\n            typeReference: header.typeReference,\n            value\n        });\n        if (java.TypeLiteral.isNop(typeLiteral)) {\n            // Literal header values (e.g. \"X-API-Version\") should not be included in the\n            // client constructor.\n            return undefined;\n        }\n        return typeLiteral;\n    }\n\n    private callMethod({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): java.MethodInvocation {\n        return java.invokeMethod({\n            on: java.codeblock(CLIENT_VAR_NAME),\n            method: this.getMethod({ endpoint }),\n            arguments_: this.getMethodArgs({ endpoint, snippet })\n        });\n    }\n\n    private getMethodArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): java.TypeLiteral[] {\n        switch (endpoint.request.type) {\n            case \"inlined\":\n                return this.getMethodArgsForInlinedRequest({ request: endpoint.request, snippet });\n            case \"body\":\n                return this.getMethodArgsForBodyRequest({ request: endpoint.request, snippet });\n            default:\n                assertNever(endpoint.request);\n        }\n    }\n\n    private getMethodArgsForBodyRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.BodyRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): java.TypeLiteral[] {\n        const args: java.TypeLiteral[] = [];\n\n        this.context.errors.scope(Scope.PathParameters);\n        // Only include endpoint-level path parameters that don't reference variables\n        // Variables are configured at client level, not passed as method args\n        const pathParameters = (request.pathParameters ?? []).filter((param) => param.variable == null);\n        if (pathParameters.length > 0) {\n            args.push(\n                ...this.getPathParameters({ namedParameters: pathParameters, snippet }).map((field) => field.value)\n            );\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        if (request.body != null) {\n            args.push(this.getBodyRequestArg({ body: request.body, value: snippet.requestBody }));\n        }\n        this.context.errors.unscope();\n\n        // For body requests, headers are passed via RequestOptions\n        const requestOptionsArg = this.getRequestOptionsArg({ request, snippet });\n        if (requestOptionsArg != null) {\n            args.push(requestOptionsArg);\n        }\n\n        return args;\n    }\n\n    private usesOptionalNullable(): boolean {\n        return this.context.customConfig?.[\"collapse-optional-nullable\"] === true;\n    }\n\n    private getBodyRequestArg({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): java.TypeLiteral {\n        switch (body.type) {\n            case \"bytes\": {\n                return this.getBytesBodyRequestArg({ value });\n            }\n            case \"typeReference\": {\n                if (body.value.type === \"optional\") {\n                    // TODO(amckinney): This endpoint defines an optional request body, so the\n                    // Java SDK requires the Optional.of(...) wrapper.\n                    //\n                    // We should fix the generator to permit the non-Optional type and\n                    // remove this special case.\n\n                    // Determine if the optional body wraps a nullable (truly optional+nullable).\n                    const isCollapsedOptionalNullable =\n                        this.usesOptionalNullable() &&\n                        (body.value.value.type === \"optional\" || body.value.value.type === \"nullable\");\n\n                    // Check if value is undefined/null and use Optional.empty() or OptionalNullable.absent()\n                    if (value === undefined || value === null) {\n                        if (isCollapsedOptionalNullable) {\n                            return this.context.getOptionalNullableAbsent();\n                        } else {\n                            return java.TypeLiteral.reference(\n                                java.invokeMethod({\n                                    on: java.classReference({\n                                        name: \"Optional\",\n                                        packageName: \"java.util\"\n                                    }),\n                                    method: \"empty\",\n                                    arguments_: []\n                                })\n                            );\n                        }\n                    }\n\n                    const convertedValue = this.context.dynamicTypeLiteralMapper.convert({\n                        typeReference: body.value.value,\n                        value,\n                        as: \"request\",\n                        isCollapsedOptionalNullable\n                    });\n\n                    // Check if the converted value is already Optional.empty() or OptionalNullable.absent() to avoid double-wrapping\n                    const convertedValueStr = convertedValue.toString({\n                        packageName: \"com.example\",\n                        customConfig: this.context.customConfig\n                    });\n\n                    if (\n                        convertedValueStr.includes(\"Optional.empty()\") ||\n                        convertedValueStr.includes(\"OptionalNullable.absent()\")\n                    ) {\n                        return convertedValue;\n                    }\n\n                    if (isCollapsedOptionalNullable) {\n                        return this.context.getOptionalNullableOf(convertedValue);\n                    } else {\n                        return java.TypeLiteral.optional({\n                            value: convertedValue,\n                            useOf: true\n                        });\n                    }\n                }\n                return this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: body.value,\n                    value,\n                    as: \"request\"\n                });\n            }\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getBytesBodyRequestArg({ value }: { value: unknown }): java.TypeLiteral {\n        if (value === undefined || value === null) {\n            return java.TypeLiteral.bytes(\"\");\n        }\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected bytes value to be a string, got ${typeof value}`\n            });\n            return java.TypeLiteral.nop();\n        }\n        return java.TypeLiteral.bytes(value as string);\n    }\n\n    private getMethodArgsForInlinedRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): java.TypeLiteral[] {\n        const args: java.TypeLiteral[] = [];\n\n        const { inlinePathParameters, inlineFileProperties } = {\n            inlinePathParameters: this.context.shouldInlinePathParameters(),\n            inlineFileProperties: this.context.shouldInlineFileProperties()\n        };\n\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameterFields: java.BuilderParameter[] = [];\n        // Only include endpoint-level path parameters that don't reference variables\n        const nonVariablePathParams = (request.pathParameters ?? []).filter((param) => param.variable == null);\n        if (nonVariablePathParams.length > 0) {\n            pathParameterFields.push(...this.getPathParameters({ namedParameters: nonVariablePathParams, snippet }));\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const filePropertyInfo = this.getFilePropertyInfo({ request, snippet });\n        this.context.errors.unscope();\n\n        if (\n            !this.context.includePathParametersInWrappedRequest({\n                request,\n                inlinePathParameters\n            })\n        ) {\n            args.push(...pathParameterFields.map((field) => field.value));\n        }\n\n        // For now, the Java SDK always includes file properties as positional parameters.\n        if (!inlineFileProperties) {\n            args.push(...filePropertyInfo.fileFields.map((field) => field.value));\n        }\n\n        // For now, the Java SDK always requires the inlined request parameter.\n        args.push(\n            this.getInlinedRequestArg({\n                request,\n                snippet,\n                pathParameterFields: this.context.includePathParametersInWrappedRequest({\n                    request,\n                    inlinePathParameters\n                })\n                    ? pathParameterFields\n                    : [],\n                filePropertyInfo\n            })\n        );\n\n        return args;\n    }\n\n    private getFilePropertyInfo({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): FilePropertyInfo {\n        if (request.body == null || !this.context.isFileUploadRequestBody(request.body)) {\n            return {\n                fileFields: [],\n                bodyPropertyFields: []\n            };\n        }\n        return this.context.filePropertyMapper.getFilePropertyInfo({\n            body: request.body,\n            value: snippet.requestBody\n        });\n    }\n\n    private getInlinedRequestArg({\n        request,\n        snippet,\n        pathParameterFields,\n        filePropertyInfo\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        pathParameterFields: java.BuilderParameter[];\n        filePropertyInfo: FilePropertyInfo;\n    }): java.TypeLiteral {\n        this.context.errors.scope(Scope.QueryParameters);\n        const queryParameters = this.context.associateQueryParametersByWireValue({\n            parameters: request.queryParameters ?? [],\n            values: snippet.queryParameters ?? {}\n        });\n        const filteredQueryParameters = queryParameters.filter(\n            (queryParameter) => !this.context.isDirectLiteral(queryParameter.typeReference)\n        );\n        const sortedQueryParameters = this.context.sortTypeInstancesByRequiredFirst(\n            filteredQueryParameters,\n            request.queryParameters ?? []\n        );\n        const queryParameterFields = sortedQueryParameters.map((queryParameter) => ({\n            name: this.context.getMethodName(queryParameter.name.name),\n            value: this.context.dynamicTypeLiteralMapper.convert({\n                // Unwrap optional from list items for allow-multiple query params.\n                // Java SDK builders have convenience overloads that accept List<T>.\n                typeReference: unwrapOptionalFromListItems(queryParameter.typeReference),\n                value: queryParameter.value,\n                as: \"request\"\n            })\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.Headers);\n        const headers = this.context.associateByWireValue({\n            parameters: request.headers ?? [],\n            values: snippet.headers ?? {}\n        });\n        const filteredHeaders = headers.filter((header) => !this.context.isDirectLiteral(header.typeReference));\n        const sortedHeaders = this.context.sortTypeInstancesByRequiredFirst(filteredHeaders, request.headers ?? []);\n        const headerFields = sortedHeaders.map((header) => ({\n            name: this.context.getMethodName(header.name.name),\n            value: this.context.dynamicTypeLiteralMapper.convert({\n                typeReference: header.typeReference,\n                value: header.value,\n                as: \"request\"\n            })\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const requestBodyFields =\n            request.body != null\n                ? this.getInlinedRequestBodyBuilderParameters({\n                      body: request.body,\n                      value: snippet.requestBody,\n                      filePropertyInfo\n                  })\n                : [];\n        this.context.errors.unscope();\n\n        return java.TypeLiteral.builder({\n            classReference: java.classReference({\n                name: this.context.getClassName(request.declaration.name),\n                packageName: this.context.getRequestsPackageName(request.declaration.fernFilepath)\n            }),\n            parameters: [...pathParameterFields, ...headerFields, ...queryParameterFields, ...requestBodyFields]\n        });\n    }\n\n    private getRequestOptionsArg({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest | FernIr.dynamic.BodyRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): java.TypeLiteral | undefined {\n        const requestHeaders = \"headers\" in request ? (request.headers ?? []) : [];\n\n        if (requestHeaders.length === 0 || Object.keys(snippet.headers ?? {}).length === 0) {\n            return undefined;\n        }\n\n        this.context.errors.scope(Scope.Headers);\n        const headers = this.context.associateByWireValue({\n            parameters: requestHeaders,\n            values: snippet.headers ?? {}\n        });\n        this.context.errors.unscope();\n\n        if (headers.length === 0) {\n            return undefined;\n        }\n\n        const requestOptionsClass = java.classReference({\n            name: \"RequestOptions\",\n            packageName: this.context.getCorePackageName()\n        });\n\n        let builderChain: java.AstNode = java.invokeMethod({\n            on: requestOptionsClass,\n            method: \"builder\",\n            arguments_: []\n        });\n\n        for (const header of headers) {\n            builderChain = java.invokeMethod({\n                on: builderChain,\n                method: \"addHeader\",\n                arguments_: [\n                    java.TypeLiteral.string(header.name.wireValue),\n                    this.context.dynamicTypeLiteralMapper.convert(header)\n                ]\n            });\n        }\n\n        const buildMethodCall = java.invokeMethod({\n            on: builderChain,\n            method: \"build\",\n            arguments_: []\n        });\n\n        return java.TypeLiteral.reference(buildMethodCall);\n    }\n\n    private getInlinedRequestBodyBuilderParameters({\n        body,\n        value,\n        filePropertyInfo\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        value: unknown;\n        filePropertyInfo: FilePropertyInfo;\n    }): java.BuilderParameter[] {\n        switch (body.type) {\n            case \"properties\":\n                return this.getInlinedRequestBodyPropertyBuilderParameters({ parameters: body.value, value });\n            case \"referenced\":\n                return [this.getReferencedRequestBodyPropertyBuilderParameter({ body, value })];\n            case \"fileUpload\":\n                return this.getFileUploadRequestBodyBuilderParameters({ filePropertyInfo });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getFileUploadRequestBodyBuilderParameters({\n        filePropertyInfo\n    }: {\n        filePropertyInfo: FilePropertyInfo;\n    }): java.BuilderParameter[] {\n        if (this.context.shouldInlineFileProperties()) {\n            return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n        }\n        return filePropertyInfo.bodyPropertyFields;\n    }\n\n    private getReferencedRequestBodyPropertyBuilderParameter({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBody;\n        value: unknown;\n    }): java.BuilderParameter {\n        return {\n            name: this.context.getMethodName(body.bodyKey),\n            value: this.getReferencedRequestBodyPropertyTypeLiteral({ body: body.bodyType, value })\n        };\n    }\n\n    private getReferencedRequestBodyPropertyTypeLiteral({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): java.TypeLiteral {\n        switch (body.type) {\n            case \"bytes\":\n                return this.getBytesBodyRequestArg({ value });\n            case \"typeReference\":\n                return this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: body.value,\n                    value,\n                    as: \"request\"\n                });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getInlinedRequestBodyPropertyBuilderParameters({\n        parameters,\n        value\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        value: unknown;\n    }): java.BuilderParameter[] {\n        const bodyProperties = this.context.associateByWireValue({\n            parameters,\n            values: this.context.getRecord(value) ?? {}\n        });\n        const filteredProperties = bodyProperties.filter(\n            (parameter) => !this.context.isDirectLiteral(parameter.typeReference)\n        );\n        const sortedProperties = this.context.sortTypeInstancesByRequiredFirst(filteredProperties, parameters);\n        return sortedProperties.map((parameter) => ({\n            name: this.context.getMethodName(parameter.name.name),\n            value: this.context.dynamicTypeLiteralMapper.convert({\n                typeReference: parameter.typeReference,\n                value: parameter.value,\n                as: \"request\"\n            })\n        }));\n    }\n\n    private getPathParameters({\n        namedParameters,\n        snippet\n    }: {\n        namedParameters: FernIr.dynamic.NamedParameter[];\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): java.BuilderParameter[] {\n        const args: java.BuilderParameter[] = [];\n        const pathParameters = this.context.associateByWireValue({\n            parameters: namedParameters,\n            values: snippet.pathParameters ?? {}\n        });\n        for (const parameter of pathParameters) {\n            args.push({\n                name: this.context.getMethodName(parameter.name.name),\n                value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n            });\n        }\n        return args;\n    }\n\n    private getMethod({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n        if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n            return `${endpoint.declaration.fernFilepath.allParts\n                .map((val) => `${this.context.getMethodName(val)}()`)\n                .join(\".\")}.${this.context.getMethodName(endpoint.declaration.name)}`;\n        }\n        return this.context.getMethodName(endpoint.declaration.name);\n    }\n\n    private getStyle(options: Options): Style {\n        return options.style ?? this.context.options.style ?? Style.Full;\n    }\n\n    private getConfig(options: Options): Config {\n        return options.config ?? this.context.options.config ?? {};\n    }\n}\n","export const __dirname = \"/\";\n","function unimplemented(name) {\r\n  throw new Error('Node.js process ' + name + ' is not supported by JSPM core outside of Node.js');\r\n}\r\n\r\nvar queue = [];\r\nvar draining = false;\r\nvar currentQueue;\r\nvar queueIndex = -1;\r\n\r\nfunction cleanUpNextTick() {\r\n  if (!draining || !currentQueue)\r\n    return;\r\n  draining = false;\r\n  if (currentQueue.length) {\r\n    queue = currentQueue.concat(queue);\r\n  }\r\n  else {\r\n    queueIndex = -1;\r\n  }\r\n  if (queue.length)\r\n    drainQueue();\r\n}\r\n\r\nfunction drainQueue() {\r\n  if (draining)\r\n    return;\r\n  var timeout = setTimeout(cleanUpNextTick, 0);\r\n  draining = true;\r\n\r\n  var len = queue.length;\r\n  while(len) {\r\n    currentQueue = queue;\r\n    queue = [];\r\n    while (++queueIndex < len) {\r\n      if (currentQueue)\r\n        currentQueue[queueIndex].run();\r\n    }\r\n    queueIndex = -1;\r\n    len = queue.length;\r\n  }\r\n  currentQueue = null;\r\n  draining = false;\r\n  clearTimeout(timeout);\r\n}\r\n\r\nfunction nextTick (fun) {\r\n  var args = new Array(arguments.length - 1);\r\n  if (arguments.length > 1) {\r\n    for (var i = 1; i < arguments.length; i++)\r\n      args[i - 1] = arguments[i];\r\n  }\r\n  queue.push(new Item(fun, args));\r\n  if (queue.length === 1 && !draining)\r\n    setTimeout(drainQueue, 0);\r\n}\r\n// v8 likes predictible objects\r\nfunction Item(fun, array) {\r\n  this.fun = fun;\r\n  this.array = array;\r\n}\r\nItem.prototype.run = function () {\r\n  this.fun.apply(null, this.array);\r\n};\r\n\r\nvar title = 'browser';\r\nvar arch = 'x64';\r\nvar platform = 'browser';\r\nvar env = {\r\n  PATH: '/usr/bin',\r\n  LANG: typeof navigator !== 'undefined' ? navigator.language + '.UTF-8' : undefined,\r\n  PWD: '/',\r\n  HOME: '/home',\r\n  TMP: '/tmp',\r\n};\r\nvar argv = ['/usr/bin/node'];\r\nvar execArgv = [];\r\nvar version = 'v16.8.0';\r\nvar versions = {};\r\n\r\nvar emitWarning = function(message, type) {\r\n  console.warn((type ? (type + ': ') : '') + message);\r\n};\r\n\r\nvar binding = function(name) { unimplemented('binding'); };\r\n\r\nvar umask = function(mask) { return 0; };\r\n\r\nvar cwd = function() { return '/'; };\r\nvar chdir = function(dir) {};\r\n\r\nvar release = {\r\n  name: 'node',\r\n  sourceUrl: '',\r\n  headersUrl: '',\r\n  libUrl: '',\r\n};\r\n\r\nfunction noop() {}\r\n\r\nvar browser = true;\r\nvar _rawDebug = noop;\r\nvar moduleLoadList = [];\r\nfunction _linkedBinding(name) { unimplemented('_linkedBinding'); }\r\nvar domain = {};\r\nvar _exiting = false;\r\nvar config = {};\r\nfunction dlopen(name) { unimplemented('dlopen'); }\r\nfunction _getActiveRequests() { return []; }\r\nfunction _getActiveHandles() { return []; }\r\nvar reallyExit = noop;\r\nvar _kill = noop;\r\nvar cpuUsage = function() { return {}; };\r\nvar resourceUsage = cpuUsage;\r\nvar memoryUsage = cpuUsage;\r\nvar kill = noop;\r\nvar exit = noop;\r\nvar openStdin = noop;\r\nvar allowedNodeEnvironmentFlags = {};\r\nfunction assert(condition, message) {\r\n  if (!condition) throw new Error(message || 'assertion error');\r\n}\r\nvar features = {\r\n  inspector: false,\r\n  debug: false,\r\n  uv: false,\r\n  ipv6: false,\r\n  tls_alpn: false,\r\n  tls_sni: false,\r\n  tls_ocsp: false,\r\n  tls: false,\r\n  cached_builtins: true,\r\n};\r\nvar _fatalExceptions = noop;\r\nvar setUncaughtExceptionCaptureCallback = noop;\r\nfunction hasUncaughtExceptionCaptureCallback() { return false; }var _tickCallback = noop;\r\nvar _debugProcess = noop;\r\nvar _debugEnd = noop;\r\nvar _startProfilerIdleNotifier = noop;\r\nvar _stopProfilerIdleNotifier = noop;\r\nvar stdout = undefined;\r\nvar stderr = undefined;\r\nvar stdin = undefined;\r\nvar abort = noop;\r\nvar pid = 2;\r\nvar ppid = 1;\r\nvar execPath = '/bin/usr/node';\r\nvar debugPort = 9229;\r\nvar argv0 = 'node';\r\nvar _preload_modules = [];\r\nvar setSourceMapsEnabled = noop;\r\n\r\nvar _performance = {\r\n  now: typeof performance !== 'undefined' ? performance.now.bind(performance) : undefined,\r\n  timing: typeof performance !== 'undefined' ? performance.timing : undefined,\r\n};\r\nif (_performance.now === undefined) {\r\n  var nowOffset = Date.now();\r\n\r\n  if (_performance.timing && _performance.timing.navigationStart) {\r\n    nowOffset = _performance.timing.navigationStart;\r\n  }\r\n  _performance.now = () => Date.now() - nowOffset;\r\n}\r\n\r\nfunction uptime() {\r\n  return _performance.now() / 1000;\r\n}\r\n\r\nvar nanoPerSec = 1000000000;\r\nfunction hrtime(previousTimestamp) {\r\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\r\n  var clocktime = _performance.now() * 1e-3;\r\n  var seconds = Math.floor(clocktime) + baseNow;\r\n  var nanoseconds = Math.floor((clocktime % 1) * 1e9);\r\n  if (previousTimestamp) {\r\n    seconds = seconds - previousTimestamp[0];\r\n    nanoseconds = nanoseconds - previousTimestamp[1];\r\n    if (nanoseconds < 0) {\r\n      seconds--;\r\n      nanoseconds += nanoPerSec;\r\n    }\r\n  }\r\n  return [seconds, nanoseconds];\r\n}hrtime.bigint = function(time) {\r\n  var diff = hrtime(time);\r\n  if (typeof BigInt === 'undefined') {\r\n    return diff[0] * nanoPerSec + diff[1];\r\n  }\r\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\r\n};\r\n\r\nvar _maxListeners = 10;\r\nvar _events = {};\r\nvar _eventsCount = 0;\r\nfunction on () { return process }var addListener = on;\r\nvar once = on;\r\nvar off = on;\r\nvar removeListener = on;\r\nvar removeAllListeners = on;\r\nvar emit = noop;\r\nvar prependListener = on;\r\nvar prependOnceListener = on;\r\nfunction listeners (name) { return []; }\r\nvar process = {\r\n  version,\r\n  versions,\r\n  arch,\r\n  platform,\r\n  browser,\r\n  release,\r\n  _rawDebug,\r\n  moduleLoadList,\r\n  binding,\r\n  _linkedBinding,\r\n  _events,\r\n  _eventsCount,\r\n  _maxListeners,\r\n  on,\r\n  addListener,\r\n  once,\r\n  off,\r\n  removeListener,\r\n  removeAllListeners,\r\n  emit,\r\n  prependListener,\r\n  prependOnceListener,\r\n  listeners,\r\n  domain,\r\n  _exiting,\r\n  config,\r\n  dlopen,\r\n  uptime,\r\n  _getActiveRequests,\r\n  _getActiveHandles,\r\n  reallyExit,\r\n  _kill,\r\n  cpuUsage,\r\n  resourceUsage,\r\n  memoryUsage,\r\n  kill,\r\n  exit,\r\n  openStdin,\r\n  allowedNodeEnvironmentFlags,\r\n  assert,\r\n  features,\r\n  _fatalExceptions,\r\n  setUncaughtExceptionCaptureCallback,\r\n  hasUncaughtExceptionCaptureCallback,\r\n  emitWarning,\r\n  nextTick,\r\n  _tickCallback,\r\n  _debugProcess,\r\n  _debugEnd,\r\n  _startProfilerIdleNotifier,\r\n  _stopProfilerIdleNotifier,\r\n  stdout,\r\n  stdin,\r\n  stderr,\r\n  abort,\r\n  umask,\r\n  chdir,\r\n  cwd,\r\n  env,\r\n  title,\r\n  argv,\r\n  execArgv,\r\n  pid,\r\n  ppid,\r\n  execPath,\r\n  debugPort,\r\n  hrtime,\r\n  argv0,\r\n  _preload_modules,\r\n  setSourceMapsEnabled,\r\n};\n\nexport { _debugEnd, _debugProcess, _events, _eventsCount, _exiting, _fatalExceptions, _getActiveHandles, _getActiveRequests, _kill, _linkedBinding, _maxListeners, _preload_modules, _rawDebug, _startProfilerIdleNotifier, _stopProfilerIdleNotifier, _tickCallback, abort, addListener, allowedNodeEnvironmentFlags, arch, argv, argv0, assert, binding, browser, chdir, config, cpuUsage, cwd, debugPort, process as default, dlopen, domain, emit, emitWarning, env, execArgv, execPath, exit, features, hasUncaughtExceptionCaptureCallback, hrtime, kill, listeners, memoryUsage, moduleLoadList, nextTick, off, on, once, openStdin, pid, platform, ppid, prependListener, prependOnceListener, reallyExit, release, removeAllListeners, removeListener, resourceUsage, setSourceMapsEnabled, setUncaughtExceptionCaptureCallback, stderr, stdin, stdout, title, umask, uptime, version, versions };\n","export * as process from \"process\";\n","var exports$2 = {},\n  _dewExec$2 = false;\nfunction dew$2() {\n  if (_dewExec$2) return exports$2;\n  _dewExec$2 = true;\n  exports$2.byteLength = byteLength;\n  exports$2.toByteArray = toByteArray;\n  exports$2.fromByteArray = fromByteArray;\n  var lookup = [];\n  var revLookup = [];\n  var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i = 0, len = code.length; i < len; ++i) {\n    lookup[i] = code[i];\n    revLookup[code.charCodeAt(i)] = i;\n  }\n\n  // Support decoding URL-safe base64 strings, as Node.js does.\n  // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n  function getLens(b64) {\n    var len = b64.length;\n    if (len % 4 > 0) {\n      throw new Error(\"Invalid string. Length must be a multiple of 4\");\n    }\n\n    // Trim off extra bytes after placeholder bytes are found\n    // See: https://github.com/beatgammit/base64-js/issues/42\n    var validLen = b64.indexOf(\"=\");\n    if (validLen === -1) validLen = len;\n    var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n    return [validLen, placeHoldersLen];\n  }\n\n  // base64 is 4/3 + up to two characters of the original data\n  function byteLength(b64) {\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function _byteLength(b64, validLen, placeHoldersLen) {\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function toByteArray(b64) {\n    var tmp;\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n    var curByte = 0;\n\n    // if there are placeholders, only get up to the last complete 4 chars\n    var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n    var i;\n    for (i = 0; i < len; i += 4) {\n      tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n      arr[curByte++] = tmp >> 16 & 255;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 2) {\n      tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 1) {\n      tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    return arr;\n  }\n  function tripletToBase64(num) {\n    return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n  }\n  function encodeChunk(uint8, start, end) {\n    var tmp;\n    var output = [];\n    for (var i = start; i < end; i += 3) {\n      tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n      output.push(tripletToBase64(tmp));\n    }\n    return output.join(\"\");\n  }\n  function fromByteArray(uint8) {\n    var tmp;\n    var len = uint8.length;\n    var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n    var parts = [];\n    var maxChunkLength = 16383; // must be multiple of 3\n\n    // go through the array every three bytes, we'll deal with trailing stuff later\n    for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n      parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n    }\n\n    // pad the end with zeros, but make sure to not forget the extra bytes\n    if (extraBytes === 1) {\n      tmp = uint8[len - 1];\n      parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n    } else if (extraBytes === 2) {\n      tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n      parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n    }\n    return parts.join(\"\");\n  }\n  return exports$2;\n}\n\nvar exports$1 = {},\n  _dewExec$1 = false;\nfunction dew$1() {\n  if (_dewExec$1) return exports$1;\n  _dewExec$1 = true;\n  /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n  exports$1.read = function (buffer, offset, isLE, mLen, nBytes) {\n    var e, m;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i = isLE ? nBytes - 1 : 0;\n    var d = isLE ? -1 : 1;\n    var s = buffer[offset + i];\n    i += d;\n    e = s & (1 << -nBits) - 1;\n    s >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    m = e & (1 << -nBits) - 1;\n    e >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    if (e === 0) {\n      e = 1 - eBias;\n    } else if (e === eMax) {\n      return m ? NaN : (s ? -1 : 1) * Infinity;\n    } else {\n      m = m + Math.pow(2, mLen);\n      e = e - eBias;\n    }\n    return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n  };\n  exports$1.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n    var e, m, c;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n    var i = isLE ? 0 : nBytes - 1;\n    var d = isLE ? 1 : -1;\n    var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n      m = isNaN(value) ? 1 : 0;\n      e = eMax;\n    } else {\n      e = Math.floor(Math.log(value) / Math.LN2);\n      if (value * (c = Math.pow(2, -e)) < 1) {\n        e--;\n        c *= 2;\n      }\n      if (e + eBias >= 1) {\n        value += rt / c;\n      } else {\n        value += rt * Math.pow(2, 1 - eBias);\n      }\n      if (value * c >= 2) {\n        e++;\n        c /= 2;\n      }\n      if (e + eBias >= eMax) {\n        m = 0;\n        e = eMax;\n      } else if (e + eBias >= 1) {\n        m = (value * c - 1) * Math.pow(2, mLen);\n        e = e + eBias;\n      } else {\n        m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n        e = 0;\n      }\n    }\n    for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n    e = e << mLen | m;\n    eLen += mLen;\n    for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n    buffer[offset + i - d] |= s * 128;\n  };\n  return exports$1;\n}\n\nvar exports = {},\n  _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports;\n  _dewExec = true;\n  const base64 = dew$2();\n  const ieee754 = dew$1();\n  const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" // eslint-disable-line dot-notation\n  ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n  : null;\n  exports.Buffer = Buffer;\n  exports.SlowBuffer = SlowBuffer;\n  exports.INSPECT_MAX_BYTES = 50;\n  const K_MAX_LENGTH = 2147483647;\n  exports.kMaxLength = K_MAX_LENGTH;\n\n  /**\n   * If `Buffer.TYPED_ARRAY_SUPPORT`:\n   *   === true    Use Uint8Array implementation (fastest)\n   *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n   *               implementation (most compatible, even IE6)\n   *\n   * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n   * Opera 11.6+, iOS 4.2+.\n   *\n   * We report that the browser does not support typed arrays if the are not subclassable\n   * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n   * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n   * for __proto__ and has a buggy typed array implementation.\n   */\n  Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n  if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n  }\n  function typedArraySupport() {\n    // Can typed array instances can be augmented?\n    try {\n      const arr = new Uint8Array(1);\n      const proto = {\n        foo: function () {\n          return 42;\n        }\n      };\n      Object.setPrototypeOf(proto, Uint8Array.prototype);\n      Object.setPrototypeOf(arr, proto);\n      return arr.foo() === 42;\n    } catch (e) {\n      return false;\n    }\n  }\n  Object.defineProperty(Buffer.prototype, \"parent\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.buffer;\n    }\n  });\n  Object.defineProperty(Buffer.prototype, \"offset\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.byteOffset;\n    }\n  });\n  function createBuffer(length) {\n    if (length > K_MAX_LENGTH) {\n      throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n    // Return an augmented `Uint8Array` instance\n    const buf = new Uint8Array(length);\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n\n  /**\n   * The Buffer constructor returns instances of `Uint8Array` that have their\n   * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n   * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n   * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n   * returns a single octet.\n   *\n   * The `Uint8Array` prototype remains unmodified.\n   */\n\n  function Buffer(arg, encodingOrOffset, length) {\n    // Common case.\n    if (typeof arg === \"number\") {\n      if (typeof encodingOrOffset === \"string\") {\n        throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n      }\n      return allocUnsafe(arg);\n    }\n    return from(arg, encodingOrOffset, length);\n  }\n  Buffer.poolSize = 8192; // not used by this implementation\n\n  function from(value, encodingOrOffset, length) {\n    if (typeof value === \"string\") {\n      return fromString(value, encodingOrOffset);\n    }\n    if (ArrayBuffer.isView(value)) {\n      return fromArrayView(value);\n    }\n    if (value == null) {\n      throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n    }\n    if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof value === \"number\") {\n      throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n    }\n    const valueOf = value.valueOf && value.valueOf();\n    if (valueOf != null && valueOf !== value) {\n      return Buffer.from(valueOf, encodingOrOffset, length);\n    }\n    const b = fromObject(value);\n    if (b) return b;\n    if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n      return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n    }\n    throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n  }\n\n  /**\n   * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n   * if value is a number.\n   * Buffer.from(str[, encoding])\n   * Buffer.from(array)\n   * Buffer.from(buffer)\n   * Buffer.from(arrayBuffer[, byteOffset[, length]])\n   **/\n  Buffer.from = function (value, encodingOrOffset, length) {\n    return from(value, encodingOrOffset, length);\n  };\n\n  // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n  // https://github.com/feross/buffer/pull/148\n  Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n  Object.setPrototypeOf(Buffer, Uint8Array);\n  function assertSize(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n    } else if (size < 0) {\n      throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n  }\n  function alloc(size, fill, encoding) {\n    assertSize(size);\n    if (size <= 0) {\n      return createBuffer(size);\n    }\n    if (fill !== undefined) {\n      // Only pay attention to encoding if it's a string. This\n      // prevents accidentally sending in a number that would\n      // be interpreted as a start offset.\n      return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n    }\n    return createBuffer(size);\n  }\n\n  /**\n   * Creates a new filled Buffer instance.\n   * alloc(size[, fill[, encoding]])\n   **/\n  Buffer.alloc = function (size, fill, encoding) {\n    return alloc(size, fill, encoding);\n  };\n  function allocUnsafe(size) {\n    assertSize(size);\n    return createBuffer(size < 0 ? 0 : checked(size) | 0);\n  }\n\n  /**\n   * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n   * */\n  Buffer.allocUnsafe = function (size) {\n    return allocUnsafe(size);\n  };\n  /**\n   * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n   */\n  Buffer.allocUnsafeSlow = function (size) {\n    return allocUnsafe(size);\n  };\n  function fromString(string, encoding) {\n    if (typeof encoding !== \"string\" || encoding === \"\") {\n      encoding = \"utf8\";\n    }\n    if (!Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n    const length = byteLength(string, encoding) | 0;\n    let buf = createBuffer(length);\n    const actual = buf.write(string, encoding);\n    if (actual !== length) {\n      // Writing a hex string, for example, that contains invalid characters will\n      // cause everything after the first invalid character to be ignored. (e.g.\n      // 'abxxcd' will be treated as 'ab')\n      buf = buf.slice(0, actual);\n    }\n    return buf;\n  }\n  function fromArrayLike(array) {\n    const length = array.length < 0 ? 0 : checked(array.length) | 0;\n    const buf = createBuffer(length);\n    for (let i = 0; i < length; i += 1) {\n      buf[i] = array[i] & 255;\n    }\n    return buf;\n  }\n  function fromArrayView(arrayView) {\n    if (isInstance(arrayView, Uint8Array)) {\n      const copy = new Uint8Array(arrayView);\n      return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n    }\n    return fromArrayLike(arrayView);\n  }\n  function fromArrayBuffer(array, byteOffset, length) {\n    if (byteOffset < 0 || array.byteLength < byteOffset) {\n      throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n    }\n    if (array.byteLength < byteOffset + (length || 0)) {\n      throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n    }\n    let buf;\n    if (byteOffset === undefined && length === undefined) {\n      buf = new Uint8Array(array);\n    } else if (length === undefined) {\n      buf = new Uint8Array(array, byteOffset);\n    } else {\n      buf = new Uint8Array(array, byteOffset, length);\n    }\n\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function fromObject(obj) {\n    if (Buffer.isBuffer(obj)) {\n      const len = checked(obj.length) | 0;\n      const buf = createBuffer(len);\n      if (buf.length === 0) {\n        return buf;\n      }\n      obj.copy(buf, 0, 0, len);\n      return buf;\n    }\n    if (obj.length !== undefined) {\n      if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n        return createBuffer(0);\n      }\n      return fromArrayLike(obj);\n    }\n    if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n      return fromArrayLike(obj.data);\n    }\n  }\n  function checked(length) {\n    // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n    // length is NaN (which is otherwise coerced to zero.)\n    if (length >= K_MAX_LENGTH) {\n      throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n    }\n    return length | 0;\n  }\n  function SlowBuffer(length) {\n    if (+length != length) {\n      // eslint-disable-line eqeqeq\n      length = 0;\n    }\n    return Buffer.alloc(+length);\n  }\n  Buffer.isBuffer = function isBuffer(b) {\n    return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n  };\n  Buffer.compare = function compare(a, b) {\n    if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n    if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n    if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n      throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n    }\n    if (a === b) return 0;\n    let x = a.length;\n    let y = b.length;\n    for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n      if (a[i] !== b[i]) {\n        x = a[i];\n        y = b[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n  Buffer.isEncoding = function isEncoding(encoding) {\n    switch (String(encoding).toLowerCase()) {\n      case \"hex\":\n      case \"utf8\":\n      case \"utf-8\":\n      case \"ascii\":\n      case \"latin1\":\n      case \"binary\":\n      case \"base64\":\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return true;\n      default:\n        return false;\n    }\n  };\n  Buffer.concat = function concat(list, length) {\n    if (!Array.isArray(list)) {\n      throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n    }\n    if (list.length === 0) {\n      return Buffer.alloc(0);\n    }\n    let i;\n    if (length === undefined) {\n      length = 0;\n      for (i = 0; i < list.length; ++i) {\n        length += list[i].length;\n      }\n    }\n    const buffer = Buffer.allocUnsafe(length);\n    let pos = 0;\n    for (i = 0; i < list.length; ++i) {\n      let buf = list[i];\n      if (isInstance(buf, Uint8Array)) {\n        if (pos + buf.length > buffer.length) {\n          if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n          buf.copy(buffer, pos);\n        } else {\n          Uint8Array.prototype.set.call(buffer, buf, pos);\n        }\n      } else if (!Buffer.isBuffer(buf)) {\n        throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n      } else {\n        buf.copy(buffer, pos);\n      }\n      pos += buf.length;\n    }\n    return buffer;\n  };\n  function byteLength(string, encoding) {\n    if (Buffer.isBuffer(string)) {\n      return string.length;\n    }\n    if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n      return string.byteLength;\n    }\n    if (typeof string !== \"string\") {\n      throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n    }\n    const len = string.length;\n    const mustMatch = arguments.length > 2 && arguments[2] === true;\n    if (!mustMatch && len === 0) return 0;\n\n    // Use a for loop to avoid recursion\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return len;\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8ToBytes(string).length;\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return len * 2;\n        case \"hex\":\n          return len >>> 1;\n        case \"base64\":\n          return base64ToBytes(string).length;\n        default:\n          if (loweredCase) {\n            return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n          }\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.byteLength = byteLength;\n  function slowToString(encoding, start, end) {\n    let loweredCase = false;\n\n    // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n    // property of a typed array.\n\n    // This behaves neither like String nor Uint8Array in that we set start/end\n    // to their upper/lower bounds if the value passed is out of range.\n    // undefined is handled specially as per ECMA-262 6th Edition,\n    // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n    if (start === undefined || start < 0) {\n      start = 0;\n    }\n    // Return early if start > this.length. Done here to prevent potential uint32\n    // coercion fail below.\n    if (start > this.length) {\n      return \"\";\n    }\n    if (end === undefined || end > this.length) {\n      end = this.length;\n    }\n    if (end <= 0) {\n      return \"\";\n    }\n\n    // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n    end >>>= 0;\n    start >>>= 0;\n    if (end <= start) {\n      return \"\";\n    }\n    if (!encoding) encoding = \"utf8\";\n    while (true) {\n      switch (encoding) {\n        case \"hex\":\n          return hexSlice(this, start, end);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Slice(this, start, end);\n        case \"ascii\":\n          return asciiSlice(this, start, end);\n        case \"latin1\":\n        case \"binary\":\n          return latin1Slice(this, start, end);\n        case \"base64\":\n          return base64Slice(this, start, end);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return utf16leSlice(this, start, end);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (encoding + \"\").toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n\n  // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n  // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n  // reliably in a browserify context because there could be multiple different\n  // copies of the 'buffer' package in use. This method works even for Buffer\n  // instances that were created from another copy of the `buffer` package.\n  // See: https://github.com/feross/buffer/issues/154\n  Buffer.prototype._isBuffer = true;\n  function swap(b, n, m) {\n    const i = b[n];\n    b[n] = b[m];\n    b[m] = i;\n  }\n  Buffer.prototype.swap16 = function swap16() {\n    const len = this.length;\n    if (len % 2 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n    }\n    for (let i = 0; i < len; i += 2) {\n      swap(this, i, i + 1);\n    }\n    return this;\n  };\n  Buffer.prototype.swap32 = function swap32() {\n    const len = this.length;\n    if (len % 4 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n    }\n    for (let i = 0; i < len; i += 4) {\n      swap(this, i, i + 3);\n      swap(this, i + 1, i + 2);\n    }\n    return this;\n  };\n  Buffer.prototype.swap64 = function swap64() {\n    const len = this.length;\n    if (len % 8 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n    }\n    for (let i = 0; i < len; i += 8) {\n      swap(this, i, i + 7);\n      swap(this, i + 1, i + 6);\n      swap(this, i + 2, i + 5);\n      swap(this, i + 3, i + 4);\n    }\n    return this;\n  };\n  Buffer.prototype.toString = function toString() {\n    const length = this.length;\n    if (length === 0) return \"\";\n    if (arguments.length === 0) return utf8Slice(this, 0, length);\n    return slowToString.apply(this, arguments);\n  };\n  Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n  Buffer.prototype.equals = function equals(b) {\n    if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n    if (this === b) return true;\n    return Buffer.compare(this, b) === 0;\n  };\n  Buffer.prototype.inspect = function inspect() {\n    let str = \"\";\n    const max = exports.INSPECT_MAX_BYTES;\n    str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n    if (this.length > max) str += \" ... \";\n    return \"<Buffer \" + str + \">\";\n  };\n  if (customInspectSymbol) {\n    Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n  }\n  Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n    if (isInstance(target, Uint8Array)) {\n      target = Buffer.from(target, target.offset, target.byteLength);\n    }\n    if (!Buffer.isBuffer(target)) {\n      throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n    }\n    if (start === undefined) {\n      start = 0;\n    }\n    if (end === undefined) {\n      end = target ? target.length : 0;\n    }\n    if (thisStart === undefined) {\n      thisStart = 0;\n    }\n    if (thisEnd === undefined) {\n      thisEnd = this.length;\n    }\n    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n      throw new RangeError(\"out of range index\");\n    }\n    if (thisStart >= thisEnd && start >= end) {\n      return 0;\n    }\n    if (thisStart >= thisEnd) {\n      return -1;\n    }\n    if (start >= end) {\n      return 1;\n    }\n    start >>>= 0;\n    end >>>= 0;\n    thisStart >>>= 0;\n    thisEnd >>>= 0;\n    if (this === target) return 0;\n    let x = thisEnd - thisStart;\n    let y = end - start;\n    const len = Math.min(x, y);\n    const thisCopy = this.slice(thisStart, thisEnd);\n    const targetCopy = target.slice(start, end);\n    for (let i = 0; i < len; ++i) {\n      if (thisCopy[i] !== targetCopy[i]) {\n        x = thisCopy[i];\n        y = targetCopy[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n\n  // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n  // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n  //\n  // Arguments:\n  // - buffer - a Buffer to search\n  // - val - a string, Buffer, or number\n  // - byteOffset - an index into `buffer`; will be clamped to an int32\n  // - encoding - an optional encoding, relevant is val is a string\n  // - dir - true for indexOf, false for lastIndexOf\n  function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n    // Empty buffer means no match\n    if (buffer.length === 0) return -1;\n\n    // Normalize byteOffset\n    if (typeof byteOffset === \"string\") {\n      encoding = byteOffset;\n      byteOffset = 0;\n    } else if (byteOffset > 2147483647) {\n      byteOffset = 2147483647;\n    } else if (byteOffset < -2147483648) {\n      byteOffset = -2147483648;\n    }\n    byteOffset = +byteOffset; // Coerce to Number.\n    if (numberIsNaN(byteOffset)) {\n      // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n      byteOffset = dir ? 0 : buffer.length - 1;\n    }\n\n    // Normalize byteOffset: negative offsets start from the end of the buffer\n    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n    if (byteOffset >= buffer.length) {\n      if (dir) return -1;else byteOffset = buffer.length - 1;\n    } else if (byteOffset < 0) {\n      if (dir) byteOffset = 0;else return -1;\n    }\n\n    // Normalize val\n    if (typeof val === \"string\") {\n      val = Buffer.from(val, encoding);\n    }\n\n    // Finally, search either indexOf (if dir is true) or lastIndexOf\n    if (Buffer.isBuffer(val)) {\n      // Special case: looking for empty string/buffer always fails\n      if (val.length === 0) {\n        return -1;\n      }\n      return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n    } else if (typeof val === \"number\") {\n      val = val & 255; // Search for a byte value [0-255]\n      if (typeof Uint8Array.prototype.indexOf === \"function\") {\n        if (dir) {\n          return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n        } else {\n          return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n        }\n      }\n      return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n    }\n    throw new TypeError(\"val must be string, number or Buffer\");\n  }\n  function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n    let indexSize = 1;\n    let arrLength = arr.length;\n    let valLength = val.length;\n    if (encoding !== undefined) {\n      encoding = String(encoding).toLowerCase();\n      if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n        if (arr.length < 2 || val.length < 2) {\n          return -1;\n        }\n        indexSize = 2;\n        arrLength /= 2;\n        valLength /= 2;\n        byteOffset /= 2;\n      }\n    }\n    function read(buf, i) {\n      if (indexSize === 1) {\n        return buf[i];\n      } else {\n        return buf.readUInt16BE(i * indexSize);\n      }\n    }\n    let i;\n    if (dir) {\n      let foundIndex = -1;\n      for (i = byteOffset; i < arrLength; i++) {\n        if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n          if (foundIndex === -1) foundIndex = i;\n          if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n        } else {\n          if (foundIndex !== -1) i -= i - foundIndex;\n          foundIndex = -1;\n        }\n      }\n    } else {\n      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n      for (i = byteOffset; i >= 0; i--) {\n        let found = true;\n        for (let j = 0; j < valLength; j++) {\n          if (read(arr, i + j) !== read(val, j)) {\n            found = false;\n            break;\n          }\n        }\n        if (found) return i;\n      }\n    }\n    return -1;\n  }\n  Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n    return this.indexOf(val, byteOffset, encoding) !== -1;\n  };\n  Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n  };\n  Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n  };\n  function hexWrite(buf, string, offset, length) {\n    offset = Number(offset) || 0;\n    const remaining = buf.length - offset;\n    if (!length) {\n      length = remaining;\n    } else {\n      length = Number(length);\n      if (length > remaining) {\n        length = remaining;\n      }\n    }\n    const strLen = string.length;\n    if (length > strLen / 2) {\n      length = strLen / 2;\n    }\n    let i;\n    for (i = 0; i < length; ++i) {\n      const parsed = parseInt(string.substr(i * 2, 2), 16);\n      if (numberIsNaN(parsed)) return i;\n      buf[offset + i] = parsed;\n    }\n    return i;\n  }\n  function utf8Write(buf, string, offset, length) {\n    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  function asciiWrite(buf, string, offset, length) {\n    return blitBuffer(asciiToBytes(string), buf, offset, length);\n  }\n  function base64Write(buf, string, offset, length) {\n    return blitBuffer(base64ToBytes(string), buf, offset, length);\n  }\n  function ucs2Write(buf, string, offset, length) {\n    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  Buffer.prototype.write = function write(string, offset, length, encoding) {\n    // Buffer#write(string)\n    if (offset === undefined) {\n      encoding = \"utf8\";\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, encoding)\n    } else if (length === undefined && typeof offset === \"string\") {\n      encoding = offset;\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, offset[, length][, encoding])\n    } else if (isFinite(offset)) {\n      offset = offset >>> 0;\n      if (isFinite(length)) {\n        length = length >>> 0;\n        if (encoding === undefined) encoding = \"utf8\";\n      } else {\n        encoding = length;\n        length = undefined;\n      }\n    } else {\n      throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    }\n    const remaining = this.length - offset;\n    if (length === undefined || length > remaining) length = remaining;\n    if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n      throw new RangeError(\"Attempt to write outside buffer bounds\");\n    }\n    if (!encoding) encoding = \"utf8\";\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"hex\":\n          return hexWrite(this, string, offset, length);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Write(this, string, offset, length);\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return asciiWrite(this, string, offset, length);\n        case \"base64\":\n          // Warning: maxLength not taken into account in base64Write\n          return base64Write(this, string, offset, length);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return ucs2Write(this, string, offset, length);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  };\n  Buffer.prototype.toJSON = function toJSON() {\n    return {\n      type: \"Buffer\",\n      data: Array.prototype.slice.call(this._arr || this, 0)\n    };\n  };\n  function base64Slice(buf, start, end) {\n    if (start === 0 && end === buf.length) {\n      return base64.fromByteArray(buf);\n    } else {\n      return base64.fromByteArray(buf.slice(start, end));\n    }\n  }\n  function utf8Slice(buf, start, end) {\n    end = Math.min(buf.length, end);\n    const res = [];\n    let i = start;\n    while (i < end) {\n      const firstByte = buf[i];\n      let codePoint = null;\n      let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n      if (i + bytesPerSequence <= end) {\n        let secondByte, thirdByte, fourthByte, tempCodePoint;\n        switch (bytesPerSequence) {\n          case 1:\n            if (firstByte < 128) {\n              codePoint = firstByte;\n            }\n            break;\n          case 2:\n            secondByte = buf[i + 1];\n            if ((secondByte & 192) === 128) {\n              tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n              if (tempCodePoint > 127) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 3:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n              if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 4:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            fourthByte = buf[i + 3];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n              if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n                codePoint = tempCodePoint;\n              }\n            }\n        }\n      }\n      if (codePoint === null) {\n        // we did not generate a valid codePoint so insert a\n        // replacement char (U+FFFD) and advance only 1 byte\n        codePoint = 65533;\n        bytesPerSequence = 1;\n      } else if (codePoint > 65535) {\n        // encode to utf16 (surrogate pair dance)\n        codePoint -= 65536;\n        res.push(codePoint >>> 10 & 1023 | 55296);\n        codePoint = 56320 | codePoint & 1023;\n      }\n      res.push(codePoint);\n      i += bytesPerSequence;\n    }\n    return decodeCodePointsArray(res);\n  }\n\n  // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n  // the lowest limit is Chrome, with 0x10000 args.\n  // We go 1 magnitude less, for safety\n  const MAX_ARGUMENTS_LENGTH = 4096;\n  function decodeCodePointsArray(codePoints) {\n    const len = codePoints.length;\n    if (len <= MAX_ARGUMENTS_LENGTH) {\n      return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n    }\n\n    // Decode in chunks to avoid \"call stack size exceeded\".\n    let res = \"\";\n    let i = 0;\n    while (i < len) {\n      res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n    }\n    return res;\n  }\n  function asciiSlice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i] & 127);\n    }\n    return ret;\n  }\n  function latin1Slice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i]);\n    }\n    return ret;\n  }\n  function hexSlice(buf, start, end) {\n    const len = buf.length;\n    if (!start || start < 0) start = 0;\n    if (!end || end < 0 || end > len) end = len;\n    let out = \"\";\n    for (let i = start; i < end; ++i) {\n      out += hexSliceLookupTable[buf[i]];\n    }\n    return out;\n  }\n  function utf16leSlice(buf, start, end) {\n    const bytes = buf.slice(start, end);\n    let res = \"\";\n    // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n    for (let i = 0; i < bytes.length - 1; i += 2) {\n      res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n    }\n    return res;\n  }\n  Buffer.prototype.slice = function slice(start, end) {\n    const len = this.length;\n    start = ~~start;\n    end = end === undefined ? len : ~~end;\n    if (start < 0) {\n      start += len;\n      if (start < 0) start = 0;\n    } else if (start > len) {\n      start = len;\n    }\n    if (end < 0) {\n      end += len;\n      if (end < 0) end = 0;\n    } else if (end > len) {\n      end = len;\n    }\n    if (end < start) end = start;\n    const newBuf = this.subarray(start, end);\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(newBuf, Buffer.prototype);\n    return newBuf;\n  };\n\n  /*\n   * Need to make sure that buffer isn't trying to write out of bounds.\n   */\n  function checkOffset(offset, ext, length) {\n    if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n    if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n  }\n  Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      checkOffset(offset, byteLength, this.length);\n    }\n    let val = this[offset + --byteLength];\n    let mul = 1;\n    while (byteLength > 0 && (mul *= 256)) {\n      val += this[offset + --byteLength] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    return this[offset];\n  };\n  Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] | this[offset + 1] << 8;\n  };\n  Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] << 8 | this[offset + 1];\n  };\n  Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n  };\n  Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n  };\n  Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n    const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n    return BigInt(lo) + (BigInt(hi) << BigInt(32));\n  });\n  Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n    return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  });\n  Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let i = byteLength;\n    let mul = 1;\n    let val = this[offset + --i];\n    while (i > 0 && (mul *= 256)) {\n      val += this[offset + --i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    if (!(this[offset] & 128)) return this[offset];\n    return (255 - this[offset] + 1) * -1;\n  };\n  Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset] | this[offset + 1] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset + 1] | this[offset] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n  };\n  Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n  };\n  Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n    return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n  });\n  Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = (first << 24) +\n    // Overflow\n    this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n  });\n  Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, true, 23, 4);\n  };\n  Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, false, 23, 4);\n  };\n  Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, true, 52, 8);\n  };\n  Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, false, 52, 8);\n  };\n  function checkInt(buf, value, offset, ext, max, min) {\n    if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n    if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n  }\n  Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let mul = 1;\n    let i = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  function wrtBigUInt64LE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    return offset;\n  }\n  function wrtBigUInt64BE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset + 7] = lo;\n    lo = lo >> 8;\n    buf[offset + 6] = lo;\n    lo = lo >> 8;\n    buf[offset + 5] = lo;\n    lo = lo >> 8;\n    buf[offset + 4] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset + 3] = hi;\n    hi = hi >> 8;\n    buf[offset + 2] = hi;\n    hi = hi >> 8;\n    buf[offset + 1] = hi;\n    hi = hi >> 8;\n    buf[offset] = hi;\n    return offset + 8;\n  }\n  Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = 0;\n    let mul = 1;\n    let sub = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    let sub = 0;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n    if (value < 0) value = 255 + value + 1;\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n    return offset + 4;\n  };\n  Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    if (value < 0) value = 4294967295 + value + 1;\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  function checkIEEE754(buf, value, offset, ext, max, min) {\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n    if (offset < 0) throw new RangeError(\"Index out of range\");\n  }\n  function writeFloat(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 4);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 23, 4);\n    return offset + 4;\n  }\n  Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, false, noAssert);\n  };\n  function writeDouble(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 8);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 52, 8);\n    return offset + 8;\n  }\n  Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, false, noAssert);\n  };\n\n  // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n  Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n    if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n    if (!start) start = 0;\n    if (!end && end !== 0) end = this.length;\n    if (targetStart >= target.length) targetStart = target.length;\n    if (!targetStart) targetStart = 0;\n    if (end > 0 && end < start) end = start;\n\n    // Copy 0 bytes; we're done\n    if (end === start) return 0;\n    if (target.length === 0 || this.length === 0) return 0;\n\n    // Fatal error conditions\n    if (targetStart < 0) {\n      throw new RangeError(\"targetStart out of bounds\");\n    }\n    if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n    if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n\n    // Are we oob?\n    if (end > this.length) end = this.length;\n    if (target.length - targetStart < end - start) {\n      end = target.length - targetStart + start;\n    }\n    const len = end - start;\n    if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n      // Use built-in when available, missing from IE11\n      this.copyWithin(targetStart, start, end);\n    } else {\n      Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n    }\n    return len;\n  };\n\n  // Usage:\n  //    buffer.fill(number[, offset[, end]])\n  //    buffer.fill(buffer[, offset[, end]])\n  //    buffer.fill(string[, offset[, end]][, encoding])\n  Buffer.prototype.fill = function fill(val, start, end, encoding) {\n    // Handle string cases:\n    if (typeof val === \"string\") {\n      if (typeof start === \"string\") {\n        encoding = start;\n        start = 0;\n        end = this.length;\n      } else if (typeof end === \"string\") {\n        encoding = end;\n        end = this.length;\n      }\n      if (encoding !== undefined && typeof encoding !== \"string\") {\n        throw new TypeError(\"encoding must be a string\");\n      }\n      if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n        throw new TypeError(\"Unknown encoding: \" + encoding);\n      }\n      if (val.length === 1) {\n        const code = val.charCodeAt(0);\n        if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n          // Fast path: If `val` fits into a single byte, use that numeric value.\n          val = code;\n        }\n      }\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n    } else if (typeof val === \"boolean\") {\n      val = Number(val);\n    }\n\n    // Invalid ranges are not set to a default, so can range check early.\n    if (start < 0 || this.length < start || this.length < end) {\n      throw new RangeError(\"Out of range index\");\n    }\n    if (end <= start) {\n      return this;\n    }\n    start = start >>> 0;\n    end = end === undefined ? this.length : end >>> 0;\n    if (!val) val = 0;\n    let i;\n    if (typeof val === \"number\") {\n      for (i = start; i < end; ++i) {\n        this[i] = val;\n      }\n    } else {\n      const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n      const len = bytes.length;\n      if (len === 0) {\n        throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n      }\n      for (i = 0; i < end - start; ++i) {\n        this[i + start] = bytes[i % len];\n      }\n    }\n    return this;\n  };\n\n  // CUSTOM ERRORS\n  // =============\n\n  // Simplified versions from Node, changed for Buffer-only usage\n  const errors = {};\n  function E(sym, getMessage, Base) {\n    errors[sym] = class NodeError extends Base {\n      constructor() {\n        super();\n        Object.defineProperty(this, \"message\", {\n          value: getMessage.apply(this, arguments),\n          writable: true,\n          configurable: true\n        });\n\n        // Add the error code to the name to include it in the stack trace.\n        this.name = `${this.name} [${sym}]`;\n        // Access the stack to generate the error message including the error code\n        // from the name.\n        this.stack; // eslint-disable-line no-unused-expressions\n        // Reset the name to the actual name.\n        delete this.name;\n      }\n      get code() {\n        return sym;\n      }\n      set code(value) {\n        Object.defineProperty(this, \"code\", {\n          configurable: true,\n          enumerable: true,\n          value,\n          writable: true\n        });\n      }\n      toString() {\n        return `${this.name} [${sym}]: ${this.message}`;\n      }\n    };\n  }\n  E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`;\n    }\n    return \"Attempt to access memory outside buffer bounds\";\n  }, RangeError);\n  E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n  }, TypeError);\n  E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`;\n    let received = input;\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input));\n    } else if (typeof input === \"bigint\") {\n      received = String(input);\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received);\n      }\n      received += \"n\";\n    }\n    msg += ` It must be ${range}. Received ${received}`;\n    return msg;\n  }, RangeError);\n  function addNumericalSeparator(val) {\n    let res = \"\";\n    let i = val.length;\n    const start = val[0] === \"-\" ? 1 : 0;\n    for (; i >= start + 4; i -= 3) {\n      res = `_${val.slice(i - 3, i)}${res}`;\n    }\n    return `${val.slice(0, i)}${res}`;\n  }\n\n  // CHECK FUNCTIONS\n  // ===============\n\n  function checkBounds(buf, offset, byteLength) {\n    validateNumber(offset, \"offset\");\n    if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n      boundsError(offset, buf.length - (byteLength + 1));\n    }\n  }\n  function checkIntBI(value, min, max, buf, offset, byteLength) {\n    if (value > max || value < min) {\n      const n = typeof min === \"bigint\" ? \"n\" : \"\";\n      let range;\n      {\n        if (min === 0 || min === BigInt(0)) {\n          range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n        } else {\n          range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n        }\n      }\n      throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n    }\n    checkBounds(buf, offset, byteLength);\n  }\n  function validateNumber(value, name) {\n    if (typeof value !== \"number\") {\n      throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n    }\n  }\n  function boundsError(value, length, type) {\n    if (Math.floor(value) !== value) {\n      validateNumber(value, type);\n      throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n    }\n    if (length < 0) {\n      throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n    }\n    throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n  }\n\n  // HELPER FUNCTIONS\n  // ================\n\n  const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n  function base64clean(str) {\n    // Node takes equal signs as end of the Base64 encoding\n    str = str.split(\"=\")[0];\n    // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n    str = str.trim().replace(INVALID_BASE64_RE, \"\");\n    // Node converts strings with length < 2 to ''\n    if (str.length < 2) return \"\";\n    // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n    while (str.length % 4 !== 0) {\n      str = str + \"=\";\n    }\n    return str;\n  }\n  function utf8ToBytes(string, units) {\n    units = units || Infinity;\n    let codePoint;\n    const length = string.length;\n    let leadSurrogate = null;\n    const bytes = [];\n    for (let i = 0; i < length; ++i) {\n      codePoint = string.charCodeAt(i);\n\n      // is surrogate component\n      if (codePoint > 55295 && codePoint < 57344) {\n        // last char was a lead\n        if (!leadSurrogate) {\n          // no lead yet\n          if (codePoint > 56319) {\n            // unexpected trail\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          } else if (i + 1 === length) {\n            // unpaired lead\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          }\n\n          // valid lead\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // 2 leads in a row\n        if (codePoint < 56320) {\n          if ((units -= 3) > -1) bytes.push(239, 191, 189);\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // valid surrogate pair\n        codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n      } else if (leadSurrogate) {\n        // valid bmp char, but last char was a lead\n        if ((units -= 3) > -1) bytes.push(239, 191, 189);\n      }\n      leadSurrogate = null;\n\n      // encode utf8\n      if (codePoint < 128) {\n        if ((units -= 1) < 0) break;\n        bytes.push(codePoint);\n      } else if (codePoint < 2048) {\n        if ((units -= 2) < 0) break;\n        bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n      } else if (codePoint < 65536) {\n        if ((units -= 3) < 0) break;\n        bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else if (codePoint < 1114112) {\n        if ((units -= 4) < 0) break;\n        bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else {\n        throw new Error(\"Invalid code point\");\n      }\n    }\n    return bytes;\n  }\n  function asciiToBytes(str) {\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      // Node's code seems to be doing this and not & 0x7F..\n      byteArray.push(str.charCodeAt(i) & 255);\n    }\n    return byteArray;\n  }\n  function utf16leToBytes(str, units) {\n    let c, hi, lo;\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      if ((units -= 2) < 0) break;\n      c = str.charCodeAt(i);\n      hi = c >> 8;\n      lo = c % 256;\n      byteArray.push(lo);\n      byteArray.push(hi);\n    }\n    return byteArray;\n  }\n  function base64ToBytes(str) {\n    return base64.toByteArray(base64clean(str));\n  }\n  function blitBuffer(src, dst, offset, length) {\n    let i;\n    for (i = 0; i < length; ++i) {\n      if (i + offset >= dst.length || i >= src.length) break;\n      dst[i + offset] = src[i];\n    }\n    return i;\n  }\n\n  // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n  // the `instanceof` check but they should be treated as of that type.\n  // See: https://github.com/feross/buffer/issues/166\n  function isInstance(obj, type) {\n    return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n  }\n  function numberIsNaN(obj) {\n    // For IE11 support\n    return obj !== obj; // eslint-disable-line no-self-compare\n  }\n\n  // Create lookup table for `toString('hex')`\n  // See: https://github.com/feross/buffer/issues/219\n  const hexSliceLookupTable = function () {\n    const alphabet = \"0123456789abcdef\";\n    const table = new Array(256);\n    for (let i = 0; i < 16; ++i) {\n      const i16 = i * 16;\n      for (let j = 0; j < 16; ++j) {\n        table[i16 + j] = alphabet[i] + alphabet[j];\n      }\n    }\n    return table;\n  }();\n\n  // Return not function with Error if BigInt not supported\n  function defineBigIntMethod(fn) {\n    return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n  }\n  function BufferBigIntNotDefined() {\n    throw new Error(\"BigInt not supported\");\n  }\n  return exports;\n}\n\nexport { dew as d };\n","import { d as dew } from './chunk-DtuTasat.js';\n\nconst exports = dew();\nexports['Buffer']; exports['SlowBuffer']; exports['INSPECT_MAX_BYTES']; exports['kMaxLength'];\n\nvar Buffer = exports.Buffer;\r\nvar INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;\r\nvar kMaxLength = exports.kMaxLength;\n\nexport { Buffer, INSPECT_MAX_BYTES, exports as default, kMaxLength };\n","export { Buffer } from \"buffer\";\n","export { DynamicSnippetsGenerator } from \"./DynamicSnippetsGenerator.js\";\nexport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator.js\";\n","import {\n    AbstractAstNode,\n    AbstractDynamicSnippetsGenerator,\n    FernGeneratorExec,\n    Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator.js\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n    DynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator\n> {\n    constructor({\n        ir,\n        config\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n    }) {\n        super(new DynamicSnippetsGeneratorContext({ ir, config }));\n    }\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        return super.generate(request, options);\n    }\n\n    public generateSync(request: FernIr.dynamic.EndpointSnippetRequest): FernIr.dynamic.EndpointSnippetResponse {\n        return super.generateSync(request);\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options?: Options\n    ): Promise<AbstractAstNode> {\n        return await super.generateSnippetAst(request, options);\n    }\n\n    protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n        return new EndpointSnippetGenerator({ context });\n    }\n}\n","// Force cache invalidation for CI - server URL templating feature\nexport { addPrefixToString } from \"./addPrefixToString.js\";\nexport { applyOpenAPIOverlay, type Overlay, type OverlayAction } from \"./applyOpenAPIOverlay.js\";\nexport {\n    assert,\n    assertDefined,\n    assertNever,\n    assertNeverNoThrow,\n    assertNonNull,\n    assertString,\n    assertVoidNoThrow\n} from \"./assert.js\";\nexport { delay } from \"./delay/delay.js\";\nexport { withMinimumTime } from \"./delay/withMinimumTime.js\";\nexport { EMPTY_ARRAY, EMPTY_OBJECT } from \"./empty.js\";\nexport * as Examples from \"./examples.js\";\nexport { extractErrorMessage } from \"./extractErrorMessage.js\";\nexport { getDuplicates } from \"./getDuplicates.js\";\nexport { identity } from \"./identity.js\";\nexport { isNonNullish } from \"./isNonNullish.js\";\nexport { MediaType } from \"./mediaType.js\";\nexport { mergeWithOverrides } from \"./mergeWithOverrides.js\";\nexport { noop } from \"./noop.js\";\nexport {\n    haveSameNullishness,\n    nullIfNullish,\n    nullIfSomeNullish,\n    undefinedIfNullish,\n    undefinedIfSomeNullish\n} from \"./nullishUtils.js\";\nexport { type ObjectPropertiesVisitor, visitObject, visitObjectAsync } from \"./ObjectPropertiesVisitor.js\";\nexport { type Entries, entries } from \"./objects/entries.js\";\nexport { isPlainObject } from \"./objects/isPlainObject.js\";\nexport { keys } from \"./objects/keys.js\";\nexport { mapValues } from \"./objects/mapValues.js\";\nexport { type Values, values } from \"./objects/values.js\";\nexport { parseEndpointLocator } from \"./parseEndpointLocator.js\";\nexport { PLATFORM, type Platform } from \"./platform.js\";\nexport { removeSuffix } from \"./removeSuffix.js\";\nexport { replaceEnvVariables } from \"./replaceEnvVars.js\";\nexport { SymbolRegistry, type SymbolRegistryOptions } from \"./SymbolRegistry.js\";\nexport { sanitizeChangelogEntry } from \"./sanitizeChangelogEntry.js\";\nexport { SKIP_MARKER, sanitizeNullValues } from \"./sanitizeNullValues.js\";\nexport { diffSemverOrThrow, parseSemverOrThrow } from \"./semverUtils.js\";\nexport { type SetRequired } from \"./setRequired.js\";\nexport { stripLeadingSlash } from \"./stripLeadingSlash.js\";\nexport { titleCase } from \"./titleCase.js\";\nexport type { ContainerRunner, Digit, Letter, LowercaseLetter, UppercaseLetter } from \"./types.js\";\nexport { validateAgainstJsonSchema } from \"./validateAgainstJsonSchema.js\";\nexport { visitDiscriminatedUnion } from \"./visitDiscriminatedUnion.js\";\nexport type { WithoutQuestionMarks } from \"./withoutQuestionMarks.js\";\n","/**\n * @license\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"es\" --repo lodash/lodash#4.18.1 -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nexport { default as add } from './add.js';\nexport { default as after } from './after.js';\nexport { default as ary } from './ary.js';\nexport { default as assign } from './assign.js';\nexport { default as assignIn } from './assignIn.js';\nexport { default as assignInWith } from './assignInWith.js';\nexport { default as assignWith } from './assignWith.js';\nexport { default as at } from './at.js';\nexport { default as attempt } from './attempt.js';\nexport { default as before } from './before.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as bindKey } from './bindKey.js';\nexport { default as camelCase } from './camelCase.js';\nexport { default as capitalize } from './capitalize.js';\nexport { default as castArray } from './castArray.js';\nexport { default as ceil } from './ceil.js';\nexport { default as chain } from './chain.js';\nexport { default as chunk } from './chunk.js';\nexport { default as clamp } from './clamp.js';\nexport { default as clone } from './clone.js';\nexport { default as cloneDeep } from './cloneDeep.js';\nexport { default as cloneDeepWith } from './cloneDeepWith.js';\nexport { default as cloneWith } from './cloneWith.js';\nexport { default as commit } from './commit.js';\nexport { default as compact } from './compact.js';\nexport { default as concat } from './concat.js';\nexport { default as cond } from './cond.js';\nexport { default as conforms } from './conforms.js';\nexport { default as conformsTo } from './conformsTo.js';\nexport { default as constant } from './constant.js';\nexport { default as countBy } from './countBy.js';\nexport { default as create } from './create.js';\nexport { default as curry } from './curry.js';\nexport { default as curryRight } from './curryRight.js';\nexport { default as debounce } from './debounce.js';\nexport { default as deburr } from './deburr.js';\nexport { default as defaultTo } from './defaultTo.js';\nexport { default as defaults } from './defaults.js';\nexport { default as defaultsDeep } from './defaultsDeep.js';\nexport { default as defer } from './defer.js';\nexport { default as delay } from './delay.js';\nexport { default as difference } from './difference.js';\nexport { default as differenceBy } from './differenceBy.js';\nexport { default as differenceWith } from './differenceWith.js';\nexport { default as divide } from './divide.js';\nexport { default as drop } from './drop.js';\nexport { default as dropRight } from './dropRight.js';\nexport { default as dropRightWhile } from './dropRightWhile.js';\nexport { default as dropWhile } from './dropWhile.js';\nexport { default as each } from './each.js';\nexport { default as eachRight } from './eachRight.js';\nexport { default as endsWith } from './endsWith.js';\nexport { default as entries } from './entries.js';\nexport { default as entriesIn } from './entriesIn.js';\nexport { default as eq } from './eq.js';\nexport { default as escape } from './escape.js';\nexport { default as escapeRegExp } from './escapeRegExp.js';\nexport { default as every } from './every.js';\nexport { default as extend } from './extend.js';\nexport { default as extendWith } from './extendWith.js';\nexport { default as fill } from './fill.js';\nexport { default as filter } from './filter.js';\nexport { default as find } from './find.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findKey } from './findKey.js';\nexport { default as findLast } from './findLast.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as findLastKey } from './findLastKey.js';\nexport { default as first } from './first.js';\nexport { default as flatMap } from './flatMap.js';\nexport { default as flatMapDeep } from './flatMapDeep.js';\nexport { default as flatMapDepth } from './flatMapDepth.js';\nexport { default as flatten } from './flatten.js';\nexport { default as flattenDeep } from './flattenDeep.js';\nexport { default as flattenDepth } from './flattenDepth.js';\nexport { default as flip } from './flip.js';\nexport { default as floor } from './floor.js';\nexport { default as flow } from './flow.js';\nexport { default as flowRight } from './flowRight.js';\nexport { default as forEach } from './forEach.js';\nexport { default as forEachRight } from './forEachRight.js';\nexport { default as forIn } from './forIn.js';\nexport { default as forInRight } from './forInRight.js';\nexport { default as forOwn } from './forOwn.js';\nexport { default as forOwnRight } from './forOwnRight.js';\nexport { default as fromPairs } from './fromPairs.js';\nexport { default as functions } from './functions.js';\nexport { default as functionsIn } from './functionsIn.js';\nexport { default as get } from './get.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as gt } from './gt.js';\nexport { default as gte } from './gte.js';\nexport { default as has } from './has.js';\nexport { default as hasIn } from './hasIn.js';\nexport { default as head } from './head.js';\nexport { default as identity } from './identity.js';\nexport { default as inRange } from './inRange.js';\nexport { default as includes } from './includes.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as initial } from './initial.js';\nexport { default as intersection } from './intersection.js';\nexport { default as intersectionBy } from './intersectionBy.js';\nexport { default as intersectionWith } from './intersectionWith.js';\nexport { default as invert } from './invert.js';\nexport { default as invertBy } from './invertBy.js';\nexport { default as invoke } from './invoke.js';\nexport { default as invokeMap } from './invokeMap.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isArrayLike } from './isArrayLike.js';\nexport { default as isArrayLikeObject } from './isArrayLikeObject.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isBuffer } from './isBuffer.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isEqualWith } from './isEqualWith.js';\nexport { default as isError } from './isError.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isInteger } from './isInteger.js';\nexport { default as isLength } from './isLength.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isMatchWith } from './isMatchWith.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isNative } from './isNative.js';\nexport { default as isNil } from './isNil.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isObject } from './isObject.js';\nexport { default as isObjectLike } from './isObjectLike.js';\nexport { default as isPlainObject } from './isPlainObject.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isSafeInteger } from './isSafeInteger.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isString } from './isString.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isWeakSet } from './isWeakSet.js';\nexport { default as iteratee } from './iteratee.js';\nexport { default as join } from './join.js';\nexport { default as kebabCase } from './kebabCase.js';\nexport { default as keyBy } from './keyBy.js';\nexport { default as keys } from './keys.js';\nexport { default as keysIn } from './keysIn.js';\nexport { default as last } from './last.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as lodash } from './wrapperLodash.js';\nexport { default as lowerCase } from './lowerCase.js';\nexport { default as lowerFirst } from './lowerFirst.js';\nexport { default as lt } from './lt.js';\nexport { default as lte } from './lte.js';\nexport { default as map } from './map.js';\nexport { default as mapKeys } from './mapKeys.js';\nexport { default as mapValues } from './mapValues.js';\nexport { default as matches } from './matches.js';\nexport { default as matchesProperty } from './matchesProperty.js';\nexport { default as max } from './max.js';\nexport { default as maxBy } from './maxBy.js';\nexport { default as mean } from './mean.js';\nexport { default as meanBy } from './meanBy.js';\nexport { default as memoize } from './memoize.js';\nexport { default as merge } from './merge.js';\nexport { default as mergeWith } from './mergeWith.js';\nexport { default as method } from './method.js';\nexport { default as methodOf } from './methodOf.js';\nexport { default as min } from './min.js';\nexport { default as minBy } from './minBy.js';\nexport { default as mixin } from './mixin.js';\nexport { default as multiply } from './multiply.js';\nexport { default as negate } from './negate.js';\nexport { default as next } from './next.js';\nexport { default as noop } from './noop.js';\nexport { default as now } from './now.js';\nexport { default as nth } from './nth.js';\nexport { default as nthArg } from './nthArg.js';\nexport { default as omit } from './omit.js';\nexport { default as omitBy } from './omitBy.js';\nexport { default as once } from './once.js';\nexport { default as orderBy } from './orderBy.js';\nexport { default as over } from './over.js';\nexport { default as overArgs } from './overArgs.js';\nexport { default as overEvery } from './overEvery.js';\nexport { default as overSome } from './overSome.js';\nexport { default as pad } from './pad.js';\nexport { default as padEnd } from './padEnd.js';\nexport { default as padStart } from './padStart.js';\nexport { default as parseInt } from './parseInt.js';\nexport { default as partial } from './partial.js';\nexport { default as partialRight } from './partialRight.js';\nexport { default as partition } from './partition.js';\nexport { default as pick } from './pick.js';\nexport { default as pickBy } from './pickBy.js';\nexport { default as plant } from './plant.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as pull } from './pull.js';\nexport { default as pullAll } from './pullAll.js';\nexport { default as pullAllBy } from './pullAllBy.js';\nexport { default as pullAllWith } from './pullAllWith.js';\nexport { default as pullAt } from './pullAt.js';\nexport { default as random } from './random.js';\nexport { default as range } from './range.js';\nexport { default as rangeRight } from './rangeRight.js';\nexport { default as rearg } from './rearg.js';\nexport { default as reduce } from './reduce.js';\nexport { default as reduceRight } from './reduceRight.js';\nexport { default as reject } from './reject.js';\nexport { default as remove } from './remove.js';\nexport { default as repeat } from './repeat.js';\nexport { default as replace } from './replace.js';\nexport { default as rest } from './rest.js';\nexport { default as result } from './result.js';\nexport { default as reverse } from './reverse.js';\nexport { default as round } from './round.js';\nexport { default as sample } from './sample.js';\nexport { default as sampleSize } from './sampleSize.js';\nexport { default as set } from './set.js';\nexport { default as setWith } from './setWith.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as size } from './size.js';\nexport { default as slice } from './slice.js';\nexport { default as snakeCase } from './snakeCase.js';\nexport { default as some } from './some.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as sortedIndexBy } from './sortedIndexBy.js';\nexport { default as sortedIndexOf } from './sortedIndexOf.js';\nexport { default as sortedLastIndex } from './sortedLastIndex.js';\nexport { default as sortedLastIndexBy } from './sortedLastIndexBy.js';\nexport { default as sortedLastIndexOf } from './sortedLastIndexOf.js';\nexport { default as sortedUniq } from './sortedUniq.js';\nexport { default as sortedUniqBy } from './sortedUniqBy.js';\nexport { default as split } from './split.js';\nexport { default as spread } from './spread.js';\nexport { default as startCase } from './startCase.js';\nexport { default as startsWith } from './startsWith.js';\nexport { default as stubArray } from './stubArray.js';\nexport { default as stubFalse } from './stubFalse.js';\nexport { default as stubObject } from './stubObject.js';\nexport { default as stubString } from './stubString.js';\nexport { default as stubTrue } from './stubTrue.js';\nexport { default as subtract } from './subtract.js';\nexport { default as sum } from './sum.js';\nexport { default as sumBy } from './sumBy.js';\nexport { default as tail } from './tail.js';\nexport { default as take } from './take.js';\nexport { default as takeRight } from './takeRight.js';\nexport { default as takeRightWhile } from './takeRightWhile.js';\nexport { default as takeWhile } from './takeWhile.js';\nexport { default as tap } from './tap.js';\nexport { default as template } from './template.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as throttle } from './throttle.js';\nexport { default as thru } from './thru.js';\nexport { default as times } from './times.js';\nexport { default as toArray } from './toArray.js';\nexport { default as toFinite } from './toFinite.js';\nexport { default as toInteger } from './toInteger.js';\nexport { default as toIterator } from './toIterator.js';\nexport { default as toJSON } from './toJSON.js';\nexport { default as toLength } from './toLength.js';\nexport { default as toLower } from './toLower.js';\nexport { default as toNumber } from './toNumber.js';\nexport { default as toPairs } from './toPairs.js';\nexport { default as toPairsIn } from './toPairsIn.js';\nexport { default as toPath } from './toPath.js';\nexport { default as toPlainObject } from './toPlainObject.js';\nexport { default as toSafeInteger } from './toSafeInteger.js';\nexport { default as toString } from './toString.js';\nexport { default as toUpper } from './toUpper.js';\nexport { default as transform } from './transform.js';\nexport { default as trim } from './trim.js';\nexport { default as trimEnd } from './trimEnd.js';\nexport { default as trimStart } from './trimStart.js';\nexport { default as truncate } from './truncate.js';\nexport { default as unary } from './unary.js';\nexport { default as unescape } from './unescape.js';\nexport { default as union } from './union.js';\nexport { default as unionBy } from './unionBy.js';\nexport { default as unionWith } from './unionWith.js';\nexport { default as uniq } from './uniq.js';\nexport { default as uniqBy } from './uniqBy.js';\nexport { default as uniqWith } from './uniqWith.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as unset } from './unset.js';\nexport { default as unzip } from './unzip.js';\nexport { default as unzipWith } from './unzipWith.js';\nexport { default as update } from './update.js';\nexport { default as updateWith } from './updateWith.js';\nexport { default as upperCase } from './upperCase.js';\nexport { default as upperFirst } from './upperFirst.js';\nexport { default as value } from './value.js';\nexport { default as valueOf } from './valueOf.js';\nexport { default as values } from './values.js';\nexport { default as valuesIn } from './valuesIn.js';\nexport { default as without } from './without.js';\nexport { default as words } from './words.js';\nexport { default as wrap } from './wrap.js';\nexport { default as wrapperAt } from './wrapperAt.js';\nexport { default as wrapperChain } from './wrapperChain.js';\nexport { default as wrapperCommit } from './commit.js';\nexport { default as wrapperLodash } from './wrapperLodash.js';\nexport { default as wrapperNext } from './next.js';\nexport { default as wrapperPlant } from './plant.js';\nexport { default as wrapperReverse } from './wrapperReverse.js';\nexport { default as wrapperToIterator } from './toIterator.js';\nexport { default as wrapperValue } from './wrapperValue.js';\nexport { default as xor } from './xor.js';\nexport { default as xorBy } from './xorBy.js';\nexport { default as xorWith } from './xorWith.js';\nexport { default as zip } from './zip.js';\nexport { default as zipObject } from './zipObject.js';\nexport { default as zipObjectDeep } from './zipObjectDeep.js';\nexport { default as zipWith } from './zipWith.js';\nexport { default } from './lodash.default.js';\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nexport default noop;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default strictIndexOf;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nexport default arrayPush;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nexport default createCompounder;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduce;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default basePropertyOf;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nexport default words;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nexport default getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nexport default stubArray;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalArrays;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nexport default cacheHas;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nexport default equalByTag;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nexport default setToArray;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nexport default equalObjects;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arrayIncludesWith;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseUniq;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nexport default createSet;\n","import baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nexport default uniqWith;\n","/**\n * Asserts that a condition is truthy, throwing an exception with the specified message if it is falsy.\n */\nexport function assert(condition: unknown, message?: string): asserts condition {\n    if (!condition) {\n        throw new Error(message ?? \"Expected condition to be truthy but got falsy.\");\n    }\n}\n\nexport function assertDefined<T>(val: T, message?: string): asserts val is Exclude<T, undefined> {\n    if (val === undefined) {\n        throw new Error(message ?? \"Expected value to be defined but got undefined.\");\n    }\n}\n\nexport function assertNonNull<T>(val: T, message?: string): asserts val is Exclude<T, null> {\n    if (val === null) {\n        throw new Error(message ?? \"Expected value to be non-null but got null.\");\n    }\n}\n\nexport function assertString(val: unknown, message?: string): asserts val is string {\n    if (typeof val !== \"string\") {\n        throw new Error(message ?? `Expected value to be a string but got ${typeof val}.`);\n    }\n}\n\nexport function assertNever(x: never): never {\n    throw new Error(\"Unexpected value: \" + JSON.stringify(x));\n}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertNeverNoThrow(_: never): void {}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertVoidNoThrow(_x: void): void {}\n","export function keys<T extends object>(object: T): (keyof T)[] {\n    return Object.keys(object) as (keyof T)[];\n}\n","export { AbstractAstNode } from \"./AbstractAstNode.js\";\nexport { AbstractFormatter, NopFormatter } from \"./AbstractFormatter.js\";\nexport { AbstractWriter } from \"./AbstractWriter.js\";\nexport {\n    type Argument,\n    type Arguments,\n    hasNamedArgument,\n    isNamedArgument,\n    type NamedArgument,\n    type UnnamedArgument\n} from \"./Argument.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Ternary } from \"./Ternary.js\";\n","import { tag } from \"../utils/stacktrace.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport abstract class AbstractAstNode {\n    /**\n     * Every AST node knows how to write itself to a string.\n     */\n    public abstract write(writer: AbstractWriter): void;\n\n    public constructor() {\n        // when FERN_STACK_TRACK is defined this will track the stack trace of the current AstNode.\n        // otherwise this has absolutely no effect whatsoever.\n        tag(this);\n    }\n}\n","/**\n * Global flag that enables or disables stack tracing functionality throughout the application.\n * This is controlled via the FERN_STACK_TRACK environment variable.\n *\n * When enabled (truthy environment variable value), stack traces will be captured and processed\n * by the stacktrace functions in this module. When disabled, the stacktrace() function returns\n * an empty array for performance optimization.\n *\n * @example\n * // Enable tracing by setting the environment variable\n * // FERN_STACK_TRACK=1 <cmdline>\n */\nconst key = process.env[\"FERN_STACK_TRACK\"]?.toLowerCase() ?? \"\";\n\nexport const enableStackTracking = key !== \"\" && key !== \"0\" && key !== \"false\";\n\n/** The style of comments desired for the stack tracking comments\n *\n * can be \"single\", \"multiline\", or \"box\".\n * if not set to one of those, defaults to \"single\".\n */\nexport const trackingType = [\"single\", \"multiline\", \"box\"].includes(key) ? key : \"single\";\n\nif (enableStackTracking) {\n    // we're going to put a hard max limit on the stack trace to prevent infinite recursion and excessive stack generation\n    Error.stackTraceLimit = 50;\n}\n\n/**\n * Configuration options for controlling stack trace capture and filtering behavior.\n */\ninterface StackTraceOptions {\n    /**\n     * Maximum number of stack frames to return after filtering.\n     *\n     * Maximum may never exceed 50.\n     * @default 50\n     */\n    maxFrames?: number;\n\n    /**\n     * Number of frames to skip from the beginning of the filtered stack trace.\n     * Useful for omitting wrapper functions from the output.\n     * @default 0\n     */\n    skip?: number;\n\n    /**\n     * Array of function name substrings that trigger an early stop when encountered.\n     * When a frame's function name includes any of these strings, that frame and all\n     * subsequent frames will be excluded from the output.\n     *\n     * implicitly includes \"runInteractiveTask\"\n     * @default []\n     */\n    stopOn?: string[];\n\n    /**\n     * Array of file path substrings to filter out. Any frame whose path contains\n     * any of these strings will be excluded from the output.\n     * @default []\n     */\n    filterPaths?: string[];\n\n    /**\n     * Array of function name substrings to filter out. Any frame whose function name\n     * contains any of these strings will be excluded from the output.\n     *\n     * implicitly includes \"SdkGeneratorCLI\", \"runCli\",\"Frames.trace\",\"Frames.tag\", \"at\", \"stacktrace\"\n     * @default []\n     */\n    filterFunctions?: string[];\n\n    /**\n     * Whether to filter out Node.js internal frames (paths starting with \"node:\").\n     * @default true\n     */\n    filterNode?: boolean;\n\n    /**\n     * Whether to filter out .js files, which typically indicate non-source files\n     * without source map information.\n     * @default true\n     */\n    filterJs?: boolean;\n\n    /**\n     * A function to format the file path of the stack trace frame.\n     * @default (filename) => filename\n     */\n    formatFilename?: (filename: string) => string;\n}\n\n/**\n * Represents a single parsed stack trace frame containing function, file path, and position information.\n */\nexport interface StackTraceFrame {\n    /**\n     * The function name or context. May include special formatting like \"alias()=> { ... }\"\n     * for certain Object methods, or be an empty string for anonymous contexts.\n     */\n    fn: string;\n\n    /**\n     * The file path where this frame originated. This will typically be the full path\n     * to the source file.\n     */\n    path: string;\n\n    /**\n     * The line and column position in the format \"line:column\" (e.g., \"42:13\").\n     */\n    position: string;\n}\n\nconst globalFunctionFilters = new Set<string>([\"SdkGeneratorCLI\", \"runCli\", \"LoggerImpl\", \"Array.forEach\"]);\nconst globalFileFilters = new Set<string>([\"stacktrace\"]);\n\n/**\n * Adds a function name to the global function filters for stack traces\n * @param filter - The function name to add to the global function filters.\n */\nexport function addGlobalFunctionFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFunctionFilters.add(filter);\n    }\n}\n\n/**\n * Adds a file path to the global file filters for stack traces.\n * @param filter - The file path to add to the global file filters.\n */\nexport function addGlobalFileFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFileFilters.add(filter);\n    }\n}\n\n/**\n * Captures and parses the current call stack, returning an array of stack frames with filtering options.\n *\n * This function creates a new Error object to capture the stack trace, then parses each frame\n * to extract function names, file paths, and positions. It applies multiple filtering strategies\n * to exclude unwanted frames (e.g., Node.js internals, .js files, specific functions).\n *\n * The function only operates when `enableStackTracking` is true. If tracing is disabled, it returns\n * an empty array for performance optimization.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns Array of parsed stack trace frames, filtered and limited according to the options\n *\n * @example\n * // Capture the first 10 frames, skipping the first 2\n * const frames = stacktrace({ maxFrames: 10, skip: 2 });\n *\n * @example\n * // Capture frames until hitting \"main\" function, filter out test files\n * const frames = stacktrace({\n *   stopOn: [\"main\"],\n *   filterPaths: [\"/test/\"],\n *   filterFunctions: [\"runTests\"]\n * });\n *\n * @remarks\n * The function applies filters in the following order:\n * 1. Parses each stack frame using regex to extract function, path, line, and column\n * 2. Applies early-stop logic when encountering functions in the `stopOn` array\n * 3. Formats special function names (e.g., \"Object.alias\" → \"alias()=> { ... }\")\n * 4. Filters out:\n *    - The stacktrace function itself (\"at\", \"stacktrace\")\n *    - Functions matching `filterFunctions` (substring match)\n *    - Node.js internal frames (if `filterNode` is true)\n *    - .js files (if `filterJs` is true)\n *    - Paths matching `filterPaths` (substring match)\n * 5. Applies `skip` and `maxFrames` to limit the output\n */\nexport function stacktrace({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    formatFilename = (filename) => filename\n}: StackTraceOptions = {}): StackTraceFrame[] {\n    if (!enableStackTracking) {\n        return [];\n    }\n    filterFunctions = [...filterFunctions, ...globalFunctionFilters];\n    filterPaths = [...filterPaths, ...globalFileFilters];\n    stopOn = [...stopOn, \"runInteractiveTask\"];\n    let stop = false;\n    return (\n        (new Error().stack ?? \"\")\n            .split(\"\\n\")\n            .map((line) => {\n                const match = line.match(/at\\s+(.*)\\s+\\((.*):(\\d+):(\\d+)\\)/);\n                if (match && match.length === 5) {\n                    let [, fn, path, line, column] = match;\n                    if (!fn || !path || !line || !column) {\n                        return undefined;\n                    }\n\n                    if (stop || stopOn.some((s) => fn?.includes(s))) {\n                        stop = true;\n                        return undefined;\n                    }\n\n                    switch (fn) {\n                        case \"Object.<anonymous>\":\n                            fn = \"\";\n                            break;\n                        case \"Object.object\":\n                        case \"Object.alias\":\n                        case \"Object.union\":\n                        case \"Object.enum\":\n                        case \"Object.undiscriminatedUnion\":\n                            fn = `${fn.substring(fn.indexOf(\".\") + 1)}()=> { ... }`;\n                            break;\n                    }\n                    return {\n                        fn,\n                        path: formatFilename(path),\n                        position: `${line}:${column}`\n                    } as StackTraceFrame;\n                }\n                return undefined;\n            })\n            .filter(\n                (each) =>\n                    each &&\n                    !filterFunctions.some((f) => each.fn.includes(f)) && // substring match for filter functions\n                    !(filterNode && each.path?.startsWith(\"node:\")) && // starts with node:\n                    !(filterJs && each.path?.endsWith(\".js\")) && // ends with .js (meaning likely not a source file - no source map info)\n                    !filterPaths.some((p) => each.path.includes(p)) // substring match for filter paths\n            ) as StackTraceFrame[]\n    ).slice(skip, skip + maxFrames);\n}\n\n/**\n * Returns a formatted stack trace string at the current location for debugging purposes.\n *\n * This is a convenience function that wraps `stacktrace()` and formats the output as a\n * human-readable string. It's particularly useful for logging or debugging to understand\n * the execution flow and call hierarchy.\n *\n * The function supports both single-line and multi-line output formats. Single-line format\n * concatenates all frames into one line (useful for compact logging), while multi-line format\n * adds newlines and indentation for better readability.\n *\n * @param options - Configuration options for stack trace capture, filtering, and formatting\n * @param options.multiline - Whether to format the output with newlines and indentation.\n *                            When true, each frame is on its own line with 4-space indent.\n *                            When false (default), all frames are concatenated on one line.\n * @returns A formatted string containing the stack trace information, prefixed with \"stacktrace - \"\n *\n * @example\n * // Single-line format (compact)\n * console.log(at());\n * // Output: \"stacktrace - myFunction - /path/to/file.ts:42:13anotherFunc - /path/to/other.ts:17:5\"\n *\n * @example\n * // Multi-line format (readable)\n * console.log(at({ multiline: true, maxFrames: 5 }));\n * // Output:\n * // stacktrace -\n * //     myFunction - /path/to/file.ts:42:13\n * //     anotherFunc - /path/to/other.ts:17:5\n * //     main - /path/to/index.ts:10:1\n *\n * @example\n * // Custom filtering for specific use case\n * console.log(at({\n *   maxFrames: 10,\n *   skip: 1,\n *   filterPaths: [\"foo.ts\"],\n *   multiline: true\n * }));\n *\n * @remarks\n * This function automatically skips itself from the stack trace output by default.\n * The \"at\" function name is filtered by the underlying `stacktrace()` function.\n */\nexport function at({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [\"runInteractiveTask\"],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}): string {\n    return enableStackTracking\n        ? `${stacktrace({ maxFrames, skip, filterPaths, filterFunctions, stopOn, filterNode, filterJs, formatFilename })\n              .map((each) => `${multiline ? \"\\n    \" : \" > \"}${each.fn} - ${each.path}:${each.position}`)\n              .join(\"\")}`\n        : \"\";\n}\n\n/** This class allows the developer to attach stack trace information to objects  */\nexport class StackTraces {\n    private readonly maxFrames: number;\n    private readonly skip: number;\n    private readonly filterPaths: string[];\n    private readonly filterFunctions: string[];\n    private readonly stopOn: string[];\n    private readonly filterNode: boolean;\n    private readonly filterJs: boolean;\n    private readonly multiline: boolean;\n    private readonly formatFilename: (filename: string) => string;\n    private tracking = new WeakMap<object, Set<StackTraceFrame>>();\n\n    constructor({\n        maxFrames = 50,\n        skip = 0,\n        filterPaths = [],\n        filterFunctions = [],\n        stopOn = [],\n        filterNode = true,\n        filterJs = true,\n        multiline = false,\n        formatFilename = (filename) => filename\n    }: StackTraceOptions & { multiline?: boolean } = {}) {\n        this.maxFrames = maxFrames;\n        this.skip = skip;\n        this.filterPaths = filterPaths;\n        this.filterFunctions = filterFunctions;\n        this.stopOn = stopOn;\n        this.filterNode = filterNode;\n        this.filterJs = filterJs;\n        this.multiline = multiline;\n        this.formatFilename = formatFilename;\n    }\n\n    /**\n     * Tags the current stack trace with the given object.\n     *\n     * This can be called multiple times to add more stack trace information to the object.\n     *\n     * @param obj - The object to tag the stack trace with.\n     */\n    tag(obj: object): void {\n        const current = this.tracking.get(obj) || new Set<StackTraceFrame>();\n        stacktrace({\n            maxFrames: this.maxFrames,\n            skip: this.skip,\n            filterPaths: this.filterPaths,\n            filterFunctions: this.filterFunctions,\n            stopOn: this.stopOn,\n            filterNode: this.filterNode,\n            filterJs: this.filterJs,\n            formatFilename: this.formatFilename\n        }).forEach((frame) => current.add(frame));\n        this.tracking.set(obj, current);\n    }\n\n    /**\n     * Returns a formatted stack trace string for the given object.\n     * @param obj - The object to get the stack trace for.\n     * @returns A formatted string containing the stack trace information.\n     */\n    trace(obj: object): string {\n        if (!enableStackTracking) {\n            return \"\";\n        }\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return \"\";\n        }\n\n        return [...frames]\n            .map((each) => `${this.multiline ? \"\\n    \" : \"\"}${each.fn} - ${each.path}:${each.position}`)\n            .join(\"\");\n    }\n\n    /**\n     * Gets the stack trace frames for the given object.\n     *\n     * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n     *       Otherwise this will return an empty array.\n     *\n     * @param obj - The object to get the stack trace frames for.\n     * @returns The stack trace frames for the given object.\n     */\n    frames(obj: object): StackTraceFrame[] {\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return [];\n        }\n        return [...frames];\n    }\n\n    /**\n     * Frees the stack trace information for the given object.\n     * @param obj - The object to free the stack trace information for.\n     */\n    free(obj: object): void {\n        this.tracking.delete(obj);\n    }\n\n    /**\n     * Clears all stack trace information.\n     */\n    clear(): void {\n        this.tracking = new WeakMap<object, Set<StackTraceFrame>>();\n    }\n}\n\nlet stackTraces: StackTraces | undefined;\n/**\n * Starts tracking the stack trace of the current object.\n *\n * Note: This will only start tracking when FERN_STACK_TRACK is defined.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns The stack traces object.\n */\nexport function startTracking({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}) {\n    if (!enableStackTracking) {\n        return;\n    }\n    stackTraces ??= new StackTraces({\n        maxFrames,\n        skip,\n        filterPaths,\n        filterFunctions,\n        stopOn,\n        filterNode,\n        filterJs,\n        multiline,\n        formatFilename\n    });\n}\n\n/**\n * Tags the current stack trace with the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to tag the stack trace with.\n */\nexport function tag(obj: object) {\n    stackTraces?.tag(obj);\n}\n\n/**\n * Returns a formatted stack trace string for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to get the stack trace for.\n * @returns A formatted string containing the stack trace information.\n */\nexport function trace(obj: object) {\n    return stackTraces?.trace(obj) ?? \"\";\n}\n\n/**\n * Frees the stack trace information for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to free the stack trace information for.\n */\nexport function free(obj: object) {\n    stackTraces?.free(obj);\n}\n\n/**\n * Gets the stack trace frames for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will return an empty array.\n *\n * @param obj - The object to get the stack trace frames for.\n * @returns The stack trace frames for the given object.\n */\nexport function getFramesForTaggedObject(obj: object): StackTraceFrame[] {\n    return stackTraces?.frames(obj) ?? [];\n}\n","import { enableStackTracking } from \"../utils/index.js\";\nimport {\n    getFramesForTaggedObject,\n    StackTraceFrame,\n    stacktrace,\n    startTracking,\n    trackingType\n} from \"../utils/stacktrace.js\";\nimport { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\n\nconst TAB_SIZE = 4;\n// this will start tracking only when FERN_STACK_TRACK is defined\n// otherwise this has absolutely no effect whatsoever.\nstartTracking({ skip: 0, maxFrames: 15, filterFunctions: [\"Abstract\"] });\n\nexport class AbstractWriter {\n    /* The buffer of lines being written */\n    protected readonly lineBuffer: string[] = [];\n\n    /* The contents being written */\n    public get buffer() {\n        if (enableStackTracking && this.nodeStackFrames.length > 0) {\n            // if we're emitting tracking comments, let's ensure we get the last little bit of info.\n            // by appending a newline to the buffer before returning it.\n            // (this can be useful when using toString() to get a node's content.)\n            this.writeInternal(\"\\n\");\n        }\n        return this.lineBuffer.join(\"\\n\") + (this.lastCharacterIsNewline ? \"\\n\" : \"\");\n    }\n\n    /* Indentation level (multiple of 4) */\n    private indentLevel = 0;\n    /* Whether anything has been written to the buffer */\n    private hasWrittenAnything = false;\n    /* Whether the last character written was a semi colon */\n    private lastCharacterIsSemicolon = false;\n    /* Whether the last character written was a newline */\n    private lastCharacterIsNewline = false;\n    /* The stack traces associated with the current node */\n    private nodeStackFrames: StackTraceFrame[] = [];\n\n    /**\n     * Writes arbitrary text and nodes\n     * @param text\n     */\n    public write(...parts: (string | AbstractAstNode | undefined)[]): void {\n        for (const text of parts) {\n            if (text != null) {\n                if (typeof text === \"string\") {\n                    const textEndsInNewline = text.length > 0 && text.endsWith(\"\\n\");\n                    // temporarily remove the trailing newline, since we don't want to add the indent prefix after it\n                    const textWithoutNewline = textEndsInNewline ? text.substring(0, text.length - 1) : text;\n\n                    const indent = this.getIndentString();\n                    let indentedText = textWithoutNewline.replaceAll(\"\\n\", `\\n${indent}`);\n                    if (this.isAtStartOfLine()) {\n                        indentedText = indent + indentedText;\n                    }\n                    if (textEndsInNewline) {\n                        indentedText += \"\\n\";\n                    }\n                    this.writeInternal(indentedText);\n                } else {\n                    this.writeNode(text);\n                }\n            }\n        }\n    }\n\n    public writeStatement(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...parts);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes arbitrary text without indentation\n     * @param text\n     */\n    public writeNoIndent(text: string): void {\n        const currIndentLevel = this.indentLevel;\n        this.indentLevel = 0;\n        this.write(text);\n        this.indentLevel = currIndentLevel;\n    }\n\n    /**\n     * Writes a node\n     * @param node\n     */\n    public writeNode(node: AbstractAstNode): void {\n        if (enableStackTracking) {\n            this.nodeStackFrames.push(...getFramesForTaggedObject(node));\n        }\n        node.write(this);\n\n        // if we're using box or multiline comments, write a newline after every node so it emits a comment for the node\n        // since we're dumping a lot of data anyway, might as well be explicit about it.\n        if (enableStackTracking && trackingType !== \"single\") {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    /**\n     * Writes a node or string\n     * @param input\n     */\n    public writeNodeOrString(input: AbstractAstNode | string): void {\n        if (typeof input === \"string\") {\n            this.write(input);\n            return;\n        }\n\n        this.writeNode(input);\n    }\n\n    /**\n     * Writes a node but then suffixes with a `;` and new line\n     * @param node\n     */\n    public writeNodeStatement(node: AbstractAstNode): void {\n        this.writeNode(node);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes text but then suffixes with a `;`\n     * @param node\n     */\n    public writeTextStatement(text: string): void {\n        const codeBlock = new CodeBlock(text);\n        codeBlock.write(this);\n        if (!text.endsWith(\";\")) {\n            this.write(\";\");\n        }\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlow(prefix: string, statement: AbstractAstNode): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlowWithoutStatement(prefix: string): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    /**\n     * Ends a control flow block\n     */\n    public endControlFlow(): void {\n        this.popScope();\n    }\n\n    /**\n     * Starts a control flow without a newline from the previous control flow block\n     * @param prefix\n     * @param statement\n     */\n    public contiguousControlFlow(prefix: string, statement: AbstractAstNode): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow alternative block\n     * @param prefix\n     */\n    public alternativeControlFlow(prefix: string): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    public pushScope() {\n        this.writeLine(\"{\");\n        this.indent();\n    }\n\n    public popScope(withNewline = true) {\n        this.dedent();\n        this.writeNewLineIfLastLineNot();\n        if (withNewline) {\n            this.writeLine(\"}\");\n        } else {\n            this.write(\"}\");\n        }\n    }\n\n    /* Only writes a newline if last line in the buffer is not a newline */\n    public writeLine(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...(parts.length === 0 ? [\"\"] : parts));\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /* Always writes newline */\n    public newLine(): void {\n        this.writeInternal(\"\\n\");\n    }\n\n    public writeSemicolonIfLastCharacterIsNot(): void {\n        if (!this.lastCharacterIsSemicolon) {\n            this.writeInternal(\";\");\n        }\n    }\n\n    public writeNewLineIfLastLineNot(): void {\n        if (!this.lastCharacterIsNewline) {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    public indent(): void {\n        this.indentLevel++;\n    }\n\n    public dedent(): void {\n        this.indentLevel--;\n    }\n\n    public delimit<T extends AbstractAstNode>({\n        nodes,\n        delimiter,\n        writeFunction\n    }: {\n        nodes: T[];\n        delimiter: string;\n        writeFunction: (node: T) => void;\n    }): void {\n        if (nodes.length > 0) {\n            const firstNode = nodes[0];\n            if (firstNode != null) {\n                writeFunction(firstNode);\n            }\n            for (let i = 1; i < nodes.length; i++) {\n                this.write(delimiter);\n                const node = nodes[i];\n                if (node != null) {\n                    writeFunction(node);\n                }\n            }\n        }\n    }\n\n    public toString(): string {\n        return this.buffer;\n    }\n\n    /*******************************\n     * Helper Methods\n     *******************************/\n    private writeInternal(text: string) {\n        if (text.length === 0) {\n            return;\n        }\n\n        const appendToLastLine = !this.lastCharacterIsNewline;\n\n        this.hasWrittenAnything = true;\n        this.lastCharacterIsNewline = text.endsWith(\"\\n\");\n        this.lastCharacterIsSemicolon = text.endsWith(\";\");\n\n        const lines = text.split(\"\\n\");\n\n        const appendTrackingComment =\n            enableStackTracking && !this.shouldSkipTracking(lines) && this.lastCharacterIsNewline;\n\n        if (appendToLastLine) {\n            this.lastLine = `${this.lastLine}${lines.shift() || \"\"}`;\n        }\n\n        if (this.lastCharacterIsNewline) {\n            lines.pop();\n        }\n\n        this.lineBuffer.push(...lines);\n\n        if (appendTrackingComment) {\n            this.appendTrackingComment();\n        }\n    }\n\n    /**\n     * Sets the last line of the buffer\n     * @param line - The line to set\n     */\n    protected set lastLine(line: string) {\n        if (this.lineBuffer.length > 0) {\n            this.lineBuffer[this.lineBuffer.length - 1] = line;\n        } else {\n            this.lineBuffer.push(line);\n        }\n    }\n\n    /**\n     * Gets the last line of the buffer\n     * @returns The last line of the buffer\n     */\n    protected get lastLine() {\n        return this.lineBuffer[this.lineBuffer.length - 1] || \"\";\n    }\n\n    /**\n     * Determines if the tracking comment should be skipped\n     * @param lines - The that are being written out\n     *\n     * @returns True if the tracking comment should be skipped\n     */\n    protected shouldSkipTracking(lines: string[]) {\n        return false;\n    }\n\n    /**\n     * Formats the stack trace frames into a string\n     * @param stack - The stack trace to format\n     * @param prefix - The prefix to add to the stack trace\n     * @returns The formatted stack trace\n     */\n    protected formatStack(stack: StackTraceFrame[], prefix = \"\") {\n        return stack.map((each) => `${prefix ? `(${prefix}) ` : \"\"} ${each.fn} - ${each.path} : ${each.position}`);\n    }\n\n    /**\n     * Filters out frames that start with the name of the current class\n     *\n     * This will filter out frames that start with the name of the current class that inherits from AbstractWriter.\n     *\n     * You can override this function to filter out more things.\n     * @param stack - The stack trace to filter\n     * @returns The filtered stack trace\n     */\n    protected filterStack(stack: StackTraceFrame[]) {\n        return stack.filter((each) => !each.fn.startsWith(`${this.constructor.name}.`));\n    }\n\n    /**\n     * Prepares the stack trace and calls the appropriate tracking comment formatter\n     */\n    protected appendTrackingComment() {\n        const stack = [\n            // adds the stack frames of the current function call\n            ...this.formatStack(this.filterStack(stacktrace({ maxFrames: 15, skip: 3 }))),\n\n            // adds the stack frames of any AstNodes that have been written since the last tracking comment\n            ...this.formatStack(this.filterStack(this.nodeStackFrames), \"node\")\n        ];\n        // reset the ast node stack frames\n        this.nodeStackFrames.length = 0;\n\n        switch (trackingType) {\n            case \"single\":\n                return this.singleLineTrackingComment(stack);\n\n            case \"multiline\":\n                return this.multiLineTrackingComment(stack);\n\n            case \"box\":\n                return this.boxTrackingComment(stack);\n        }\n    }\n\n    /**\n     * Creates a single line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected singleLineTrackingComment(stack: string[]) {\n        this.lastLine = `${this.lastLine} // ${stack.join(\" \")}`;\n    }\n    /**\n     * Creates a multi line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected multiLineTrackingComment(stack: string[]) {\n        this.lineBuffer.push(...stack.map((each) => `    // ${each}`));\n    }\n    /**\n     * Creates a box tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected boxTrackingComment(stack: string[]) {\n        this.lineBuffer.push(\"/*\", ...stack.map((each) => `    ${each}`), \"*/\");\n    }\n\n    private isAtStartOfLine(): boolean {\n        return this.lastCharacterIsNewline || !this.hasWrittenAnything;\n    }\n\n    private getIndentString(): string {\n        return \" \".repeat(this.indentLevel * this.getTabSize());\n    }\n\n    protected getTabSize(): number {\n        return TAB_SIZE;\n    }\n}\n","export { getPackageName } from \"./getPackageName.js\";\nexport { getSdkVersion } from \"./getSdkVersion.js\";\nexport {\n    addGlobalFileFilter,\n    addGlobalFunctionFilter,\n    at,\n    enableStackTracking,\n    getFramesForTaggedObject,\n    StackTraces,\n    stacktrace\n} from \"./stacktrace.js\";\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg<T extends AbstractWriter> = string | AbstractAstNode | ((writer: T) => void);\n}\n\nexport class CodeBlock<T extends AbstractWriter> extends AbstractAstNode {\n    private value: CodeBlock.Arg<T>;\n\n    constructor(value: CodeBlock.Arg<T>) {\n        super();\n        this.value = value;\n    }\n\n    public write(writer: T): void {\n        if (typeof this.value === \"string\") {\n            writer.write(this.value);\n            // if function\n        } else if (typeof this.value === \"function\") {\n            this.value(writer);\n        } else {\n            this.value.write(writer);\n        }\n    }\n}\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\n\nexport type Argument = NamedArgument | UnnamedArgument;\n\nexport type Arguments = NamedArgument[] | UnnamedArgument[];\n\nexport interface NamedArgument {\n    name: string;\n    assignment: AbstractAstNode | string;\n    docs?: string;\n}\n\nexport type UnnamedArgument = AbstractAstNode;\n\nexport function isNamedArgument(argument: NamedArgument | UnnamedArgument): argument is NamedArgument {\n    return (argument as NamedArgument)?.name != null && (argument as NamedArgument)?.assignment != null;\n}\n\nexport function hasNamedArgument(arguments_: Arguments): boolean {\n    return arguments_.length > 0 && arguments_[0] != null && isNamedArgument(arguments_[0]);\n}\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport declare namespace Ternary {\n    interface Args {\n        /* The condition to check */\n        condition: AbstractAstNode;\n        /* The true expression */\n        true_: AbstractAstNode;\n        /* The false expression */\n        false_: AbstractAstNode;\n    }\n}\n\nexport class Ternary extends AbstractAstNode {\n    private condition: AbstractAstNode;\n    private true_: AbstractAstNode;\n    private false_: AbstractAstNode;\n\n    constructor({ condition, true_, false_ }: Ternary.Args) {\n        super();\n\n        this.condition = condition;\n        this.true_ = true_;\n        this.false_ = false_;\n    }\n\n    public write(writer: AbstractWriter): void {\n        writer.writeNode(this.condition);\n        writer.write(\" ? \");\n        writer.writeNode(this.true_);\n        writer.write(\" : \");\n        writer.writeNode(this.false_);\n    }\n}\n","export { AbstractDynamicSnippetsGenerator } from \"./AbstractDynamicSnippetsGenerator.js\";\nexport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nexport { type DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nexport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nexport { type Options, Style } from \"./Options.js\";\nexport { Result } from \"./Result.js\";\nexport { Scope } from \"./Scope.js\";\nexport { type TypeInstance } from \"./TypeInstance.js\";\nexport { DynamicSnippetsTestRunner } from \"./test-utils/DynamicSnippetsTestRunner.js\";\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { AbstractAstNode } from \"../ast/index.js\";\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { AbstractEndpointSnippetGenerator } from \"./AbstractEndpointSnippetGenerator.js\";\nimport { Options } from \"./Options.js\";\nimport { Result } from \"./Result.js\";\n\nexport abstract class AbstractDynamicSnippetsGenerator<\n    Context extends AbstractDynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator extends AbstractEndpointSnippetGenerator<Context>\n> {\n    public constructor(public readonly context: Context) {}\n\n    protected abstract createSnippetGenerator(context: Context): EndpointSnippetGenerator;\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = await snippetGenerator.generateSnippet({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<AbstractAstNode> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        let lastError: Error | undefined = undefined;\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const ast = await snippetGenerator.generateSnippetAst({ endpoint, request, options });\n                return ast;\n            } catch (error) {\n                lastError = error as Error;\n            }\n        }\n        if (lastError != null) {\n            throw lastError;\n        }\n        throw new Error(\n            `Failed to generate snippet AST for endpoint: ${request.endpoint.method} ${request.endpoint.path}`\n        );\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = snippetGenerator.generateSnippetSync({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    /**\n     * Resolves endpoints based on the request and options.\n     * If an endpointId is specified in options, returns only that specific endpoint.\n     * Otherwise, resolves all endpoints matching the endpoint location (method + path).\n     */\n    private resolveEndpoints({\n        request,\n        options\n    }: {\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): FernIr.dynamic.Endpoint[] {\n        if (options.endpointId != null) {\n            const endpoint = this.context.resolveEndpointById(options.endpointId);\n            if (endpoint == null) {\n                throw new Error(`No endpoint found with ID \"${options.endpointId}\"`);\n            }\n            return [endpoint];\n        }\n        return this.context.resolveEndpointLocationOrThrow(request.endpoint);\n    }\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { ErrorReporter } from \"./ErrorReporter.js\";\n\nexport class Result {\n    public reporter: ErrorReporter | undefined;\n    public snippet: string | undefined;\n    public err: Error | undefined;\n\n    constructor() {\n        this.snippet = undefined;\n        this.reporter = undefined;\n        this.err = undefined;\n    }\n\n    public update({ context, snippet }: { context: AbstractDynamicSnippetsGeneratorContext; snippet: string }): void {\n        if (this.shouldUpdate({ snippet, reporter: context.errors })) {\n            this.reporter = context.errors.clone();\n            this.snippet = snippet;\n        }\n    }\n\n    public getResponseOrThrow({\n        endpoint\n    }: {\n        endpoint: FernIr.dynamic.EndpointLocation;\n    }): FernIr.dynamic.EndpointSnippetResponse {\n        if (this.snippet != null && this.reporter != null) {\n            return {\n                snippet: this.snippet,\n                errors: this.reporter.toDynamicSnippetErrors()\n            };\n        }\n        throw this.err ?? new Error(`Failed to generate snippet for endpoint \"${endpoint.method} ${endpoint.path}\"`);\n    }\n\n    private shouldUpdate({ snippet, reporter }: { snippet: string; reporter: ErrorReporter }): boolean {\n        if (this.reporter == null || (this.reporter.size() > 0 && reporter.size() === 0)) {\n            return true;\n        }\n        return snippet.length > (this.snippet?.length ?? 0);\n    }\n}\n","import { assertNever, keys } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { HttpEndpointReferenceParser } from \"@fern-api/fern-definition-schema\";\n\nimport { FernGeneratorExec } from \"../GeneratorNotificationService.js\";\nimport { DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nimport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nimport { Options } from \"./Options.js\";\nimport { TypeInstance } from \"./TypeInstance.js\";\n\nexport abstract class AbstractDynamicSnippetsGeneratorContext {\n    public config: FernGeneratorExec.GeneratorConfig;\n    public options: Options;\n    public errors: ErrorReporter;\n\n    private _ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    private httpEndpointReferenceParser: HttpEndpointReferenceParser;\n\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        this._ir = ir;\n        this.config = config;\n        this.options = options;\n        this.errors = new ErrorReporter();\n        this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n    }\n\n    public abstract clone(): AbstractDynamicSnippetsGeneratorContext;\n\n    public associateQueryParametersByWireValue({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    throw this.newParameterNotRecognizedError(key);\n                }\n                // If this query parameter supports allow-multiple, the user-provided values\n                // must be wrapped in an array.\n                const typeInstanceValue =\n                    this.isListTypeReference(parameter.typeReference) && !Array.isArray(value) ? [value] : value;\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value: typeInstanceValue\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    public associateByWireValueOrDefault({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            this.errors.scope(parameter.name.wireValue);\n            try {\n                let value = values[parameter.name.wireValue];\n\n                if (value == null) {\n                    if (parameter.typeReference.type === \"primitive\" && parameter.typeReference.value === \"STRING\") {\n                        // synthesize a parameter value for string parameters that are missing data\n                        value = `<${parameter.name.wireValue}>`;\n                    } else {\n                        this.errors.add({\n                            severity: Severity.Critical,\n                            message: this.newParameterNotRecognizedError(parameter.name.wireValue).message\n                        });\n                        continue;\n                    }\n                }\n\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n\n        return instances;\n    }\n\n    public associateByWireValue({\n        parameters,\n        values,\n        ignoreMissingParameters\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n        ignoreMissingParameters?: boolean;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    if (ignoreMissingParameters) {\n                        // Required for request payloads that include more information than\n                        // just the target parameters (e.g. union base properties).\n                        continue;\n                    }\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: this.newParameterNotRecognizedError(key).message\n                    });\n                    continue;\n                }\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    /**\n     * Similar to `associateByWireValue` but it builds TypeInstance objects by iterating over schema parameters rather\n     * than snippet values. Skips non-nullable parameters that are missing from the snippet object.\n     */\n    public getExampleObjectProperties({\n        parameters,\n        snippetObject\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        snippetObject: unknown;\n    }): TypeInstance[] {\n        const objectRecord = (\n            typeof snippetObject === \"object\" && snippetObject !== null && !Array.isArray(snippetObject)\n                ? snippetObject\n                : {}\n        ) as Record<string, unknown>;\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            const value = objectRecord[parameter.name.wireValue];\n            if (value == null) {\n                if (parameter.typeReference.type === \"nullable\") {\n                    instances.push({\n                        name: parameter.name,\n                        typeReference: parameter.typeReference,\n                        value: null\n                    });\n                }\n            } else {\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            }\n        }\n        return instances;\n    }\n\n    public getSingleFileValue({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): string | undefined {\n        const fileValue = record[property.wireValue];\n        if (fileValue == null) {\n            return undefined;\n        }\n        if (typeof fileValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file value to be a string, got ${typeof fileValue}`\n            });\n            return undefined;\n        }\n        return fileValue;\n    }\n\n    public getFileArrayValues({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): string[] | undefined {\n        const fileArrayValue = record[property.wireValue];\n        if (fileArrayValue == null) {\n            return undefined;\n        }\n        if (!Array.isArray(fileArrayValue)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file array value to be an array of strings, got ${typeof fileArrayValue}`\n            });\n            return undefined;\n        }\n        const stringValues: string[] = [];\n        for (const value of fileArrayValue) {\n            if (typeof value !== \"string\") {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message: `Expected file array value to be an array of strings, got ${typeof value}`\n                });\n                return undefined;\n            }\n            stringValues.push(value);\n        }\n        return stringValues;\n    }\n\n    public getRecord(value: unknown): Record<string, unknown> | undefined {\n        if (typeof value !== \"object\" || Array.isArray(value)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object with key, value pairs but got: ${\n                    Array.isArray(value) ? \"array\" : typeof value\n                }`\n            });\n            return undefined;\n        }\n        if (value == null) {\n            return {};\n        }\n        return value as Record<string, unknown>;\n    }\n\n    public resolveNamedType({ typeId }: { typeId: FernIr.dynamic.TypeId }): FernIr.dynamic.NamedType | undefined {\n        const namedType = this._ir.types[typeId];\n        if (namedType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Type identified by \"${typeId}\" could not be found`\n            });\n            return undefined;\n        }\n        return namedType;\n    }\n\n    public resolveDiscriminatedUnionTypeInstance({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): DiscriminatedUnionTypeInstance | undefined {\n        const record = this.getRecord(value);\n        if (record == null) {\n            return undefined;\n        }\n\n        const discriminantFieldName = discriminatedUnion.discriminant.wireValue;\n        const discriminantValue = record[discriminantFieldName];\n        if (discriminantValue == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newParameterNotRecognizedError(discriminantFieldName).message\n            });\n            return undefined;\n        }\n        if (typeof discriminantValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected discriminant value to be a string but got: ${typeof discriminantValue}`\n            });\n            return undefined;\n        }\n\n        const singleDiscriminatedUnionType = discriminatedUnion.types[discriminantValue];\n        if (singleDiscriminatedUnionType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `No type found for discriminant value \"${discriminantValue}\"`\n            });\n            return undefined;\n        }\n\n        // Remove the discriminant from the record so that the value is valid for the type.\n        const { [discriminantFieldName]: _, ...filtered } = record;\n\n        return {\n            singleDiscriminatedUnionType,\n            discriminantValue: singleDiscriminatedUnionType.discriminantValue,\n            value: filtered\n        };\n    }\n\n    public resolveEndpointOrThrow(rawEndpoint: string): FernIr.dynamic.Endpoint[] {\n        const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(rawEndpoint);\n        if (parsedEndpoint == null) {\n            throw new Error(`Failed to parse endpoint reference \"${rawEndpoint}\"`);\n        }\n        return this.resolveEndpointLocationOrThrow(parsedEndpoint);\n    }\n\n    public resolveEndpointLocation(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints: FernIr.dynamic.Endpoint[] = [];\n        for (const endpoint of Object.values(this._ir.endpoints)) {\n            if (this.parsedEndpointMatches({ endpoint, parsedEndpoint: location })) {\n                endpoints.push(endpoint);\n            }\n        }\n\n        return endpoints;\n    }\n\n    public resolveEndpointLocationOrThrow(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints = this.resolveEndpointLocation(location);\n        if (endpoints.length === 0) {\n            throw new Error(`Failed to find endpoint identified by \"${location.method} ${location.path}\"`);\n        }\n        return endpoints;\n    }\n\n    public resolveEndpointById(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint | undefined {\n        return this._ir.endpoints[endpointId];\n    }\n\n    public resolveEndpointByIdOrThrow(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint {\n        const endpoint = this.resolveEndpointById(endpointId);\n        if (endpoint == null) {\n            throw new Error(`Failed to find endpoint with ID \"${endpointId}\"`);\n        }\n        return endpoint;\n    }\n\n    public needsRequestParameter({\n        request,\n        inlinePathParameters,\n        inlineFileProperties\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n        inlineFileProperties: boolean;\n    }): boolean {\n        if (this.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n            return true;\n        }\n        if (request.queryParameters != null && request.queryParameters.length > 0) {\n            return true;\n        }\n        if (request.headers != null && request.headers.length > 0) {\n            return true;\n        }\n        if (request.body != null) {\n            return this.includeRequestBodyInWrappedRequest({ body: request.body, inlineFileProperties });\n        }\n        if (request.metadata?.onlyPathParameters) {\n            return false;\n        }\n        return true;\n    }\n\n    public includePathParametersInWrappedRequest({\n        request,\n        inlinePathParameters\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n    }): boolean {\n        return inlinePathParameters && (request.metadata?.includePathParameters ?? false);\n    }\n\n    public isFileUploadRequestBody(\n        body: FernIr.dynamic.InlinedRequestBody\n    ): body is FernIr.dynamic.InlinedRequestBody.FileUpload {\n        switch (body.type) {\n            case \"fileUpload\":\n                return true;\n            case \"properties\":\n            case \"referenced\":\n                return false;\n            default:\n                assertNever(body);\n        }\n    }\n\n    public resolveEnvironmentName(environmentID: string): FernIr.Name | undefined {\n        if (this._ir.environments == null) {\n            return undefined;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            case \"multipleBaseUrls\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            default:\n                assertNever(environments);\n        }\n    }\n\n    public isSingleEnvironmentID(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.EnvironmentId {\n        return typeof environment === \"string\";\n    }\n\n    public isMultiEnvironmentValues(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n        return typeof environment === \"object\";\n    }\n\n    public validateMultiEnvironmentUrlValues(\n        multiEnvironmentUrlValues: FernIr.dynamic.MultipleEnvironmentUrlValues\n    ): boolean {\n        if (this._ir.environments == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message:\n                    \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n            });\n            return false;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message:\n                        \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n                });\n                return false;\n            }\n            case \"multipleBaseUrls\": {\n                const firstEnvironment = environments.environments[0];\n                if (firstEnvironment == null) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Multiple environments are not supported; use the baseUrl option instead\"\n                    });\n                    return false;\n                }\n                const expectedKeys = new Set(keys(firstEnvironment.urls));\n                for (const key of keys(multiEnvironmentUrlValues)) {\n                    if (expectedKeys.has(key)) {\n                        expectedKeys.delete(key);\n                    }\n                }\n                if (expectedKeys.size > 0) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: `The provided environments are invalid; got: [${Object.keys(multiEnvironmentUrlValues).join(\", \")}], expected: [${keys(firstEnvironment.urls).join(\", \")}]`\n                    });\n                    return false;\n                }\n                return true;\n            }\n        }\n    }\n\n    public getValueAsNumber({ value }: { value: unknown }): number | undefined {\n        if (typeof value !== \"number\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"number\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsBoolean({ value }: { value: unknown }): boolean | undefined {\n        if (typeof value !== \"boolean\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"boolean\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsString({ value }: { value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"string\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return this.isOptional(typeReference.value);\n            case \"optional\":\n                return true;\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public isNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return true;\n            case \"optional\":\n                return this.isNullable(typeReference.value);\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public newAuthMismatchError({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): Error {\n        return new Error(`Expected auth type ${auth.type}, got ${values.type}`);\n    }\n\n    public newParameterNotRecognizedError(parameterName: string): Error {\n        return new Error(`\"${parameterName}\" is not a recognized parameter for this endpoint`);\n    }\n\n    public newTypeMismatchError({ expected, value }: { expected: string; value: unknown }): Error {\n        return new Error(`Expected ${expected}, got ${typeof value}`);\n    }\n\n    private includeRequestBodyInWrappedRequest({\n        body,\n        inlineFileProperties\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        switch (body.type) {\n            case \"properties\":\n            case \"referenced\":\n                return true;\n            case \"fileUpload\":\n                return this.includeFileUploadBodyInWrappedRequest({ fileUpload: body, inlineFileProperties });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private includeFileUploadBodyInWrappedRequest({\n        fileUpload,\n        inlineFileProperties\n    }: {\n        fileUpload: FernIr.dynamic.FileUploadRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        return (\n            this.fileUploadHasBodyProperties({ fileUpload }) ||\n            (inlineFileProperties && this.fileUploadHasFileProperties({ fileUpload }))\n        );\n    }\n\n    private fileUploadHasBodyProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return false;\n                case \"bodyProperty\":\n                    return true;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private fileUploadHasFileProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return true;\n                case \"bodyProperty\":\n                    return false;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private isListTypeReference(typeReference: FernIr.dynamic.TypeReference): boolean {\n        if (typeReference.type === \"optional\") {\n            return this.isListTypeReference(typeReference.value);\n        }\n        return typeReference.type === \"list\" || typeReference.type === \"set\";\n    }\n\n    private parsedEndpointMatches({\n        endpoint,\n        parsedEndpoint\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        parsedEndpoint: { method: string; path: string; namespace?: string };\n    }): boolean {\n        return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n    }\n}\n","export { EXAMPLE_REFERENCE_PREFIX, YAML_SCHEMA_VERSION } from \"./constants.js\";\nexport { type NodePath, type NodePathItem } from \"./NodePath.js\";\nexport * as RawSchemas from \"./schemas/index.js\";\nexport { type DefinitionFileSchema, type PackageMarkerFileSchema, type RootApiFileSchema } from \"./schemas/index.js\";\nexport * from \"./utils/auth/index.js\";\nexport * from \"./utils/generics/index.js\";\nexport { getRequestBody } from \"./utils/getRequestBody.js\";\nexport { getResponseBodyType } from \"./utils/getResponseBodyType.js\";\nexport { HttpEndpointReferenceParser } from \"./utils/HttpEndpointReferenceParser.js\";\nexport { isInlineRequestBody } from \"./utils/isInlineRequestBody.js\";\nexport { isOpenApiSourceSchema } from \"./utils/isOpenApiSourceSchema.js\";\nexport { isRawProtobufSourceSchema } from \"./utils/isRawProtobufSourceSchema.js\";\nexport { isRawTextType } from \"./utils/isRawTextType.js\";\nexport { type BytesRequest, parseBytesRequest } from \"./utils/parseBytesRequest.js\";\nexport { parseFileUploadRequest, type RawFileUploadRequest } from \"./utils/parseFileUploadRequest.js\";\nexport { parseRawBytesType, type RawBytesType } from \"./utils/parseRawBytesType.js\";\nexport { parseRawFileType, type RawFileType } from \"./utils/parseRawFileType.js\";\nexport { parseRawTextType, type RawTextType } from \"./utils/parseRawTextType.js\";\nexport { RawPrimitiveType } from \"./utils/RawPrimitiveType.js\";\nexport { recursivelyVisitRawTypeReference } from \"./utils/recursivelyVisitRawTypeReference.js\";\nexport { visitExampleCodeSampleSchema } from \"./utils/visitExampleCodeSampleSchema.js\";\nexport { type ExampleResponseSchemaVisitor, visitExampleResponseSchema } from \"./utils/visitExampleResponseSchema.js\";\nexport {\n    isAnyAuthSchemes,\n    isSingleAuthScheme,\n    type RawApiAuthVisitor,\n    visitRawApiAuth\n} from \"./utils/visitRawApiAuth.js\";\nexport {\n    type AuthSchemeDeclarationVisitor,\n    isHeaderAuthScheme,\n    visitRawAuthSchemeDeclaration\n} from \"./utils/visitRawAuthSchemeDeclaration.js\";\nexport {\n    isRawMultipleBaseUrlsEnvironment,\n    isRawSingleBaseUrlEnvironment,\n    visitRawEnvironmentDeclaration\n} from \"./utils/visitRawEnvironmentDeclaration.js\";\nexport {\n    isVariablePathParameter,\n    type PathParameterDeclarationVisitor,\n    visitRawPathParameter\n} from \"./utils/visitRawPathParameter.js\";\nexport {\n    isRawAliasDefinition,\n    isRawDiscriminatedUnionDefinition,\n    isRawEnumDefinition,\n    isRawObjectDefinition,\n    isRawUndiscriminatedUnionDefinition,\n    type RawTypeDeclarationVisitor,\n    visitRawTypeDeclaration\n} from \"./utils/visitRawTypeDeclaration.js\";\nexport { FernContainerRegex, visitRawTypeReference } from \"./utils/visitRawTypeReference.js\";\n","export declare namespace HttpEndpointReferenceParser {\n    interface Parsed {\n        path: string;\n        method: Method;\n        namespace: string | undefined;\n    }\n\n    type Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\";\n\n    export type ValidationResult = Valid | Invalid;\n\n    interface Valid {\n        type: \"valid\";\n    }\n\n    interface Invalid {\n        type: \"invalid\";\n    }\n}\n\n/**\n * Parses an HTTP endpoint reference like `POST /users/get` or `namespace::POST /users/get`\n */\nexport class HttpEndpointReferenceParser {\n    //eslint-disable-next-line\n    private REFERENCE_REGEX = /^(?:(\\w+)::)?(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n\n    public validate(reference: string): HttpEndpointReferenceParser.ValidationResult {\n        const validFormat = this.REFERENCE_REGEX.test(reference);\n        if (!validFormat) {\n            return { type: \"invalid\" };\n        }\n        return { type: \"valid\" };\n    }\n\n    public tryParse(reference: string): HttpEndpointReferenceParser.Parsed | undefined {\n        const validationResponse = this.validate(reference);\n        if (validationResponse.type === \"invalid\") {\n            return undefined;\n        }\n        const match = reference.match(this.REFERENCE_REGEX);\n        if (match == null || match[2] == null || match[3] == null) {\n            return undefined;\n        }\n        return {\n            namespace: match[1], // undefined if no namespace prefix\n            method: match[2] as HttpEndpointReferenceParser.Method,\n            path: match[3]\n        };\n    }\n}\n","export const Severity = {\n    Critical: \"CRITICAL\",\n    Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n    type Path = readonly PathItem[];\n\n    type PathItem = string | ArrayPathItem;\n\n    type Severity = (typeof Severity)[keyof typeof Severity];\n\n    interface ArrayPathItem {\n        index: number;\n    }\n\n    interface Error {\n        path?: Path;\n        severity: Severity;\n        message: string;\n    }\n}\n\ninterface Error_ {\n    severity: \"CRITICAL\" | \"WARNING\";\n    path: string[] | undefined;\n    message: string;\n}\n\nexport class ErrorReporter {\n    private errors: ErrorReporter.Error[];\n    private path: ErrorReporter.PathItem[];\n\n    constructor() {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n        this.errors.push({\n            ...err,\n            path: [...this.path]\n        });\n    }\n\n    public scope(path: ErrorReporter.PathItem): void {\n        this.path.push(path);\n    }\n\n    public unscope(): void {\n        this.path.pop();\n    }\n\n    public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n        return this.errors.filter((err) => err.severity === severity);\n    }\n\n    public empty(): boolean {\n        return this.errors.length === 0;\n    }\n\n    public size(): number {\n        return this.errors.length;\n    }\n\n    public truncate(size: number): void {\n        this.errors.length = size;\n    }\n\n    public clone(): ErrorReporter {\n        const clone = new ErrorReporter();\n        clone.errors = [...this.errors];\n        clone.path = [...this.path];\n        return clone;\n    }\n\n    public reset(): void {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public toDynamicSnippetErrors(): Error_[] {\n        return this.errors.map((err) => ({\n            severity: err.severity,\n            path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n            message: err.message\n        }));\n    }\n\n    private pathToStringArray(path: ErrorReporter.Path): string[] {\n        const result: string[] = [];\n        for (const item of path) {\n            if (typeof item === \"string\") {\n                result.push(item);\n                continue;\n            }\n            result[result.length - 1] += `[${item.index}]`;\n        }\n        return result;\n    }\n}\n","export const Scope = {\n    PathParameters: \"pathParameters\",\n    QueryParameters: \"queryParameters\",\n    Headers: \"headers\",\n    RequestBody: \"requestBody\"\n} as const;\n\nexport type Scope = (typeof Scope)[keyof typeof Scope];\n","import {\n    AbstractDynamicSnippetsGeneratorContext,\n    FernGeneratorExec\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { BasePhpCustomConfigSchema, getSafeClassName, php } from \"@fern-api/php-codegen\";\nimport { camelCase, upperFirst } from \"lodash-es\";\n\nimport { DynamicTypeLiteralMapper } from \"./DynamicTypeLiteralMapper.js\";\nimport { FilePropertyMapper } from \"./FilePropertyMapper.js\";\n\nconst RESERVED_METHOD_NAMES = [\"use\", \"clone\", \"list\"];\nconst REQUEST_NAMESPACE = \"Requests\";\nconst TYPES_NAMESPACE = \"Types\";\n\nexport class DynamicSnippetsGeneratorContext extends AbstractDynamicSnippetsGeneratorContext {\n    public ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    public customConfig: BasePhpCustomConfigSchema | undefined;\n    public dynamicTypeLiteralMapper: DynamicTypeLiteralMapper;\n    public filePropertyMapper: FilePropertyMapper;\n    public rootNamespace: string;\n    constructor({\n        ir,\n        config\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n    }) {\n        super({ ir, config });\n        this.ir = ir;\n        this.customConfig =\n            config.customConfig != null ? (config.customConfig as BasePhpCustomConfigSchema) : undefined;\n        this.dynamicTypeLiteralMapper = new DynamicTypeLiteralMapper({ context: this });\n        this.filePropertyMapper = new FilePropertyMapper({ context: this });\n        this.rootNamespace = getRootNamespace({\n            organization: config.organization,\n            namespaceOverride: this.customConfig?.namespace\n        });\n    }\n\n    public clone(): DynamicSnippetsGeneratorContext {\n        return new DynamicSnippetsGeneratorContext({\n            ir: this.ir,\n            config: this.config\n        });\n    }\n\n    public getParameterName(name: FernIr.Name): string {\n        return this.prependUnderscoreIfNeeded(name.camelCase.unsafeName);\n    }\n\n    public getPropertyName(name: FernIr.Name): string {\n        return this.prependUnderscoreIfNeeded(name.camelCase.unsafeName);\n    }\n\n    public getMethodName(name: FernIr.Name): string {\n        // TODO: Propogate reserved keywords through IR via CasingsGenerator.\n        const unsafeName = name.camelCase.unsafeName;\n        if (RESERVED_METHOD_NAMES.includes(unsafeName)) {\n            return unsafeName;\n        }\n        return name.camelCase.safeName;\n    }\n\n    public getClassName(name: FernIr.Name): string {\n        return getSafeClassName(name.pascalCase.safeName);\n    }\n\n    public getRootClientClassName(): string {\n        if (this.customConfig?.clientName != null) {\n            return this.customConfig.clientName;\n        }\n        if (this.customConfig?.[\"client-class-name\"] != null) {\n            return this.customConfig?.[\"client-class-name\"];\n        }\n        return this.getComputedClientName();\n    }\n\n    public getEnvironmentsClassReference(): php.ClassReference {\n        return php.classReference({\n            name: \"Environments\",\n            namespace: this.rootNamespace\n        });\n    }\n\n    public getRequestNamespace(fernFilepath: FernIr.dynamic.FernFilepath): string {\n        return this.getNamespace(fernFilepath, REQUEST_NAMESPACE);\n    }\n\n    public getTypesNamespace(fernFilepath: FernIr.dynamic.FernFilepath): string {\n        return this.getNamespace(fernFilepath, TYPES_NAMESPACE);\n    }\n\n    public getNamespace(fernFilepath: FernIr.dynamic.FernFilepath, suffix?: string): string {\n        let parts = fernFilepath.allParts.map((path) => path.pascalCase.safeName);\n        parts = suffix != null ? [...parts, suffix] : parts;\n        return [this.rootNamespace, ...parts].join(\"\\\\\");\n    }\n\n    public getEnvironmentClassAccessFromID(environmentID: string): php.AstNode | undefined {\n        const environmentName = this.resolveEnvironmentName(environmentID);\n        if (environmentName == null) {\n            return undefined;\n        }\n        return php.codeblock((writer) => {\n            writer.writeNode(this.getEnvironmentClassReference(environmentName));\n            writer.write(\"::\");\n            writer.write(this.getClassName(environmentName));\n        });\n    }\n\n    public getEnvironmentClassReference(name: FernIr.Name): php.ClassReference {\n        return php.classReference({\n            name: \"Environments\",\n            namespace: this.rootNamespace\n        });\n    }\n\n    private prependUnderscoreIfNeeded(input: string): string {\n        // https://www.php.net/manual/en/language.variables.basics.php\n        if (!/^[a-zA-Z_]/.test(input)) {\n            return `_${input}`;\n        }\n        return input;\n    }\n\n    private getComputedClientName(): string {\n        return `${this.getOrganizationPascalCase()}Client`;\n    }\n\n    private getOrganizationPascalCase(): string {\n        return `${upperFirst(camelCase(this.config.organization))}`;\n    }\n}\n\nfunction getRootNamespace({\n    organization,\n    namespaceOverride\n}: {\n    organization: string;\n    namespaceOverride?: string;\n}): string {\n    return namespaceOverride ?? `${upperFirst(camelCase(organization))}`;\n}\n","export { GLOBAL_NAMESPACE, SELF, STATIC } from \"./ast/core/Constant.js\";\nexport { PHP_RESERVED_KEYWORDS } from \"./constants.js\";\nexport { BasePhpCustomConfigSchema } from \"./custom-config/BasePhpCustomConfigSchema.js\";\nexport * as php from \"./php.js\";\nexport { getSafeClassName } from \"./utils.js\";\n","export const GLOBAL_NAMESPACE = \"\";\nexport const SELF = \"self\";\nexport const STATIC = \"static\";\n","// PHP reserved keywords (case-insensitive) that cannot be used as class names\n// Source: https://www.php.net/manual/en/reserved.keywords.php\nexport const PHP_RESERVED_KEYWORDS = new Set([\n    \"abstract\",\n    \"and\",\n    \"array\",\n    \"as\",\n    \"break\",\n    \"callable\",\n    \"case\",\n    \"catch\",\n    \"class\",\n    \"clone\",\n    \"const\",\n    \"continue\",\n    \"declare\",\n    \"default\",\n    \"die\",\n    \"do\",\n    \"echo\",\n    \"else\",\n    \"elseif\",\n    \"empty\",\n    \"enddeclare\",\n    \"endfor\",\n    \"endforeach\",\n    \"endif\",\n    \"endswitch\",\n    \"endwhile\",\n    \"eval\",\n    \"exit\",\n    \"extends\",\n    \"final\",\n    \"finally\",\n    \"fn\",\n    \"for\",\n    \"foreach\",\n    \"function\",\n    \"global\",\n    \"goto\",\n    \"if\",\n    \"implements\",\n    \"include\",\n    \"include_once\",\n    \"instanceof\",\n    \"insteadof\",\n    \"interface\",\n    \"isset\",\n    \"list\",\n    \"match\",\n    \"namespace\",\n    \"new\",\n    \"or\",\n    \"print\",\n    \"private\",\n    \"protected\",\n    \"public\",\n    \"readonly\",\n    \"require\",\n    \"require_once\",\n    \"return\",\n    \"static\",\n    \"switch\",\n    \"throw\",\n    \"trait\",\n    \"try\",\n    \"unset\",\n    \"use\",\n    \"var\",\n    \"while\",\n    \"xor\",\n    \"yield\",\n    \"yield_from\",\n    \"__halt_compiler\"\n]);\n","import { Ternary } from \"@fern-api/browser-compatible-base-generator\";\nimport { AstNode } from \"./ast/core/AstNode.js\";\nimport { DataClass } from \"./ast/DataClass.js\";\nimport {\n    Array as Array_,\n    Attribute,\n    Class,\n    ClassInstantiation,\n    ClassReference,\n    CodeBlock,\n    Enum,\n    Field,\n    Interface,\n    Map,\n    Method,\n    MethodInvocation,\n    Parameter,\n    Trait\n} from \"./ast/index.js\";\nimport { MergeArrays } from \"./ast/MergeArrays.js\";\nimport { convertToPhpVariableName } from \"./ast/utils/convertToPhpVariableName.js\";\n\nexport function array(args: Array_.Args): Array_ {\n    return new Array_(args);\n}\n\nexport function attribute(args: Attribute.Args): Attribute {\n    return new Attribute(args);\n}\n\nexport function class_(args: Class.Args): Class {\n    return new Class(args);\n}\n\nexport function trait(args: Trait.Args): Trait {\n    return new Trait(args);\n}\n\nexport function interface_(args: Interface.Args): Interface {\n    return new Interface(args);\n}\n\nexport function classReference(args: ClassReference.Args): ClassReference {\n    return new ClassReference(args);\n}\n\nexport function codeblock(arg: CodeBlock.Arg): CodeBlock {\n    return new CodeBlock(arg);\n}\n\nexport function dataClass(args: DataClass.Args): DataClass {\n    return new DataClass(args);\n}\n\nexport function enum_(args: Enum.Args): Enum {\n    return new Enum(args);\n}\n\nexport function field(args: Field.Args): Field {\n    return new Field(args);\n}\n\nexport function instantiateClass(args: ClassInstantiation.Args): ClassInstantiation {\n    return new ClassInstantiation(args);\n}\n\nexport function invokeMethod(args: MethodInvocation.Args): MethodInvocation {\n    return new MethodInvocation(args);\n}\n\nexport function throwException(args: ClassInstantiation.Args): AstNode {\n    return codeblock((writer) => {\n        writer.write(\"throw \");\n        writer.writeNode(instantiateClass(args));\n    });\n}\n\nexport function map(args: Map.Args): Map {\n    return new Map(args);\n}\n\nexport function method(args: Method.Args): Method {\n    return new Method(args);\n}\n\nexport function parameter(args: Parameter.Args): Parameter {\n    return new Parameter(args);\n}\n\nexport function ternary(args: Ternary.Args): Ternary {\n    return new Ternary(args);\n}\n\nexport function assignVariable(variableRef: AstNode, variableValue: string | AstNode): AstNode {\n    return codeblock((writer) => {\n        writer.writeNodeOrString(variableRef);\n        writer.write(\" = \");\n        writer.writeNodeOrString(variableValue);\n    });\n}\n\nexport function variable(name: string): AstNode {\n    return codeblock(convertToPhpVariableName(name));\n}\n\nexport function string(stringValue: string): AstNode {\n    return codeblock(`\"${stringValue}\"`);\n}\n\nexport function mergeArrays(...args: MergeArrays.Args): MergeArrays {\n    return new MergeArrays(args);\n}\n\n/**\n * Escapes a string for safe usage in PHP code (e.g., enum values, string literals).\n */\nexport function escapePhpString(str: string): string {\n    return str\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\"/g, '\\\\\"')\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\$/g, \"\\\\$\");\n}\n\nexport function this_(): AstNode {\n    return new CodeBlock((writer) => {\n        writer.write(\"$this\");\n    });\n}\n\nexport { AstNode } from \"./ast/core/AstNode.js\";\nexport {\n    Access,\n    Array,\n    Attribute,\n    Class,\n    ClassInstantiation,\n    ClassReference,\n    CodeBlock,\n    type ConstructorField,\n    DataClass,\n    Enum,\n    Field,\n    Interface,\n    Map,\n    Method,\n    MethodInvocation,\n    Parameter,\n    Trait,\n    Type,\n    TypeLiteral,\n    Writer\n} from \"./ast/index.js\";\n","import { php } from \"../index.js\";\nimport { Access, ClassReference } from \"../php.js\";\nimport { Class } from \"./Class.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Field } from \"./Field.js\";\nimport { Method } from \"./Method.js\";\nimport { Parameter } from \"./Parameter.js\";\nimport { Type } from \"./Type.js\";\nimport { convertFromPhpVariableName } from \"./utils/convertFromPhpVariableName.js\";\nimport { orderByAccess } from \"./utils/orderByAccess.js\";\n\nconst CONSTRUCTOR_PARAMETER_NAME = \"values\";\n\nexport declare namespace DataClass {\n    interface Args extends Class.Args {\n        constructorAccess?: Access;\n    }\n}\n\nexport class DataClass extends AstNode {\n    public readonly name: string;\n    public readonly namespace: string;\n    private readonly constructorAccess: Access;\n    private class_: Class;\n\n    constructor({ name, namespace, abstract, docs, parentClassReference, traits, constructorAccess }: DataClass.Args) {\n        super();\n        this.name = name;\n        this.namespace = namespace;\n        this.constructorAccess = constructorAccess ?? \"public\";\n        this.class_ = new Class({ name, namespace, abstract, docs, parentClassReference, traits });\n    }\n\n    public addField(field: Field): void {\n        this.class_.addField(field);\n    }\n\n    public addMethod(method: Method): void {\n        this.class_.addMethod(method);\n    }\n    public addTrait(traitClassReference: ClassReference): void {\n        this.class_.addTrait(traitClassReference);\n    }\n\n    public write(writer: Writer): void {\n        const orderedFields = orderByAccess(this.class_.fields).map(\n            (field) =>\n                ({\n                    ...field,\n                    name: convertFromPhpVariableName(field.name)\n                }) as Field\n        );\n        this.class_.addConstructor({\n            access: this.constructorAccess,\n            parameters: this.getConstructorParameters({ orderedFields }),\n            body: php.codeblock((writer) => {\n                if (orderedFields.length > 0) {\n                    for (const field of orderedFields) {\n                        writer.write(`$this->${field.name} = $${CONSTRUCTOR_PARAMETER_NAME}['${field.name}']`);\n                        if (field.type.isOptional()) {\n                            writer.write(\" ?? null\");\n                        } else if (field.initializer != null) {\n                            writer.write(\" ?? \");\n                            field.initializer.write(writer);\n                        }\n                        writer.write(\";\");\n                    }\n                } else {\n                    writer.writeLine(`unset($${CONSTRUCTOR_PARAMETER_NAME});`);\n                }\n            })\n        });\n        this.class_.write(writer);\n    }\n\n    private allFieldsAreOptional(): boolean {\n        return this.class_.fields.every((field) => field.type.isOptional() || field.initializer != null);\n    }\n\n    private getConstructorParameters({ orderedFields }: { orderedFields: Field[] }): Parameter[] {\n        return [\n            new Parameter({\n                name: CONSTRUCTOR_PARAMETER_NAME,\n                type: Type.typeDict(\n                    orderedFields.map((field) => ({\n                        key: field.name,\n                        valueType: field.type,\n                        optional: field.type.isOptional() || field.initializer != null\n                    })),\n                    {\n                        multiline: true\n                    }\n                ),\n                initializer: this.allFieldsAreOptional() ? new CodeBlock(\"[]\") : undefined\n            })\n        ];\n    }\n}\n","import { Access } from \"./Access.js\";\nimport { ClassReference } from \"./ClassReference.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Field } from \"./Field.js\";\nimport { Method } from \"./Method.js\";\nimport { Parameter } from \"./Parameter.js\";\nimport { orderByAccess } from \"./utils/orderByAccess.js\";\n\nexport declare namespace Class {\n    interface Args {\n        /* The name of the PHP# class */\n        name: string;\n        /* The namespace of the PHP class */\n        namespace: string;\n        /* Defaults to false */\n        abstract?: boolean;\n        /* Docs associated with the class */\n        docs?: string;\n        /* The class to inherit from if any */\n        parentClassReference?: AstNode;\n        /* The traits that this class uses, if any */\n        traits?: ClassReference[];\n        /* The interfaces that this class implements, if any */\n        interfaceReferences?: ClassReference[];\n    }\n\n    interface Constructor {\n        /* The parameters of the constructor */\n        parameters: Parameter[];\n        /* The access of the constructor */\n        access?: Access;\n        /* The body of the constructor */\n        body?: CodeBlock;\n    }\n}\n\nexport class Class extends AstNode {\n    public readonly name: string;\n    public readonly namespace: string;\n    public readonly abstract: boolean;\n    public readonly docs: string | undefined;\n    public readonly parentClassReference: AstNode | undefined;\n    public readonly traits: ClassReference[];\n    public readonly interfaceReferences: ClassReference[];\n\n    public readonly fields: Field[] = [];\n    public readonly methods: Method[] = [];\n    private constructor_: Class.Constructor | undefined;\n\n    constructor({ name, namespace, abstract, docs, parentClassReference, traits, interfaceReferences }: Class.Args) {\n        super();\n        this.name = name;\n        this.namespace = namespace;\n        this.abstract = abstract ?? false;\n        this.docs = docs;\n        this.parentClassReference = parentClassReference;\n        this.traits = traits ?? [];\n        this.interfaceReferences = interfaceReferences ?? [];\n    }\n\n    public addConstructor(constructor: Class.Constructor): void {\n        this.constructor_ = constructor;\n    }\n\n    public addField(field: Field): void {\n        this.fields.push(field);\n    }\n\n    public addMethod(method: Method): void {\n        this.methods.push(method);\n    }\n\n    public addMethods(methods: Method[]): void {\n        this.methods.push(...methods);\n    }\n\n    public addTrait(traitClassReference: ClassReference): void {\n        this.traits.push(traitClassReference);\n    }\n\n    public write(writer: Writer): void {\n        // required to fully de-conflict imports\n        writer.addReference(new ClassReference({ name: this.name, namespace: this.namespace }));\n        if (this.abstract) {\n            writer.write(\"abstract \");\n        }\n        this.writeComment(writer);\n        writer.write(`class ${this.name} `);\n        if (this.parentClassReference != null) {\n            writer.write(\"extends \");\n            this.parentClassReference.write(writer);\n        }\n        if (this.interfaceReferences.length > 0) {\n            if (this.parentClassReference != null) {\n                writer.write(\" \");\n            }\n            writer.write(\"implements \");\n            this.interfaceReferences.forEach((ref, index) => {\n                if (index > 0) {\n                    writer.write(\", \");\n                }\n                writer.writeNode(ref);\n            });\n        }\n        writer.newLine();\n        writer.writeLine(\"{\");\n        writer.indent();\n        if (this.traits.length > 0) {\n            writer.write(\"use \");\n            this.traits.forEach((trait, index) => {\n                if (index > 0) {\n                    writer.write(\",\");\n                }\n                writer.writeNode(trait);\n            });\n            writer.writeTextStatement(\"\");\n            writer.newLine();\n        }\n\n        this.writeFields({ writer, fields: orderByAccess(this.fields) });\n        if (this.constructor != null || this.methods.length > 0) {\n            writer.newLine();\n        }\n\n        if (this.constructor_ != null) {\n            this.writeConstructor({ writer, constructor: this.constructor_ });\n            if (this.methods.length > 0) {\n                writer.newLine();\n            }\n        }\n\n        this.writeMethods({ writer, methods: orderByAccess(this.methods) });\n\n        writer.dedent();\n        writer.writeLine(\"}\");\n        return;\n    }\n\n    private writeComment(writer: Writer): void {\n        if (this.docs == null) {\n            return undefined;\n        }\n        const comment = new Comment({ docs: this.docs });\n        comment.write(writer);\n    }\n\n    private writeConstructor({ writer, constructor }: { writer: Writer; constructor: Class.Constructor }): void {\n        this.writeConstructorComment({ writer, constructor });\n        if (constructor.access != null) {\n            writer.write(`${constructor.access} `);\n        }\n        writer.write(\"function __construct(\");\n        writer.indent();\n        constructor.parameters.forEach((parameter, index) => {\n            if (index === 0) {\n                writer.newLine();\n            }\n            parameter.write(writer);\n            writer.writeLine(\",\");\n        });\n        writer.dedent();\n        writer.writeLine(\")\");\n        writer.writeLine(\"{\");\n        writer.indent();\n        constructor.body?.write(writer);\n        writer.writeNewLineIfLastLineNot();\n        writer.dedent();\n        writer.writeLine(\"}\");\n    }\n\n    private writeConstructorComment({ writer, constructor }: { writer: Writer; constructor: Class.Constructor }): void {\n        if (constructor.parameters.length === 0) {\n            return;\n        }\n        const comment = new Comment();\n        for (const parameter of constructor.parameters) {\n            comment.addTag(parameter.getCommentTag());\n        }\n        comment.write(writer);\n    }\n\n    private writeFields({ writer, fields }: { writer: Writer; fields: Field[] }): void {\n        fields\n            .filter((field) => !field.inherited)\n            .forEach((field, index) => {\n                if (index > 0) {\n                    writer.newLine();\n                }\n                field.write(writer);\n                writer.writeNewLineIfLastLineNot();\n            });\n    }\n\n    private writeMethods({ writer, methods }: { writer: Writer; methods: Method[] }): void {\n        methods.forEach((method, index) => {\n            if (index > 0) {\n                writer.newLine();\n            }\n            method.write(writer);\n            writer.writeNewLineIfLastLineNot();\n        });\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace ClassReference {\n    interface Args {\n        /* The name of the PHP class */\n        name: string;\n        /* The namespace of the PHP class */\n        namespace: string;\n        generics?: Type[];\n    }\n}\n\nexport class ClassReference extends AstNode {\n    public readonly name: string;\n    public readonly namespace: string;\n    public readonly generics?: Type[];\n    private fullyQualified: boolean;\n\n    constructor({ name, namespace, generics }: ClassReference.Args) {\n        super();\n        this.name = name;\n        this.namespace = namespace;\n        this.generics = generics;\n        this.fullyQualified = false;\n    }\n\n    public requireFullyQualified(): void {\n        this.fullyQualified = true;\n    }\n\n    public write(writer: Writer): void {\n        writer.addReference(this);\n        const refString = this.fullyQualified ? `\\\\${this.namespace}\\\\${this.name}` : this.name;\n        writer.write(`${refString}`);\n    }\n}\n","import { AbstractAstNode } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { BasePhpCustomConfigSchema } from \"../../custom-config/BasePhpCustomConfigSchema.js\";\nimport { Writer } from \"./Writer.js\";\n\nexport abstract class AstNode extends AbstractAstNode {\n    /**\n     * Writes the node to a string.\n     */\n    public toString(param: {\n        namespace: string;\n        rootNamespace: string;\n        customConfig: BasePhpCustomConfigSchema;\n        skipImports?: boolean;\n    }): string {\n        if (param == null) {\n            // You are likely implicitly calling toString() inside a string interpolation or concatenation.\n            // Don't do this:\n            //  - astNode.toString()\n            //  - `${astNode}`\n            //  - \"Foo<\" + astNode + \">\"\n\n            throw new Error(\"Internal error; AstNode.toString method called incorrectly.\");\n        }\n        const { namespace, rootNamespace, customConfig, skipImports = false } = param;\n\n        const writer = new Writer({\n            namespace,\n            rootNamespace,\n            customConfig\n        });\n        this.write(writer);\n        return writer.toString(skipImports);\n    }\n\n    /**\n     * Writes the node to a string.\n     */\n    public async toStringAsync({\n        namespace,\n        rootNamespace,\n        customConfig\n    }: {\n        namespace: string;\n        rootNamespace: string;\n        customConfig: BasePhpCustomConfigSchema;\n    }): Promise<string> {\n        const writer = new Writer({\n            namespace,\n            rootNamespace,\n            customConfig\n        });\n        this.write(writer);\n        return writer.toString();\n    }\n}\n","import { AbstractWriter } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { BasePhpCustomConfigSchema } from \"../../custom-config/BasePhpCustomConfigSchema.js\";\nimport { ClassReference } from \"../ClassReference.js\";\nimport { GLOBAL_NAMESPACE } from \"./Constant.js\";\n\n/* A fully qualified type name _without_ the initial backslash */\ntype FullyQualifiedName = string;\n\ninterface ParsedFullyQualifiedName {\n    namespace: string;\n    name: string;\n}\n\nfunction parseFullyQualifiedName(rawFullyQualifiedName: string): ParsedFullyQualifiedName {\n    return {\n        namespace: rawFullyQualifiedName.substring(0, rawFullyQualifiedName.lastIndexOf(\"\\\\\")),\n        name: rawFullyQualifiedName.substring(rawFullyQualifiedName.lastIndexOf(\"\\\\\") + 1)\n    };\n}\n\nexport declare namespace Writer {\n    interface Args {\n        /* The namespace that is being written to */\n        namespace: string;\n        /* The root namespace of the project */\n        rootNamespace: string;\n        /* Custom generator config */\n        customConfig: BasePhpCustomConfigSchema;\n    }\n}\n\nexport class Writer extends AbstractWriter {\n    /* The namespace that is being written to */\n    public namespace: string;\n    /* The root namespace of the project */\n    public rootNamespace: string;\n    /* Custom generator config */\n    public customConfig: BasePhpCustomConfigSchema;\n\n    /* Import statements */\n    private references: Record<FullyQualifiedName, ClassReference[]> = {};\n\n    constructor({ namespace, rootNamespace, customConfig }: Writer.Args) {\n        super();\n        this.namespace = namespace;\n        this.rootNamespace = rootNamespace;\n        this.customConfig = customConfig;\n    }\n\n    public addReference(reference: ClassReference): void {\n        if (reference.namespace == null) {\n            return;\n        }\n\n        // If there's a naming conflict, tell the reference to use its qualified name\n        const conflictingReferences = Object.keys(this.references)\n            // Filter out the current namespace.\n            .filter((seenRef) => {\n                const parsed = parseFullyQualifiedName(seenRef);\n                return parsed.namespace !== reference.namespace && parsed.name === reference.name;\n            });\n\n        if (conflictingReferences.length > 0) {\n            reference.requireFullyQualified();\n            return;\n        }\n\n        const fullyQualifiedName =\n            reference.namespace === GLOBAL_NAMESPACE ? reference.name : `${reference.namespace}\\\\${reference.name}`;\n        const references = (this.references[fullyQualifiedName] ??= []);\n\n        references.push(reference);\n    }\n\n    public toString(skipImports = false): string {\n        if (skipImports) {\n            return this.buffer;\n        }\n\n        const namespace = `namespace ${this.namespace};`;\n        const imports = this.stringifyImports();\n        if (imports.length > 0) {\n            return `${namespace}\n\n${imports}\n\n${this.buffer}`;\n        }\n        return namespace + \"\\n\\n\" + this.buffer;\n    }\n\n    private stringifyImports(): string {\n        const referenceKeys = Object.keys(this.references);\n        if (referenceKeys.length === 0) {\n            return \"\";\n        }\n        return (\n            referenceKeys\n                // Filter out the current namespace.\n                .filter((reference) => parseFullyQualifiedName(reference).namespace !== this.namespace)\n                .map((ref) => `use ${ref};`)\n                .join(\"\\n\")\n        );\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\nimport { convertToPhpVariableName } from \"./utils/convertToPhpVariableName.js\";\n\nexport type TagType = \"param\" | \"property\" | \"return\" | \"throws\" | \"var\";\n\nexport const TagType = {\n    Param: \"param\",\n    Property: \"property\",\n    Returns: \"return\",\n    Throws: \"throws\",\n    Var: \"var\"\n} as const;\n\nexport declare namespace Comment {\n    interface Args {\n        /* The preface docs of the comment, if any */\n        docs?: string;\n    }\n\n    interface Tag {\n        /* The type of the comment tag (e.g. @param) */\n        tagType: TagType;\n        /* The type included in the @<tag> comment */\n        type: Type;\n        /* The name of the variable in the @<tag> comment, if any */\n        name?: string;\n        /* The in-line docs associated with the type, if any */\n        docs?: string;\n    }\n}\n\nexport class Comment extends AstNode {\n    public readonly docs: string | undefined;\n\n    private tags: Comment.Tag[] = [];\n\n    constructor({ docs }: Comment.Args = {}) {\n        super();\n        this.docs = docs;\n    }\n\n    public addTag(tag: Comment.Tag): void {\n        this.tags.push({\n            ...tag,\n            name: tag.name != null ? convertToPhpVariableName(tag.name) : undefined\n        });\n    }\n\n    public write(writer: Writer): void {\n        writer.writeLine(\"/**\");\n        if (this.docs != null) {\n            this.docs.split(\"\\n\").forEach((line) => {\n                writer.writeLine(` * ${line}`);\n            });\n            if (this.tags.length > 0) {\n                writer.writeLine(\" *\");\n            }\n        }\n        for (const tag of this.tags) {\n            this.writeTag({ writer, tag });\n        }\n        writer.writeLine(\" */\");\n    }\n\n    private writeTag({ writer, tag }: { writer: Writer; tag: Comment.Tag }): void {\n        const docsSplit = tag.docs != null ? tag.docs.split(\"\\n\") : undefined;\n        if (docsSplit != null && docsSplit.length > 1) {\n            docsSplit.forEach((line) => {\n                writer.writeLine(` * ${line}`);\n            });\n            writer.writeLine(\" *\");\n        }\n\n        writer.write(` * @${tag.tagType} `);\n        tag.type.write(writer, { comment: true });\n        if (tag.name != null) {\n            writer.write(` ${tag.name}`);\n        }\n\n        if (docsSplit != null && docsSplit.length === 1) {\n            writer.write(` ${docsSplit[0]}`);\n        }\n\n        writer.newLine();\n    }\n}\n","/**\n * Converts the the given name into a valid PHP variable name\n * (i.e. it includes the required '$' prefix).\n */\nexport function convertToPhpVariableName(name: string): string {\n    if (name.startsWith(\"$\")) {\n        return name;\n    }\n    return `$${name}`;\n}\n","import { Access } from \"../Access.js\";\n\ninterface Accessible {\n    access: Access;\n}\n\nexport function orderByAccess<T extends Accessible>(items: T[]): T[] {\n    return _orderByAccess(items, [Access.Public, Access.PublicReadonly, Access.Protected, Access.Private]);\n}\n\nfunction _orderByAccess<T extends Accessible>(items: T[], order: Access[]): T[] {\n    return order.reduce<T[]>((result, access) => [...result, ...items.filter((item) => item.access === access)], []);\n}\n","export type Access = \"public\" | \"public readonly\" | \"protected\" | \"private\";\n\nexport const Access = {\n    Public: \"public\",\n    PublicReadonly: \"public readonly\",\n    Protected: \"protected\",\n    Private: \"private\"\n} as const;\n","import { CodeBlock as CommonCodeBlock } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg = CommonCodeBlock.Arg<Writer>;\n}\n\nexport class CodeBlock extends AstNode {\n    private arg: CodeBlock.Arg;\n\n    public constructor(arg: CodeBlock.Arg) {\n        super();\n        this.arg = arg;\n    }\n\n    public write(writer: Writer): void {\n        const commonCodeBlock = new CommonCodeBlock(this.arg);\n        return commonCodeBlock.write(writer);\n    }\n}\n","import { Access } from \"./Access.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\nimport { convertToPhpVariableName } from \"./utils/convertToPhpVariableName.js\";\n\nexport declare namespace Parameter {\n    interface Args {\n        /* The name of the parameter */\n        name: string;\n        /* The type of the parameter */\n        type: Type;\n        /* Docs for the parameter */\n        docs?: string;\n        /* The initializer for the parameter */\n        initializer?: CodeBlock;\n        /* The access of the parameter */\n        access?: Access;\n        /* If the parameter is readonly */\n        readonly_?: boolean;\n    }\n}\n\nexport class Parameter extends AstNode {\n    public readonly name: string;\n    public readonly type: Type;\n    public readonly docs: string | undefined;\n    public readonly initializer: CodeBlock | undefined;\n    public readonly access: Access | undefined;\n    public readonly readonly_: boolean;\n\n    constructor({ name, type, docs, initializer, access, readonly_ }: Parameter.Args) {\n        super();\n        this.name = convertToPhpVariableName(name);\n        this.type = type;\n        this.docs = docs;\n        this.initializer = initializer;\n        this.access = access;\n        this.readonly_ = readonly_ ?? false;\n    }\n\n    public getCommentTag(): Comment.Tag {\n        return {\n            tagType: \"param\",\n            type: this.type,\n            name: this.name,\n            docs: this.docs\n        };\n    }\n\n    public write(writer: Writer): void {\n        if (this.access != null) {\n            writer.write(`${this.access} `);\n        }\n        if (this.readonly_) {\n            writer.write(\"readonly \");\n        }\n        this.type.write(writer);\n        writer.write(` ${this.name}`);\n        if (this.initializer != null) {\n            writer.write(\" = \");\n            this.initializer.write(writer);\n        } else if (this.type.isOptional()) {\n            writer.write(\" = null\");\n        }\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { isEqual, uniqWith } from \"lodash-es\";\n\nimport { BasePhpCustomConfigSchema } from \"../custom-config/BasePhpCustomConfigSchema.js\";\nimport { ClassReference } from \"./ClassReference.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { GLOBAL_NAMESPACE } from \"./core/Constant.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { TypeLiteral } from \"./TypeLiteral.js\";\n\ntype InternalType =\n    | Array_\n    | Bool\n    | Date\n    | DateTime\n    | EnumString\n    | Float\n    | Int\n    | Map\n    | Mixed\n    | Null\n    | Object_\n    | Optional\n    | Reference\n    | String_\n    | TypeDict\n    | Union\n    | Literal;\n\ninterface Int {\n    type: \"int\";\n}\n\ninterface String_ {\n    type: \"string\";\n}\n\ninterface Bool {\n    type: \"bool\";\n}\n\ninterface Float {\n    type: \"float\";\n}\n\ninterface Date {\n    type: \"date\";\n}\n\ninterface DateTime {\n    type: \"dateTime\";\n}\n\ninterface Null {\n    type: \"null\";\n}\n\ninterface Mixed {\n    type: \"mixed\";\n}\n\ninterface Object_ {\n    type: \"object\";\n}\n\ninterface Array_ {\n    type: \"array\";\n    value: Type;\n}\n\ninterface Map {\n    type: \"map\";\n    keyType: Type;\n    valueType: Type;\n}\n\ninterface TypeDict {\n    type: \"typeDict\";\n    entries: TypeDictEntry[];\n    multiline?: boolean;\n}\n\ninterface Union {\n    type: \"union\";\n    types: Type[];\n}\n\ninterface TypeDictEntry {\n    key: string;\n    valueType: Type;\n    optional?: boolean;\n}\n\ninterface Optional {\n    type: \"optional\";\n    value: Type;\n}\n\ninterface Reference {\n    type: \"reference\";\n    value: ClassReference;\n}\n\ninterface EnumString {\n    type: \"enumString\";\n    value: ClassReference;\n}\n\ntype LiteralString = TypeLiteral & {\n    internalType: {\n        type: \"string\";\n        value: string;\n    };\n};\n\ntype LiteralBoolean = TypeLiteral & {\n    internalType: {\n        type: \"boolean\";\n        value: boolean;\n    };\n};\n\ntype LiteralValue = LiteralString | LiteralBoolean;\n\ninterface Literal {\n    type: \"literal\";\n    value: LiteralValue;\n}\n\n/* A PHP parameter to a method */\nexport class Type extends AstNode {\n    private constructor(public readonly internalType: InternalType) {\n        super();\n    }\n\n    public write(writer: Writer, { comment }: { comment?: boolean } = {}): void {\n        switch (this.internalType.type) {\n            case \"int\":\n                writer.write(\"int\");\n                break;\n            case \"string\":\n                writer.write(\"string\");\n                break;\n            case \"bool\":\n                writer.write(\"bool\");\n                break;\n            case \"float\":\n                writer.write(\"float\");\n                break;\n            case \"date\":\n                writer.addReference(DateTimeClassReference);\n                writer.write(\"DateTime\");\n                break;\n            case \"dateTime\":\n                writer.addReference(DateTimeClassReference);\n                writer.write(\"DateTime\");\n                break;\n            case \"mixed\":\n                writer.write(\"mixed\");\n                break;\n            case \"object\":\n                writer.write(\"object\");\n                break;\n            case \"array\":\n                if (!comment) {\n                    writer.write(\"array\");\n                    break;\n                }\n                writer.write(\"array<\");\n                this.internalType.value.write(writer, { comment });\n                writer.write(\">\");\n                break;\n            case \"map\": {\n                if (!comment) {\n                    writer.write(\"array\");\n                    break;\n                }\n                writer.write(\"array<\");\n                this.internalType.keyType.write(writer, { comment });\n                writer.write(\", \");\n                this.internalType.valueType.write(writer, { comment });\n                writer.write(\">\");\n                break;\n            }\n            case \"null\": {\n                writer.write(\"null\");\n                break;\n            }\n            case \"typeDict\": {\n                if (!comment) {\n                    writer.write(\"array\");\n                    break;\n                }\n                if (this.internalType.multiline) {\n                    writer.writeLine(\"array{\");\n\n                    // NOTE: Put all required types before all optional parameters\n                    // since this is required by PHPStan\n                    const requiredTypes = this.internalType.entries.filter((entry) => !entry.valueType.isOptional());\n                    const optionalTypes = this.internalType.entries.filter((entry) => entry.valueType.isOptional());\n                    const orderedEntries = [...requiredTypes, ...optionalTypes];\n\n                    for (const entry of orderedEntries) {\n                        writer.write(\" *   \");\n                        this.writeTypeDictEntry({ writer, entry, comment });\n                        writer.writeLine(\",\");\n                    }\n                    writer.write(\" * }\");\n                    break;\n                }\n                writer.write(\"array{\");\n                this.internalType.entries.forEach((entry, index) => {\n                    if (index > 0) {\n                        writer.write(\", \");\n                    }\n                    this.writeTypeDictEntry({ writer, entry, comment });\n                });\n                writer.write(\"}\");\n                break;\n            }\n            case \"union\": {\n                this.writeUnion({ writer, unionTypes: this.internalType.types, comment });\n                break;\n            }\n            case \"optional\": {\n                const internalType = this.internalType.value.internalType;\n                const isMixed = internalType.type === \"mixed\";\n                const isUnion = internalType.type === \"union\";\n                if (!isUnion && !isMixed) {\n                    writer.write(\"?\");\n                }\n                this.internalType.value.write(writer, { comment });\n                if (isUnion && !this.unionHasOptional(internalType.types)) {\n                    writer.write(\"|\");\n                    writer.writeNode(Type.null());\n                }\n                break;\n            }\n            case \"reference\":\n                if (comment) {\n                    writer.writeNode(this.internalType.value);\n                    const generics = this.internalType.value.generics;\n\n                    if (generics && generics.length > 0) {\n                        writer.write(\"<\");\n                        generics.forEach((generic, index) => {\n                            if (index > 0) {\n                                writer.write(\", \");\n                            }\n                            generic.write(writer, { comment });\n                        });\n                        writer.write(\">\");\n                    }\n                } else {\n                    writer.writeNode(this.internalType.value);\n                }\n                break;\n            case \"enumString\":\n                if (comment) {\n                    writer.write(\"value-of<\");\n                    writer.writeNode(this.internalType.value);\n                    writer.write(\">\");\n                } else {\n                    writer.write(\"string\");\n                }\n                break;\n            case \"literal\":\n                if (comment) {\n                    writer.writeNode(this.internalType.value);\n                } else {\n                    switch (this.internalType.value.internalType.type) {\n                        case \"string\":\n                            writer.write(\"string\");\n                            break;\n                        case \"boolean\":\n                            writer.write(\"bool\");\n                            break;\n                        default:\n                            assertNever(this.internalType.value.internalType);\n                    }\n                }\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    public toOptionalIfNotAlready(): Type {\n        if (this.internalType.type === \"optional\") {\n            return this;\n        }\n        return Type.optional(this);\n    }\n\n    public underlyingTypeIfOptional(): Type | undefined {\n        if (this.internalType.type === \"optional\") {\n            return this.internalType.value;\n        }\n        return undefined;\n    }\n\n    public underlyingType(): Type {\n        return this.underlyingTypeIfOptional() ?? this;\n    }\n\n    public isOptional(): boolean {\n        return this.internalType.type === \"optional\";\n    }\n\n    public getClassReference(): ClassReference {\n        switch (this.internalType.type) {\n            case \"date\":\n            case \"dateTime\":\n                return new ClassReference({\n                    name: \"DateTime\",\n                    namespace: GLOBAL_NAMESPACE\n                });\n\n            case \"enumString\":\n            case \"reference\":\n                return this.internalType.value;\n\n            case \"int\":\n            case \"string\":\n            case \"bool\":\n            case \"float\":\n            case \"object\":\n            case \"map\":\n            case \"array\":\n            case \"null\":\n            case \"mixed\":\n            case \"optional\":\n            case \"typeDict\":\n            case \"union\":\n            case \"literal\":\n                throw new Error(\"Cannot get class reference for \" + this.internalType.type);\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    /* Static factory methods for creating a Type */\n    public static int(): Type {\n        return new this({\n            type: \"int\"\n        });\n    }\n\n    public static string(): Type {\n        return new this({\n            type: \"string\"\n        });\n    }\n\n    public static bool(): Type {\n        return new this({\n            type: \"bool\"\n        });\n    }\n\n    public static float(): Type {\n        return new this({\n            type: \"float\"\n        });\n    }\n\n    public static date(): Type {\n        return new this({\n            type: \"date\"\n        });\n    }\n\n    public static dateTime(): Type {\n        return new this({\n            type: \"dateTime\"\n        });\n    }\n\n    public static mixed(): Type {\n        return new this({\n            type: \"mixed\"\n        });\n    }\n\n    public static object(): Type {\n        return new this({\n            type: \"object\"\n        });\n    }\n\n    public static array(value: Type): Type {\n        return new this({\n            type: \"array\",\n            value\n        });\n    }\n\n    public static map(keyType: Type, valueType: Type): Type {\n        return new this({\n            type: \"map\",\n            keyType,\n            valueType\n        });\n    }\n\n    public static typeDict(entries: TypeDictEntry[], { multiline }: { multiline?: boolean } = {}): Type {\n        return new this({\n            type: \"typeDict\",\n            entries,\n            multiline\n        });\n    }\n\n    public static union(types: Type[]): Type {\n        // Recursively flatten nested unions and deduplicate\n        const flattenedTypes = this.flattenUnionTypes(types);\n\n        // Deduplicate types to avoid duplicates like array|array\n        const uniqueTypes = uniqWith(flattenedTypes, isEqual);\n\n        return new this({\n            type: \"union\",\n            types: uniqueTypes\n        });\n    }\n\n    private static flattenUnionTypes(types: Type[]): Type[] {\n        const flattened: Type[] = [];\n\n        for (const type of types) {\n            if (type.internalType.type === \"union\") {\n                // Recursively flatten nested unions\n                flattened.push(...this.flattenUnionTypes(type.internalType.types));\n            } else {\n                flattened.push(type);\n            }\n        }\n\n        return flattened;\n    }\n\n    public static optional(value: Type): Type {\n        // Avoids double optional.\n        if (this.isAlreadyOptional(value)) {\n            return value;\n        }\n        return new this({\n            type: \"optional\",\n            value\n        });\n    }\n\n    public static null(): Type {\n        return new this({\n            type: \"null\"\n        });\n    }\n\n    public static reference(value: ClassReference): Type {\n        return new this({\n            type: \"reference\",\n            value\n        });\n    }\n\n    public static enumString(value: ClassReference): Type {\n        return new this({\n            type: \"enumString\",\n            value\n        });\n    }\n\n    public static literalString(value: string): Type {\n        return new this({\n            type: \"literal\",\n            value: TypeLiteral.string(value) as LiteralString\n        });\n    }\n\n    public static literalBoolean(value: boolean): Type {\n        return new this({\n            type: \"literal\",\n            value: TypeLiteral.boolean(value) as LiteralBoolean\n        });\n    }\n\n    private static isAlreadyOptional(value: Type) {\n        return value.internalType.type === \"optional\";\n    }\n\n    private writeUnion({\n        writer,\n        unionTypes,\n        comment\n    }: {\n        writer: Writer;\n        unionTypes: Type[];\n        comment: boolean | undefined;\n    }): void {\n        const uniqueTypes = this.getUniqueTypes({ types: unionTypes, comment, writer });\n        const types = this.unwrapOptionalTypes(uniqueTypes);\n\n        const hasMixed = types.filter((type) => type.underlyingType().internalType.type === \"mixed\").length > 0;\n        if (hasMixed && !comment) {\n            writer.write(\"mixed\");\n            return;\n        }\n\n        if (types.length > 0 && comment) {\n            writer.writeLine(\"(\");\n            types.forEach((type, index) => {\n                if (index > 0) {\n                    writer.write(\" *   |\");\n                } else {\n                    writer.write(\" *    \");\n                }\n                if (hasMixed) {\n                    type = type.underlyingType();\n                }\n                type.write(writer, { comment });\n                writer.writeLine();\n                index++;\n            });\n            writer.write(\" * )\");\n            return;\n        }\n\n        types.forEach((type, index) => {\n            if (index > 0) {\n                writer.write(\"|\");\n            }\n            if (hasMixed) {\n                type = type.underlyingType();\n            }\n            type.write(writer, { comment });\n            index++;\n        });\n    }\n\n    private writeTypeDictEntry({\n        writer,\n        entry,\n        comment\n    }: {\n        writer: Writer;\n        entry: TypeDictEntry;\n        comment?: boolean;\n    }) {\n        writer.write(entry.key);\n        if (entry.optional) {\n            writer.write(\"?\");\n        }\n        writer.write(\": \");\n        entry.valueType.write(writer, { comment });\n    }\n\n    private getUniqueTypes({\n        writer,\n        types,\n        comment\n    }: {\n        writer: Writer;\n        types: Type[];\n        comment: boolean | undefined;\n    }): Type[] {\n        // First, do semantic deduplication using lodash isEqual\n        const semanticallyUnique = uniqWith(types, isEqual);\n\n        // Then, do string-based deduplication for cases where different semantic types\n        // render to the same string (e.g., array<string,mixed> and array<Recipient> both become \"array\")\n        const typeStrings = new Set();\n        return semanticallyUnique.filter((type) => {\n            const typeString = type.toString({\n                namespace: writer.namespace,\n                rootNamespace: writer.rootNamespace,\n                customConfig: writer.customConfig,\n                comment\n            });\n\n            // Handle potential duplicates, such as strings (due to enums) and arrays.\n            if (typeStrings.has(typeString)) {\n                return false;\n            }\n            typeStrings.add(typeString);\n            return true;\n        });\n    }\n\n    /**\n     * Unwraps optional types and adds the 'null' type if there are any optional types.\n     */\n    private unwrapOptionalTypes(types: Type[]): Type[] {\n        let hasOptional = false;\n        const result = types.map((type) => {\n            if (type.internalType.type === \"optional\") {\n                hasOptional = true;\n                return type.internalType.value;\n            }\n            return type;\n        });\n        if (hasOptional) {\n            result.push(Type.null());\n        }\n        return result;\n    }\n\n    /**\n     * Determines if the union has one or more optional types.\n     */\n    private unionHasOptional(types: Type[]): boolean {\n        return types.filter((type) => type.internalType.type === \"optional\").length > 0;\n    }\n\n    /**\n     * Writes the type to a string.\n     */\n    public toString({\n        namespace,\n        rootNamespace,\n        customConfig,\n        comment\n    }: {\n        namespace: string;\n        rootNamespace: string;\n        customConfig: BasePhpCustomConfigSchema;\n        comment?: boolean;\n    }): string {\n        const writer = new Writer({\n            namespace,\n            rootNamespace,\n            customConfig\n        });\n        this.write(writer, { comment: comment ?? false });\n        return writer.toString();\n    }\n}\n\nexport const DateTimeClassReference = new ClassReference({\n    namespace: GLOBAL_NAMESPACE,\n    name: \"DateTime\"\n});\n","import { assertNever } from \"@fern-api/core-utils\";\n\nimport { ClassInstantiation } from \"./ClassInstantiation.js\";\nimport { ClassReference } from \"./ClassReference.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { MethodInvocation } from \"./MethodInvocation.js\";\n\ntype InternalTypeLiteral =\n    | Boolean_\n    | Class_\n    | DateTime\n    | File\n    | Float\n    | List\n    | Map\n    | Number_\n    | Reference\n    | String_\n    | Unknown_\n    | Null_\n    | Nop;\n\ninterface Boolean_ {\n    type: \"boolean\";\n    value: boolean;\n}\n\ninterface Class_ {\n    type: \"class\";\n    reference: ClassReference;\n    fields: ConstructorField[];\n}\n\nexport interface ConstructorField {\n    name: string;\n    value: TypeLiteral;\n}\n\ninterface DateTime {\n    type: \"datetime\";\n    value: string;\n}\n\ninterface File {\n    type: \"file\";\n    value: string;\n    namespace?: string;\n}\n\ninterface Float {\n    type: \"float\";\n    value: number;\n}\n\ninterface List {\n    type: \"list\";\n    values: TypeLiteral[];\n}\n\ninterface Map {\n    type: \"map\";\n    entries: MapEntry[];\n}\n\ninterface MapEntry {\n    key: TypeLiteral;\n    value: TypeLiteral;\n}\n\ninterface Number_ {\n    type: \"number\";\n    value: number;\n}\n\ninterface Reference {\n    type: \"reference\";\n    value: AstNode;\n}\n\ninterface String_ {\n    type: \"string\";\n    value: string;\n}\n\ninterface Unknown_ {\n    type: \"unknown\";\n    value: unknown;\n}\n\ninterface Null_ {\n    type: \"null\";\n}\n\ninterface Nop {\n    type: \"nop\";\n}\n\nexport class TypeLiteral extends AstNode {\n    private constructor(public readonly internalType: InternalTypeLiteral) {\n        super();\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalType.type) {\n            case \"list\": {\n                this.writeList({ writer, list: this.internalType });\n                break;\n            }\n            case \"boolean\": {\n                writer.write(this.internalType.value.toString());\n                break;\n            }\n            case \"class\": {\n                this.writeClass({ writer, class_: this.internalType });\n                break;\n            }\n            case \"file\": {\n                writer.writeNode(\n                    buildFileFromString({\n                        writer,\n                        value: this.internalType.value,\n                        namespace: this.internalType.namespace\n                    })\n                );\n                break;\n            }\n            case \"float\": {\n                writer.write(this.internalType.value.toString());\n                break;\n            }\n            case \"number\": {\n                writer.write(this.internalType.value.toString());\n                break;\n            }\n            case \"map\": {\n                this.writeMap({ writer, map: this.internalType });\n                break;\n            }\n            case \"reference\": {\n                writer.writeNode(this.internalType.value);\n                break;\n            }\n            case \"datetime\": {\n                writer.writeNode(buildDateTimeFromString({ writer, value: this.internalType.value }));\n                break;\n            }\n            case \"string\": {\n                if (this.internalType.value.includes(\"\\n\")) {\n                    this.writeStringWithHeredoc({ writer, value: this.internalType.value });\n                    break;\n                }\n                if (this.internalType.value.includes(\"'\")) {\n                    writer.write(`\"${this.internalType.value.replaceAll('\"', '\\\\\"')}\"`);\n                    break;\n                }\n                writer.write(`'${this.internalType.value}'`);\n                break;\n            }\n            case \"unknown\": {\n                this.writeUnknown({ writer, value: this.internalType.value });\n                break;\n            }\n            case \"null\": {\n                writer.write(\"null\");\n                break;\n            }\n            case \"nop\":\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    public isClass(): this is Class_ {\n        return (this.internalType as Class_).type === \"class\";\n    }\n\n    public asClassOrThrow(): Class_ {\n        if (this.isClass()) {\n            return this.internalType as Class_;\n        }\n        throw new Error(\"Internal error; ts.TypeLiteral is not a class\");\n    }\n\n    private writeStringWithHeredoc({ writer, value }: { writer: Writer; value: string }): void {\n        writer.writeLine(\"<<<EOT\");\n        writer.writeNoIndent(value);\n        writer.newLine();\n        writer.writeNoIndent(\"EOT\");\n    }\n\n    private writeClass({ writer, class_: class_ }: { writer: Writer; class_: Class_ }): void {\n        writer.writeNode(\n            new ClassInstantiation({\n                classReference: class_.reference,\n                arguments_: [\n                    TypeLiteral.map({\n                        entries: class_.fields.map((field) => ({\n                            key: TypeLiteral.string(field.name),\n                            value: field.value\n                        }))\n                    })\n                ]\n            })\n        );\n    }\n\n    private writeList({ writer, list }: { writer: Writer; list: List }): void {\n        const values = filterNopValues({ values: list.values });\n        if (values.length === 0) {\n            writer.write(\"[]\");\n            return;\n        }\n\n        writer.writeLine(\"[\");\n        writer.indent();\n        for (const value of values) {\n            value.write(writer);\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"]\");\n    }\n\n    private writeMap({ writer, map }: { writer: Writer; map: Map }): void {\n        const entries = filterNopMapEntries({ entries: map.entries });\n        if (entries.length === 0) {\n            writer.write(\"[]\");\n            return;\n        }\n\n        writer.writeLine(\"[\");\n        writer.indent();\n        for (const entry of entries) {\n            entry.key.write(writer);\n            writer.write(\" => \");\n            entry.value.write(writer);\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"]\");\n    }\n\n    /* Static factory methods for creating a TypeLiteral */\n    public static list({ values }: { values: TypeLiteral[] }): TypeLiteral {\n        return new this({\n            type: \"list\",\n            values\n        });\n    }\n\n    public static boolean(value: boolean): TypeLiteral {\n        return new this({ type: \"boolean\", value });\n    }\n\n    public static class_({\n        reference,\n        fields\n    }: {\n        reference: ClassReference;\n        fields: ConstructorField[];\n    }): TypeLiteral {\n        return new this({ type: \"class\", reference, fields });\n    }\n\n    public static file(value: string, namespace?: string): TypeLiteral {\n        return new this({ type: \"file\", value, namespace });\n    }\n\n    public static float(value: number): TypeLiteral {\n        return new this({ type: \"float\", value });\n    }\n\n    public static datetime(value: string): TypeLiteral {\n        return new this({ type: \"datetime\", value });\n    }\n\n    public static number(value: number): TypeLiteral {\n        return new this({ type: \"number\", value });\n    }\n\n    public static map({ entries }: { entries: MapEntry[] }): TypeLiteral {\n        return new this({\n            type: \"map\",\n            entries\n        });\n    }\n\n    public static reference(value: AstNode): TypeLiteral {\n        return new this({\n            type: \"reference\",\n            value\n        });\n    }\n\n    public static string(value: string): TypeLiteral {\n        return new this({\n            type: \"string\",\n            value\n        });\n    }\n\n    public static unknown(value: unknown): TypeLiteral {\n        return new this({ type: \"unknown\", value });\n    }\n\n    public static null(): TypeLiteral {\n        return new this({ type: \"null\" });\n    }\n\n    public static nop(): TypeLiteral {\n        return new this({ type: \"nop\" });\n    }\n\n    public static isNop(typeLiteral: TypeLiteral): boolean {\n        return typeLiteral.internalType.type === \"nop\";\n    }\n\n    private writeUnknown({ writer, value }: { writer: Writer; value: unknown }): void {\n        switch (typeof value) {\n            case \"boolean\":\n                writer.write(value.toString());\n                return;\n            case \"string\":\n                writer.write(value.includes('\"') ? `\\`${value}\\`` : `\"${value}\"`);\n                return;\n            case \"number\":\n                writer.write(value.toString());\n                return;\n            case \"object\":\n                if (value == null) {\n                    writer.write(\"null\");\n                    return;\n                }\n                if (Array.isArray(value)) {\n                    this.writeUnknownArray({ writer, value });\n                    return;\n                }\n                this.writeUnknownMap({ writer, value });\n                return;\n            default:\n                throw new Error(`Internal error; unsupported unknown type: ${typeof value}`);\n        }\n    }\n\n    private writeUnknownArray({\n        writer,\n        value\n    }: {\n        writer: Writer;\n        // biome-ignore lint/suspicious/noExplicitAny: allow\n        value: any[];\n    }): void {\n        if (value.length === 0) {\n            writer.write(\"[]\");\n            return;\n        }\n        writer.writeLine(\"[\");\n        writer.indent();\n        for (const element of value) {\n            writer.writeNode(TypeLiteral.unknown(element));\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"]\");\n    }\n\n    private writeUnknownMap({ writer, value }: { writer: Writer; value: object }): void {\n        const entries = Object.entries(value);\n        if (entries.length === 0) {\n            writer.write(\"[]\");\n            return;\n        }\n        writer.writeLine(\"[\");\n        writer.indent();\n        for (const [key, val] of entries) {\n            writer.write(`'${key}' => `);\n            writer.writeNode(TypeLiteral.unknown(val));\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"]\");\n    }\n}\n\nfunction buildDateTimeFromString({ writer, value }: { writer: Writer; value: string }): ClassInstantiation {\n    return new ClassInstantiation({\n        classReference: new ClassReference({\n            name: \"DateTime\",\n            namespace: \"\"\n        }),\n        arguments_: [new CodeBlock(`'${value}'`)]\n    });\n}\nfunction buildFileFromString({\n    writer,\n    value,\n    namespace\n}: {\n    writer: Writer;\n    value: string;\n    namespace?: string;\n}): MethodInvocation {\n    return new MethodInvocation({\n        on: new ClassReference({\n            name: \"File\",\n            namespace: namespace != null ? `${namespace}\\\\Utils` : `${writer.rootNamespace}\\\\Utils`\n        }),\n        method: \"createFromString\",\n        arguments_: [new CodeBlock(`\"${value}\"`), new CodeBlock(`\"${value}\"`)],\n        static_: true\n    });\n}\n\nfunction filterNopMapEntries({ entries }: { entries: MapEntry[] }): MapEntry[] {\n    return entries.filter((entry) => !TypeLiteral.isNop(entry.key) && !TypeLiteral.isNop(entry.value));\n}\n\nfunction filterNopValues({ values }: { values: TypeLiteral[] }): TypeLiteral[] {\n    return values.filter((value) => !TypeLiteral.isNop(value));\n}\n","import { Arguments } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { ClassReference } from \"./ClassReference.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { writeArguments } from \"./utils/writeArguments.js\";\n\nexport declare namespace ClassInstantiation {\n    interface Args {\n        /* The class reference to instantiate */\n        classReference: ClassReference;\n        /* The arguments passed into the class constructor */\n        arguments_: Arguments;\n        /* Write the instantiation across multiple lines */\n        multiline?: boolean;\n    }\n}\n\nexport class ClassInstantiation extends AstNode {\n    public readonly classReference: ClassReference;\n    public readonly arguments_: Arguments;\n    private multiline: boolean;\n\n    constructor({ classReference, arguments_, multiline }: ClassInstantiation.Args) {\n        super();\n        this.classReference = classReference;\n        this.arguments_ = arguments_;\n        this.multiline = multiline ?? false;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(\"new \");\n        writer.writeNode(this.classReference);\n        writeArguments({ writer, arguments_: this.arguments_, multiline: this.multiline });\n    }\n}\n","import { Argument, Arguments, isNamedArgument } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { Writer } from \"../core/Writer.js\";\n\nexport function writeArguments({\n    writer,\n    arguments_,\n    multiline\n}: {\n    writer: Writer;\n    arguments_: Arguments;\n    multiline?: boolean;\n}): void {\n    if (arguments_.length === 0) {\n        writer.write(\"()\");\n        return;\n    }\n    if (multiline) {\n        writeMultiline({ writer, arguments_ });\n        return;\n    }\n    writeCompact({ writer, arguments_ });\n}\n\nfunction writeMultiline({ writer, arguments_ }: { writer: Writer; arguments_: Arguments }): void {\n    writer.writeLine(\"(\");\n    writer.indent();\n    for (const argument of arguments_) {\n        writeArgument({ writer, argument, writeCompact: false });\n        writer.writeLine(\",\");\n    }\n    writer.dedent();\n    writer.write(\")\");\n}\n\nfunction writeCompact({ writer, arguments_ }: { writer: Writer; arguments_: Arguments }): void {\n    writer.write(\"(\");\n    arguments_.forEach((argument, index) => {\n        if (index > 0) {\n            writer.write(\", \");\n        }\n        writeArgument({ writer, argument, writeCompact: true });\n    });\n    writer.write(\")\");\n}\n\nfunction writeArgument({\n    writer,\n    argument,\n    writeCompact\n}: {\n    writer: Writer;\n    argument: Argument;\n    writeCompact: boolean;\n}): void {\n    if (isNamedArgument(argument)) {\n        if (argument.docs) {\n            if (writeCompact) {\n                writer.write(`/* ${argument.docs} */ `);\n            } else {\n                writer.writeLine(`/* ${argument.docs} */`);\n            }\n        }\n        writer.write(`${argument.name}: `);\n        writer.writeNodeOrString(argument.assignment);\n    } else {\n        argument.write(writer);\n    }\n}\n","export { AstNode } from \"./AstNode.js\";\nexport { GLOBAL_NAMESPACE, SELF, STATIC } from \"./Constant.js\";\nexport { Writer } from \"./Writer.js\";\n","import { Arguments } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { writeArguments } from \"./utils/writeArguments.js\";\n\nexport declare namespace MethodInvocation {\n    interface Args {\n        /* The method to invoke */\n        method: string;\n        /* The arguments passed to the method */\n        arguments_: Arguments;\n        /* In the event of an instance method, you'll want to invoke it on said instance */\n        on?: AstNode;\n        /* If the method is static */\n        static_?: boolean;\n        /* Write the invocation across multiple lines */\n        multiline?: boolean;\n    }\n}\n\nexport class MethodInvocation extends AstNode {\n    private method: string;\n    private arguments_: Arguments;\n    private multiline: boolean;\n    private static_: boolean;\n    private on: AstNode | undefined;\n\n    constructor({ method, arguments_, static_, multiline, on }: MethodInvocation.Args) {\n        super();\n\n        this.method = method;\n        this.arguments_ = arguments_;\n        this.static_ = static_ ?? false;\n        this.multiline = multiline ?? false;\n        this.on = on;\n    }\n\n    public write(writer: Writer): void {\n        if (this.on != null) {\n            this.on.write(writer);\n            writer.write(this.getMethodAccessor());\n        }\n        writer.write(this.method);\n        writeArguments({ writer, arguments_: this.arguments_, multiline: this.multiline });\n    }\n\n    private getMethodAccessor(): string {\n        return this.static_ ? \"::\" : \"->\";\n    }\n}\n","/**\n * Converts the the given name from its PHP variable name\n * (i.e. it removes the '$' prefix, if any).\n */\nexport function convertFromPhpVariableName(name: string): string {\n    return name.startsWith(\"$\") ? name.slice(1) : name;\n}\n","export { Access } from \"./Access.js\";\nexport { Array_ as Array } from \"./Array.js\";\nexport { Attribute } from \"./Attribute.js\";\nexport { Class } from \"./Class.js\";\nexport { ClassInstantiation } from \"./ClassInstantiation.js\";\nexport { ClassReference } from \"./ClassReference.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { SELF, STATIC } from \"./core/Constant.js\";\nexport { Writer } from \"./core/Writer.js\";\nexport { DataClass } from \"./DataClass.js\";\nexport { Enum } from \"./Enum.js\";\nexport { Field } from \"./Field.js\";\nexport { Interface } from \"./Interface.js\";\nexport { Map } from \"./Map.js\";\nexport { Method } from \"./Method.js\";\nexport { MethodInvocation } from \"./MethodInvocation.js\";\nexport { Parameter } from \"./Parameter.js\";\nexport { Trait } from \"./Trait.js\";\nexport { Type } from \"./Type.js\";\nexport { type ConstructorField, TypeLiteral } from \"./TypeLiteral.js\";\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Array_ {\n    interface Args {\n        entries: AstNode[] | undefined;\n    }\n}\n\nexport class Array_ extends AstNode {\n    private entries: AstNode[];\n\n    constructor({ entries }: Array_.Args) {\n        super();\n        this.entries = entries ?? [];\n    }\n\n    public write(writer: Writer): void {\n        writer.write(\"[\");\n        this.entries.forEach((entry, index) => {\n            if (index > 0) {\n                writer.write(\", \");\n            }\n            entry.write(writer);\n        });\n        writer.write(\"]\");\n    }\n}\n","import { ClassReference } from \"./ClassReference.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Attribute {\n    interface Args {\n        /* Reference to the attribute class reference */\n        reference: ClassReference;\n        /* Arguments included in the attribute, if any */\n        arguments?: (string | AstNode)[];\n    }\n}\n\nexport class Attribute extends AstNode {\n    private reference: ClassReference;\n    private arguments: (string | AstNode)[];\n\n    constructor(args: Attribute.Args) {\n        super();\n        this.reference = args.reference;\n        this.arguments = args.arguments ?? [];\n    }\n\n    public write(writer: Writer): void {\n        writer.addReference(this.reference);\n        writer.write(`${this.reference.name}`);\n        if (this.arguments.length > 0) {\n            writer.write(\"(\");\n            this.arguments.forEach((argument, index) => {\n                if (index > 0) {\n                    writer.write(\",\");\n                }\n                if (typeof argument === \"string\") {\n                    writer.write(argument);\n                } else {\n                    argument.write(writer);\n                }\n            });\n            writer.write(\")\");\n        }\n    }\n}\n","import { escapePhpString } from \"../php.js\";\nimport { ClassReference } from \"./ClassReference.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Method } from \"./Method.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Enum {\n    interface Args {\n        /* The name of the PHP enum */\n        name: string;\n        /* The namespace of the PHP enum*/\n        namespace: string;\n        /* If present, specifies that the enum is backed by this type */\n        backing?: \"string\" | \"int\";\n        /* Docs associated with the class */\n        docs?: string;\n        /* Whether the class should implement the JsonSerializable interface */\n        serializable?: boolean;\n    }\n\n    interface Member {\n        /* The name of the enum field */\n        name: string;\n        /* The value of the enum field */\n        value?: string | number;\n    }\n}\n\nexport class Enum extends AstNode {\n    public readonly name: string;\n    public readonly namespace: string;\n    public readonly backing: \"string\" | \"int\" | undefined;\n    public readonly docs: string | undefined;\n    public readonly members: Enum.Member[] = [];\n    public readonly serializable: boolean;\n\n    constructor({ name, namespace, backing, docs, serializable }: Enum.Args) {\n        super();\n        this.name = name;\n        this.namespace = namespace;\n        this.backing = backing;\n        this.docs = docs;\n        this.serializable = serializable ?? false;\n    }\n\n    public addMember(member: Enum.Member): void {\n        this.members.push(member);\n    }\n\n    public write(writer: Writer): void {\n        this.writeComment(writer);\n        writer.write(\"enum \");\n        writer.writeLine(`${this.name}`);\n        if (this.backing != null) {\n            writer.write(` : ${this.backing}`);\n        }\n        if (this.serializable) {\n            writer.addReference(\n                new ClassReference({\n                    name: \"JsonSerializable\",\n                    namespace: \"\"\n                })\n            );\n            writer.writeLine(\" implements JsonSerializable\");\n        }\n        writer.writeLine(\" {\");\n        writer.indent();\n        for (const member of this.members) {\n            writer.write(`case ${member.name}`);\n            if (member.value != null) {\n                if (typeof member.value === \"string\") {\n                    // Use escapePhpString to escape the string value\n                    const escapedValue = escapePhpString(member.value);\n                    writer.write(` = \"${escapedValue}\"`);\n                } else {\n                    writer.write(` = ${member.value}`);\n                }\n            }\n            writer.writeTextStatement(\"\");\n        }\n        if (this.serializable) {\n            writer.newLine();\n            writer.writeNode(\n                new Method({\n                    name: \"jsonSerialize\",\n                    return_: Type.string(),\n                    access: \"public\",\n                    parameters: [],\n                    body: new CodeBlock(\"return $this->value;\")\n                })\n            );\n        }\n        writer.writeNewLineIfLastLineNot();\n        writer.dedent();\n        writer.writeLine(\"}\");\n    }\n\n    public writeComment(writer: Writer): void {\n        if (this.docs == null) {\n            return undefined;\n        }\n        const comment = new Comment({ docs: this.docs });\n        comment.write(writer);\n    }\n}\n","import { Access } from \"./Access.js\";\nimport { ClassReference } from \"./ClassReference.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { SELF, STATIC } from \"./core/Constant.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Parameter } from \"./Parameter.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Method {\n    interface Args {\n        /* The name of the method */\n        name: string;\n        /* The access of the method */\n        access: Access;\n        /* The parameters of the method */\n        parameters: Parameter[];\n        /* The exceptions that can be thrown, if any */\n        throws?: ClassReference[];\n        /* The return type of the method */\n        return_?: Type | typeof STATIC | typeof SELF;\n        /* The body of the method */\n        body?: CodeBlock;\n        /* Documentation for the method */\n        docs?: string;\n        /* The class this method belongs to, if any */\n        classReference?: ClassReference;\n        /* Whether this method is static */\n        static_?: boolean;\n        /* Whether this method has no body (e.g., interface method signatures) */\n        noBody?: boolean;\n    }\n}\n\nexport class Method extends AstNode {\n    public readonly name: string;\n    public readonly access: Access;\n    public readonly parameters: Parameter[];\n    public readonly throws: ClassReference[];\n    public readonly return_: Type | typeof STATIC | typeof SELF | undefined;\n    public readonly body: CodeBlock | undefined;\n    public readonly docs: string | undefined;\n    public readonly classReference: ClassReference | undefined;\n    public readonly static_: boolean;\n    public readonly noBody: boolean;\n\n    constructor({\n        name,\n        access,\n        parameters,\n        throws,\n        return_,\n        body,\n        docs,\n        classReference,\n        static_,\n        noBody\n    }: Method.Args) {\n        super();\n        this.name = name;\n        this.access = access;\n        this.parameters = parameters;\n        this.throws = throws ?? [];\n        this.return_ = return_;\n        this.body = body;\n        this.docs = docs;\n        this.classReference = classReference;\n        this.static_ = static_ ?? false;\n        this.noBody = noBody ?? false;\n    }\n\n    public write(writer: Writer): void {\n        this.writeComment(writer);\n        writer.write(`${this.access}${this.static_ ? \" static\" : \"\"} function ${this.name}(`);\n\n        // NOTE: Put all required parameters before all optional parameters\n        // since this is required by PHPStan\n        const requiredParameters = this.parameters.filter((param) => !param.type.isOptional());\n        const optionalParameters = this.parameters.filter((param) => param.type.isOptional());\n\n        const orderedParameters = [...requiredParameters, ...optionalParameters];\n\n        orderedParameters.forEach((parameter, index) => {\n            if (index > 0) {\n                writer.write(\", \");\n            }\n            parameter.write(writer);\n        });\n        writer.write(\"): \");\n        if (this.return_ != null) {\n            writer.writeNodeOrString(this.return_);\n        } else {\n            writer.write(\"void\");\n        }\n        if (this.noBody) {\n            writer.writeTextStatement(\"\");\n        } else {\n            writer.writeLine(\" {\");\n\n            writer.indent();\n            this.body?.write(writer);\n            writer.dedent();\n\n            writer.writeLine(\"}\");\n        }\n    }\n\n    private writeComment(writer: Writer): void {\n        const comment = new Comment({ docs: this.docs });\n        for (const parameter of this.parameters) {\n            comment.addTag({\n                tagType: \"param\",\n                type: parameter.type,\n                name: parameter.name,\n                docs: parameter.docs\n            });\n        }\n        if (this.return_ != null && this.return_ !== SELF && this.return_ !== STATIC) {\n            comment.addTag({\n                tagType: \"return\",\n                type: this.return_\n            });\n        }\n        for (const throw_ of this.throws) {\n            comment.addTag({\n                tagType: \"throws\",\n                type: Type.reference(throw_)\n            });\n        }\n        writer.writeNode(comment);\n    }\n}\n","import { Access } from \"./Access.js\";\nimport { Attribute } from \"./Attribute.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\nimport { convertToPhpVariableName } from \"./utils/convertToPhpVariableName.js\";\n\nexport declare namespace Field {\n    export interface Args {\n        /* The name of the field */\n        name: string;\n        /* The type of the field */\n        type: Type;\n        /* The access level of the method */\n        access: Access;\n        /* Whether the the field is a readonly value */\n        readonly_?: boolean;\n        /* The initializer for the field */\n        initializer?: CodeBlock;\n        /* The docs (used for describing the field) */\n        docs?: string;\n        /* Docs included in-line */\n        inlineDocs?: string;\n        /* Field attributes */\n        attributes?: Attribute[];\n        /* Indicates that this field is inherited and should not be written to the class. */\n        inherited?: boolean;\n    }\n}\n\nexport class Field extends AstNode {\n    public readonly name: string;\n    public readonly type: Type;\n    public readonly access: Access;\n    private readonly_: boolean;\n    public readonly initializer: CodeBlock | undefined;\n    private docs: string | undefined;\n    private inlineDocs: string | undefined;\n    private attributes: Attribute[];\n    public readonly inherited: boolean;\n\n    constructor({ name, type, access, readonly_, initializer, docs, inlineDocs, attributes, inherited }: Field.Args) {\n        super();\n        this.name = convertToPhpVariableName(name);\n        this.type = type;\n        this.access = access;\n        this.readonly_ = readonly_ ?? false;\n        this.initializer = initializer;\n        this.docs = docs;\n        this.inlineDocs = inlineDocs;\n        this.attributes = attributes ?? [];\n        this.inherited = inherited ?? false;\n    }\n\n    public write(writer: Writer): void {\n        this.writeComment(writer);\n        this.writeAttributesIfPresent(writer);\n\n        writer.write(`${this.access} `);\n        if (this.readonly_) {\n            writer.write(\"readonly \");\n        }\n\n        this.type.write(writer);\n        writer.write(` ${this.name}`);\n\n        if (this.initializer != null) {\n            writer.write(\" = \");\n            this.initializer.write(writer);\n        }\n        writer.write(\";\");\n\n        if (this.inlineDocs != null) {\n            writer.write(` // ${this.inlineDocs}`);\n        }\n        writer.newLine();\n    }\n\n    private writeComment(writer: Writer): void {\n        const comment = new Comment();\n        comment.addTag({\n            tagType: \"var\",\n            type: this.type,\n            name: this.name,\n            docs: this.docs\n        });\n        comment.write(writer);\n    }\n\n    private writeAttributesIfPresent(writer: Writer): void {\n        if (this.attributes.length > 0) {\n            writer.write(\"#[\");\n            this.attributes.forEach((attribute, index) => {\n                if (index > 0) {\n                    writer.write(\", \");\n                }\n                attribute.write(writer);\n            });\n            writer.writeLine(\"]\");\n        }\n    }\n}\n","import { ClassReference } from \"./ClassReference.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Method } from \"./Method.js\";\n\nexport declare namespace Interface {\n    interface Args {\n        /* The name of the PHP interface */\n        name: string;\n        /* The namespace of the PHP interface */\n        namespace: string;\n        /* Docs associated with the interface */\n        docs?: string;\n        /* The interfaces that this interface extends, if any */\n        extends_?: ClassReference[];\n    }\n}\n\nexport class Interface extends AstNode {\n    public readonly name: string;\n    public readonly namespace: string;\n    public readonly docs: string | undefined;\n    public readonly extends_: ClassReference[];\n\n    public readonly methods: Method[] = [];\n\n    constructor({ name, namespace, docs, extends_ }: Interface.Args) {\n        super();\n        this.name = name;\n        this.namespace = namespace;\n        this.docs = docs;\n        this.extends_ = extends_ ?? [];\n    }\n\n    public addMethod(method: Method): void {\n        this.methods.push(method);\n    }\n\n    public addMethods(methods: Method[]): void {\n        this.methods.push(...methods);\n    }\n\n    public write(writer: Writer): void {\n        writer.addReference(new ClassReference({ name: this.name, namespace: this.namespace }));\n        this.writeComment(writer);\n        writer.write(`interface ${this.name} `);\n        if (this.extends_.length > 0) {\n            writer.write(\"extends \");\n            this.extends_.forEach((ref, index) => {\n                if (index > 0) {\n                    writer.write(\", \");\n                }\n                writer.writeNode(ref);\n            });\n            writer.write(\" \");\n        }\n        writer.newLine();\n        writer.writeLine(\"{\");\n        writer.indent();\n\n        this.writeMethods({ writer, methods: this.methods });\n\n        writer.dedent();\n        writer.writeLine(\"}\");\n        return;\n    }\n\n    private writeComment(writer: Writer): void {\n        if (this.docs == null) {\n            return;\n        }\n        const comment = new Comment({ docs: this.docs });\n        comment.write(writer);\n    }\n\n    private writeMethods({ writer, methods }: { writer: Writer; methods: Method[] }): void {\n        methods.forEach((method, index) => {\n            if (index > 0) {\n                writer.newLine();\n            }\n            method.write(writer);\n            writer.writeNewLineIfLastLineNot();\n        });\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Map {\n    interface Args {\n        entries: Entry[] | undefined;\n        multiline?: boolean;\n    }\n\n    interface Entry {\n        key: AstNode;\n        value: AstNode;\n    }\n}\n\nexport class Map extends AstNode {\n    private entries: Map.Entry[];\n    private multiline: boolean;\n\n    constructor({ entries, multiline }: Map.Args) {\n        super();\n        this.entries = entries ?? [];\n        this.multiline = multiline ?? false;\n    }\n\n    public write(writer: Writer): void {\n        if (this.multiline) {\n            this.writeMultiline(writer);\n            return;\n        }\n        this.writeCompact(writer);\n    }\n\n    private writeMultiline(writer: Writer): void {\n        writer.writeLine(\"[\");\n        writer.indent();\n        for (const { key, value } of this.entries) {\n            key.write(writer);\n            writer.write(\" => \");\n            value.write(writer);\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"]\");\n    }\n\n    private writeCompact(writer: Writer): void {\n        writer.write(\"[\");\n        for (const [index, { key, value }] of this.entries.entries()) {\n            if (index > 0) {\n                writer.write(\", \");\n            }\n            key.write(writer);\n            writer.write(\" => \");\n            value.write(writer);\n        }\n        writer.write(\"]\");\n    }\n}\n","import { ClassReference } from \"./ClassReference.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Field } from \"./Field.js\";\nimport { Method } from \"./Method.js\";\nimport { orderByAccess } from \"./utils/orderByAccess.js\";\n\nexport declare namespace Trait {\n    interface Args {\n        /* The name of the PHP trait */\n        name: string;\n        /* The namespace of the PHP trait */\n        namespace: string;\n        /* Docs associated with the trait */\n        docs?: string;\n        /* The traits that this trait uses, if any */\n        traits?: ClassReference[];\n    }\n}\n\nexport class Trait extends AstNode {\n    public readonly name: string;\n    public readonly namespace: string;\n    public readonly docs: string | undefined;\n    public readonly traits: ClassReference[];\n\n    public readonly fields: Field[] = [];\n    public readonly methods: Method[] = [];\n\n    constructor({ name, namespace, docs, traits }: Trait.Args) {\n        super();\n        this.name = name;\n        this.namespace = namespace;\n        this.docs = docs;\n        this.traits = traits ?? [];\n    }\n\n    public addField(field: Field): void {\n        this.fields.push(field);\n    }\n\n    public addMethod(method: Method): void {\n        this.methods.push(method);\n    }\n\n    public write(writer: Writer): void {\n        this.writeComment(writer);\n        writer.write(`trait ${this.name} `);\n        writer.newLine();\n        writer.writeLine(\"{\");\n        writer.indent();\n\n        if (this.traits.length > 0) {\n            writer.write(\"use \");\n            this.traits.forEach((trait, index) => {\n                if (index > 0) {\n                    writer.write(\",\");\n                }\n                writer.writeNode(trait);\n            });\n            writer.writeTextStatement(\"\");\n            writer.newLine();\n        }\n\n        this.writeFields({ writer, fields: orderByAccess(this.fields) });\n        if (this.fields.length > 0 && this.methods.length > 0) {\n            writer.newLine();\n        }\n        this.writeMethods({ writer, methods: orderByAccess(this.methods) });\n\n        writer.dedent();\n        writer.writeLine(\"}\");\n        return;\n    }\n\n    private writeComment(writer: Writer): void {\n        const comment = new Comment({ docs: this.docs });\n        for (const field of this.fields) {\n            comment.addTag({\n                tagType: \"property\",\n                type: field.type,\n                name: field.name\n            });\n        }\n        comment.write(writer);\n    }\n\n    private writeFields({ writer, fields }: { writer: Writer; fields: Field[] }): void {\n        fields.forEach((field, index) => {\n            if (index > 0) {\n                writer.newLine();\n            }\n            field.write(writer);\n            writer.writeNewLineIfLastLineNot();\n        });\n    }\n\n    private writeMethods({ writer, methods }: { writer: Writer; methods: Method[] }): void {\n        methods.forEach((method, index) => {\n            if (index > 0) {\n                writer.newLine();\n            }\n            method.write(writer);\n            writer.writeNewLineIfLastLineNot();\n        });\n    }\n}\n","import { AbstractAstNode } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { codeblock } from \"../php.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { writeArguments } from \"./utils/writeArguments.js\";\n\nexport declare namespace MergeArrays {\n    export type Arg =\n        | string\n        | AstNode\n        | {\n              ref: string | AstNode;\n              fallback: string;\n          };\n    export type Args = Arg[];\n}\n\nexport class MergeArrays extends AstNode {\n    public readonly arrays: (\n        | string\n        | AstNode\n        | {\n              ref: string | AstNode;\n              fallback: string | AstNode;\n          }\n    )[];\n\n    constructor(arrays: MergeArrays.Args) {\n        super();\n        this.arrays = arrays;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(\"array_merge\");\n        writeArguments({\n            writer,\n            arguments_: this.arrays.map<AbstractAstNode>((array) => {\n                return codeblock((writer: Writer) => {\n                    if (typeof array === \"string\" || array instanceof AstNode) {\n                        writer.writeNodeOrString(array);\n                        return;\n                    }\n                    writer.writeNodeOrString(array.ref);\n                    if (array.fallback) {\n                        writer.write(\" ?? \");\n                        writer.writeNodeOrString(array.fallback);\n                    }\n                });\n            })\n        });\n    }\n}\n","import { PHP_RESERVED_KEYWORDS } from \"./constants.js\";\n\n/**\n * Returns a safe class name, adding a trailing underscore if the name\n * conflicts with a PHP reserved keyword.\n */\nexport function getSafeClassName(className: string): string {\n    // Check if the class name is a reserved keyword (case-insensitive)\n    if (PHP_RESERVED_KEYWORDS.has(className.toLowerCase())) {\n        // Add trailing underscore to avoid collision\n        return `${className}_`;\n    }\n\n    return className;\n}\n","import { DiscriminatedUnionTypeInstance, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { php } from \"@fern-api/php-codegen\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n    interface Args {\n        typeReference: FernIr.dynamic.TypeReference;\n        value: unknown;\n        as?: ConvertedAs;\n    }\n\n    // Identifies what the type is being converted as, which sometimes influences how\n    // the type is instantiated.\n    type ConvertedAs = \"key\";\n}\n\nexport class DynamicTypeLiteralMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public convert(args: DynamicTypeLiteralMapper.Args): php.TypeLiteral {\n        // eslint-disable-next-line eqeqeq\n        if (args.value === null) {\n            if (this.context.isNullable(args.typeReference)) {\n                return php.TypeLiteral.null();\n            }\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Expected non-null value, but got null\"\n            });\n            return php.TypeLiteral.nop();\n        }\n        if (args.value === undefined) {\n            return php.TypeLiteral.nop();\n        }\n        switch (args.typeReference.type) {\n            case \"list\":\n            case \"set\":\n                return this.convertList({ list: args.typeReference.value, value: args.value });\n            case \"literal\":\n                return this.convertLiteral({ literalType: args.typeReference.value, value: args.value });\n            case \"map\":\n                return this.convertMap({ map: args.typeReference, value: args.value });\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return this.convertNamed({ named, value: args.value, as: args.as });\n            }\n            case \"optional\":\n                return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n            case \"nullable\":\n                return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n            case \"primitive\":\n                return this.convertPrimitive({ primitive: args.typeReference.value, value: args.value, as: args.as });\n            case \"unknown\":\n                return this.convertUnknown({ value: args.value });\n            default:\n                assertNever(args.typeReference);\n        }\n    }\n\n    private convertLiteral({\n        literalType,\n        value\n    }: {\n        literalType: FernIr.dynamic.LiteralType;\n        value: unknown;\n    }): php.TypeLiteral {\n        switch (literalType.type) {\n            case \"boolean\": {\n                const bool = this.context.getValueAsBoolean({ value });\n                if (bool == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return php.TypeLiteral.boolean(bool);\n            }\n            case \"string\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return php.TypeLiteral.string(str);\n            }\n            default:\n                assertNever(literalType);\n        }\n    }\n\n    private convertList({ list, value }: { list: FernIr.dynamic.TypeReference; value: unknown }): php.TypeLiteral {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return php.TypeLiteral.nop();\n        }\n        return php.TypeLiteral.list({\n            values: value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: list, value: v });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertMap({ map, value }: { map: FernIr.dynamic.MapType; value: unknown }): php.TypeLiteral {\n        if (typeof value !== \"object\" || value == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n            });\n            return php.TypeLiteral.nop();\n        }\n        return php.TypeLiteral.map({\n            entries: Object.entries(value).map(([key, value]) => {\n                this.context.errors.scope(key);\n                try {\n                    return {\n                        key: this.convert({ typeReference: map.key, value: key, as: \"key\" }),\n                        value: this.convert({ typeReference: map.value, value })\n                    };\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertNamed({\n        named,\n        value,\n        as\n    }: {\n        named: FernIr.dynamic.NamedType;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): php.TypeLiteral {\n        switch (named.type) {\n            case \"alias\": {\n                return this.convert({ typeReference: named.typeReference, value, as });\n            }\n            case \"discriminatedUnion\":\n                return this.convertDiscriminatedUnion({\n                    discriminatedUnion: named,\n                    value\n                });\n            case \"enum\":\n                return this.convertEnum({ enum_: named, value });\n            case \"object\":\n                return this.convertObject({ object_: named, value });\n            case \"undiscriminatedUnion\":\n                return this.convertUndiscriminatedUnion({ undiscriminatedUnion: named, value });\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertDiscriminatedUnion({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): php.TypeLiteral {\n        const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n            discriminatedUnion,\n            value\n        });\n        if (discriminatedUnionTypeInstance == null) {\n            return php.TypeLiteral.nop();\n        }\n        const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n        const unionProperties = this.convertDiscriminatedUnionProperties({\n            discriminatedUnionTypeInstance,\n            unionVariant\n        });\n        if (unionProperties == null) {\n            return php.TypeLiteral.nop();\n        }\n        return php.TypeLiteral.reference(\n            php.codeblock((writer) => {\n                writer.writeNode(\n                    php.invokeMethod({\n                        on: php.classReference({\n                            name: this.context.getClassName(discriminatedUnion.declaration.name),\n                            namespace: this.context.getTypesNamespace(discriminatedUnion.declaration.fernFilepath)\n                        }),\n                        method: this.context.getMethodName(unionVariant.discriminantValue.name),\n                        arguments_: this.convertDiscriminatedUnionVariantArgs({\n                            discriminatedUnionTypeInstance,\n                            unionVariant,\n                            unionProperties\n                        }),\n                        static_: true\n                    })\n                );\n            })\n        );\n    }\n\n    private convertDiscriminatedUnionProperties({\n        discriminatedUnionTypeInstance,\n        unionVariant\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        unionVariant: FernIr.dynamic.SingleDiscriminatedUnionType;\n    }): php.ConstructorField[] | undefined {\n        switch (unionVariant.type) {\n            case \"samePropertiesAsObject\": {\n                const named = this.context.resolveNamedType({\n                    typeId: unionVariant.typeId\n                });\n                if (named == null) {\n                    return undefined;\n                }\n                const converted = this.convertNamed({ named, value: discriminatedUnionTypeInstance.value });\n                if (!converted.isClass()) {\n                    this.context.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Internal error; expected union value to be an object\"\n                    });\n                    return undefined;\n                }\n                const object_ = converted.asClassOrThrow();\n                return object_.fields;\n            }\n            case \"singleProperty\": {\n                try {\n                    this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n                    const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n                    if (record == null) {\n                        return [\n                            {\n                                name: this.context.getPropertyName(unionVariant.discriminantValue.name),\n                                value: this.convert({\n                                    typeReference: unionVariant.typeReference,\n                                    value: discriminatedUnionTypeInstance.value\n                                })\n                            }\n                        ];\n                    }\n                    return [\n                        {\n                            name: this.context.getPropertyName(unionVariant.discriminantValue.name),\n                            value: this.convert({\n                                typeReference: unionVariant.typeReference,\n                                value: record[unionVariant.discriminantValue.wireValue]\n                            })\n                        }\n                    ];\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }\n            case \"noProperties\":\n                return [];\n            default:\n                assertNever(unionVariant);\n        }\n    }\n\n    private convertDiscriminatedUnionVariantArgs({\n        discriminatedUnionTypeInstance,\n        unionVariant,\n        unionProperties\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        unionVariant: FernIr.dynamic.SingleDiscriminatedUnionType;\n        unionProperties: php.ConstructorField[];\n    }): php.AstNode[] {\n        const baseFields = this.getBaseFields({\n            discriminatedUnionTypeInstance,\n            singleDiscriminatedUnionType: unionVariant\n        });\n        if (unionVariant.type === \"singleProperty\") {\n            const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n            if (record == null && unionProperties.length === 1) {\n                // The union is a single value without any base properties, e.g.\n                return [\n                    ...baseFields,\n                    this.convert({\n                        typeReference: unionVariant.typeReference,\n                        value: discriminatedUnionTypeInstance.value\n                    })\n                ];\n            }\n        }\n        if (unionVariant.type === \"samePropertiesAsObject\") {\n            const named = this.context.resolveNamedType({\n                typeId: unionVariant.typeId\n            });\n            if (named == null) {\n                return [];\n            }\n            return [\n                ...baseFields,\n                php.TypeLiteral.class_({\n                    reference: php.classReference({\n                        name: this.context.getClassName(named.declaration.name),\n                        namespace: this.context.getTypesNamespace(named.declaration.fernFilepath)\n                    }),\n                    fields: unionProperties\n                })\n            ];\n        }\n        return baseFields;\n    }\n\n    private getBaseFields({\n        discriminatedUnionTypeInstance,\n        singleDiscriminatedUnionType\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        singleDiscriminatedUnionType: FernIr.dynamic.SingleDiscriminatedUnionType;\n    }): php.AstNode[] {\n        const properties = this.context.associateByWireValue({\n            parameters: singleDiscriminatedUnionType.properties ?? [],\n            values: this.context.getRecord(discriminatedUnionTypeInstance.value) ?? {},\n\n            // We're only selecting the base properties here. The rest of the properties\n            // are handled by the union variant.\n            ignoreMissingParameters: true\n        });\n        return properties.map((property) => {\n            this.context.errors.scope(property.name.wireValue);\n            try {\n                return this.convert(property);\n            } finally {\n                this.context.errors.unscope();\n            }\n        });\n    }\n\n    private convertObject({ object_, value }: { object_: FernIr.dynamic.ObjectType; value: unknown }): php.TypeLiteral {\n        const record = this.context.getRecord(value) ?? {};\n        const properties = this.context.associateByWireValue({\n            parameters: object_.properties,\n            values: record\n        });\n        const fields: php.ConstructorField[] = properties.map((property) => {\n            this.context.errors.scope(property.name.wireValue);\n            try {\n                return {\n                    name: this.context.getPropertyName(property.name.name),\n                    value: this.convert(property)\n                };\n            } finally {\n                this.context.errors.unscope();\n            }\n        });\n\n        const providedKeys = new Set(Object.keys(record));\n        for (const param of object_.properties) {\n            if (!providedKeys.has(param.name.wireValue) && !this.isOptionalOrNullable(param.typeReference)) {\n                const placeholder = this.generatePlaceholderValue(param.typeReference);\n                if (!php.TypeLiteral.isNop(placeholder)) {\n                    fields.push({\n                        name: this.context.getPropertyName(param.name.name),\n                        value: placeholder\n                    });\n                }\n            }\n        }\n\n        return php.TypeLiteral.class_({\n            reference: php.classReference({\n                name: this.context.getClassName(object_.declaration.name),\n                namespace: this.context.getTypesNamespace(object_.declaration.fernFilepath)\n            }),\n            fields\n        });\n    }\n\n    private isOptionalOrNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n        return this.context.isOptional(typeReference) || this.context.isNullable(typeReference);\n    }\n\n    private generatePlaceholderValue(typeReference: FernIr.dynamic.TypeReference): php.TypeLiteral {\n        switch (typeReference.type) {\n            case \"primitive\":\n                return this.generatePrimitivePlaceholder(typeReference.value);\n            case \"list\":\n            case \"set\": {\n                const elementPlaceholder = this.generatePlaceholderValue(typeReference.value);\n                if (php.TypeLiteral.isNop(elementPlaceholder)) {\n                    return php.TypeLiteral.list({ values: [] });\n                }\n                return php.TypeLiteral.list({ values: [elementPlaceholder] });\n            }\n            case \"map\": {\n                const keyPlaceholder = this.generatePlaceholderValue(typeReference.key);\n                const valuePlaceholder = this.generatePlaceholderValue(typeReference.value);\n                if (php.TypeLiteral.isNop(keyPlaceholder) || php.TypeLiteral.isNop(valuePlaceholder)) {\n                    return php.TypeLiteral.map({ entries: [] });\n                }\n                return php.TypeLiteral.map({\n                    entries: [{ key: keyPlaceholder, value: valuePlaceholder }]\n                });\n            }\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: typeReference.value });\n                if (named == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return this.generateNamedPlaceholder(named);\n            }\n            case \"optional\":\n            case \"nullable\":\n                return php.TypeLiteral.null();\n            case \"literal\":\n                return this.generateLiteralPlaceholder(typeReference.value);\n            case \"unknown\":\n                return php.TypeLiteral.null();\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    private generatePrimitivePlaceholder(primitive: FernIr.dynamic.PrimitiveTypeV1): php.TypeLiteral {\n        switch (primitive) {\n            case \"INTEGER\":\n            case \"LONG\":\n            case \"UINT\":\n            case \"UINT_64\":\n                return php.TypeLiteral.number(1);\n            case \"FLOAT\":\n            case \"DOUBLE\":\n                return php.TypeLiteral.float(1.0);\n            case \"BOOLEAN\":\n                return php.TypeLiteral.boolean(true);\n            case \"STRING\":\n                return php.TypeLiteral.string(\"value\");\n            case \"DATE\":\n                return php.TypeLiteral.datetime(\"2024-01-01\");\n            case \"DATE_TIME\":\n                return php.TypeLiteral.datetime(\"2024-01-01T00:00:00Z\");\n            case \"UUID\":\n                return php.TypeLiteral.string(\"d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32\");\n            case \"BASE_64\":\n                return php.TypeLiteral.string(\"SGVsbG8=\");\n            case \"BIG_INTEGER\":\n                return php.TypeLiteral.string(\"1000000\");\n            default:\n                assertNever(primitive);\n        }\n    }\n\n    private generateNamedPlaceholder(named: FernIr.dynamic.NamedType): php.TypeLiteral {\n        switch (named.type) {\n            case \"alias\":\n                return this.generatePlaceholderValue(named.typeReference);\n            case \"enum\": {\n                const firstValue = named.values[0];\n                if (firstValue == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return php.TypeLiteral.reference(\n                    php.codeblock((writer) => {\n                        writer.writeNode(\n                            php.classReference({\n                                name: this.context.getClassName(named.declaration.name),\n                                namespace: this.context.getTypesNamespace(named.declaration.fernFilepath)\n                            })\n                        );\n                        writer.write(\"::\");\n                        writer.write(this.context.getClassName(firstValue.name));\n                        writer.write(\"->value\");\n                    })\n                );\n            }\n            case \"object\":\n                return this.convertObject({ object_: named, value: {} });\n            case \"discriminatedUnion\": {\n                const firstType = Object.values(named.types)[0];\n                if (firstType == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return php.TypeLiteral.nop();\n            }\n            case \"undiscriminatedUnion\": {\n                const firstType = named.types[0];\n                if (firstType == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return this.generatePlaceholderValue(firstType);\n            }\n            default:\n                assertNever(named);\n        }\n    }\n\n    private generateLiteralPlaceholder(literal: FernIr.dynamic.LiteralType): php.TypeLiteral {\n        switch (literal.type) {\n            case \"boolean\":\n                return php.TypeLiteral.boolean(literal.value);\n            case \"string\":\n                return php.TypeLiteral.string(literal.value);\n            default:\n                assertNever(literal);\n        }\n    }\n\n    private convertEnum({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): php.TypeLiteral {\n        const name = this.getEnumValueName({ enum_, value });\n        if (name == null) {\n            return php.TypeLiteral.nop();\n        }\n        return php.TypeLiteral.reference(\n            php.codeblock((writer) => {\n                writer.writeNode(\n                    php.classReference({\n                        name: this.context.getClassName(enum_.declaration.name),\n                        namespace: this.context.getTypesNamespace(enum_.declaration.fernFilepath)\n                    })\n                );\n                writer.write(\"::\");\n                writer.write(name);\n                writer.write(\"->value\");\n            })\n        );\n    }\n\n    private getEnumValueName({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected enum value string, got: ${typeof value}`\n            });\n            return undefined;\n        }\n        const enumValue = enum_.values.find((v) => v.wireValue === value);\n        if (enumValue == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `An enum value named \"${value}\" does not exist in this context`\n            });\n            return undefined;\n        }\n        return this.context.getClassName(enumValue.name);\n    }\n\n    private convertUndiscriminatedUnion({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): php.TypeLiteral {\n        const result = this.findMatchingUndiscriminatedUnionType({\n            undiscriminatedUnion,\n            value\n        });\n        if (result == null) {\n            return php.TypeLiteral.nop();\n        }\n        return result;\n    }\n\n    private findMatchingUndiscriminatedUnionType({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): php.TypeLiteral | undefined {\n        for (const typeReference of undiscriminatedUnion.types) {\n            const errorsBefore = this.context.errors.size();\n            try {\n                const result = this.convert({ typeReference, value });\n                if (php.TypeLiteral.isNop(result)) {\n                    this.context.errors.truncate(errorsBefore);\n                    continue;\n                }\n                return result;\n            } catch (e) {\n                this.context.errors.truncate(errorsBefore);\n                continue;\n            }\n        }\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value`\n        });\n        return undefined;\n    }\n\n    private convertUnknown({ value }: { value: unknown }): php.TypeLiteral {\n        return php.TypeLiteral.unknown(value);\n    }\n\n    private convertPrimitive({\n        primitive,\n        value,\n        as\n    }: {\n        primitive: FernIr.dynamic.PrimitiveTypeV1;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): php.TypeLiteral {\n        switch (primitive) {\n            case \"INTEGER\":\n            case \"LONG\":\n            case \"UINT\":\n            case \"UINT_64\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return php.TypeLiteral.number(num);\n            }\n            case \"FLOAT\":\n            case \"DOUBLE\": {\n                const num = this.getValueAsNumber({ value });\n                if (num == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return php.TypeLiteral.float(num);\n            }\n            case \"BOOLEAN\": {\n                const bool = this.getValueAsBoolean({ value, as });\n                if (bool == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return php.TypeLiteral.boolean(bool);\n            }\n            case \"DATE\":\n            case \"DATE_TIME\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return php.TypeLiteral.datetime(str);\n            }\n            case \"BASE_64\":\n            case \"UUID\":\n            case \"BIG_INTEGER\":\n            case \"STRING\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return php.TypeLiteral.nop();\n                }\n                return php.TypeLiteral.string(str);\n            }\n            default:\n                assertNever(primitive);\n        }\n    }\n\n    private getValueAsNumber({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): number | undefined {\n        const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n        return this.context.getValueAsNumber({ value: num });\n    }\n\n    private getValueAsBoolean({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): boolean | undefined {\n        const bool =\n            as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : value === \"false\" ? false : value) : value;\n        return this.context.getValueAsBoolean({ value: bool });\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { php } from \"@fern-api/php-codegen\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport interface FilePropertyInfo {\n    fileFields: php.ConstructorField[];\n    bodyPropertyFields: php.ConstructorField[];\n}\n\nexport class FilePropertyMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public getFilePropertyInfo({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.FileUploadRequestBody;\n        value: unknown;\n    }): FilePropertyInfo {\n        const result: FilePropertyInfo = {\n            fileFields: [],\n            bodyPropertyFields: []\n        };\n        const record = this.context.getRecord(value) ?? {};\n        for (const property of body.properties) {\n            switch (property.type) {\n                case \"file\":\n                    result.fileFields.push({\n                        name: this.context.getPropertyName(property.name),\n                        value: this.getSingleFileProperty({ property, record })\n                    });\n                    break;\n                case \"fileArray\":\n                    result.fileFields.push({\n                        name: this.context.getPropertyName(property.name),\n                        value: this.getArrayFileProperty({ property, record })\n                    });\n                    break;\n                case \"bodyProperty\":\n                    result.bodyPropertyFields.push({\n                        name: this.context.getPropertyName(property.name.name),\n                        value: this.getBodyProperty({ property, record })\n                    });\n                    break;\n                default:\n                    assertNever(property);\n            }\n        }\n        return result;\n    }\n\n    private getSingleFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): php.TypeLiteral {\n        let fileValue = this.context.getSingleFileValue({ property, record });\n        if (fileValue == null) {\n            fileValue = `example_${property.wireValue ?? \"file\"}`;\n        }\n        return php.TypeLiteral.file(fileValue, this.context.rootNamespace);\n    }\n\n    private getArrayFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): php.TypeLiteral {\n        const fileValues = this.context.getFileArrayValues({ property, record });\n        if (fileValues == null) {\n            const fallback = `example_${property.wireValue ?? \"files\"}`;\n            return php.TypeLiteral.list({ values: [php.TypeLiteral.file(fallback, this.context.rootNamespace)] });\n        }\n        return php.TypeLiteral.list({\n            values: fileValues.map((value) => php.TypeLiteral.file(value, this.context.rootNamespace))\n        });\n    }\n\n    private getBodyProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.NamedParameter;\n        record: Record<string, unknown>;\n    }): php.TypeLiteral {\n        const bodyPropertyValue = record[property.name.wireValue];\n        if (bodyPropertyValue == null) {\n            return php.TypeLiteral.nop();\n        }\n        return this.context.dynamicTypeLiteralMapper.convert({\n            typeReference: property.typeReference,\n            value: bodyPropertyValue\n        });\n    }\n}\n","import { AbstractAstNode, NamedArgument, Options, Scope, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { php } from \"@fern-api/php-codegen\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper.js\";\n\nconst CLIENT_VAR_NAME = \"$client\";\nconst SNIPPET_NAMESPACE = \"Example\";\nconst PHP_PREFIX = \"<?php\\n\\n\";\n\nexport class EndpointSnippetGenerator {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public async generateSnippet({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): Promise<string> {\n        const code = this.buildCodeBlock({ endpoint, snippet: request });\n        return (\n            PHP_PREFIX +\n            (await code.toStringAsync({\n                namespace: SNIPPET_NAMESPACE,\n                rootNamespace: SNIPPET_NAMESPACE,\n                customConfig: this.context.customConfig ?? {}\n            }))\n        );\n    }\n\n    public generateSnippetSync({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): string {\n        const code = this.buildCodeBlock({ endpoint, snippet: request });\n        return (\n            PHP_PREFIX +\n            code.toString({\n                namespace: SNIPPET_NAMESPACE,\n                rootNamespace: SNIPPET_NAMESPACE,\n                customConfig: this.context.customConfig ?? {}\n            })\n        );\n    }\n\n    public async generateSnippetAst({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): Promise<AbstractAstNode> {\n        if (options?.skipClientInstantiation) {\n            return this.buildCodeBlockWithoutClient({ endpoint, snippet: request });\n        }\n        return this.buildCodeBlock({ endpoint, snippet: request });\n    }\n\n    public buildCodeBlock({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): php.AstNode {\n        return php.codeblock((writer) => {\n            writer.writeNodeStatement(this.constructClient({ endpoint, snippet }));\n            writer.writeNodeStatement(this.callMethod({ endpoint, snippet }));\n        });\n    }\n\n    public buildCodeBlockWithoutClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): php.AstNode {\n        return php.codeblock((writer) => {\n            // Skip client instantiation - assume client is already available as $this->client\n            writer.writeNodeStatement(this.callMethodOnExistingClient({ endpoint, snippet }));\n        });\n    }\n\n    private constructClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): php.CodeBlock {\n        return php.codeblock((writer) => {\n            writer.write(`${CLIENT_VAR_NAME} = `);\n            writer.writeNode(this.getRootClientClassInstantiation(this.getConstructorArgs({ endpoint, snippet })));\n        });\n    }\n\n    private callMethod({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): php.MethodInvocation {\n        return php.invokeMethod({\n            on: php.codeblock(CLIENT_VAR_NAME),\n            method: this.getMethod({ endpoint }),\n            arguments_: this.getMethodArgs({ endpoint, snippet }),\n            multiline: true\n        });\n    }\n\n    private callMethodOnExistingClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): php.MethodInvocation {\n        const args = this.getMethodArgs({ endpoint, snippet });\n        const requestOptions = this.getRequestOptions({ endpoint, snippet });\n        if (!php.TypeLiteral.isNop(requestOptions)) {\n            args.push(requestOptions);\n        }\n        return php.invokeMethod({\n            on: php.codeblock(\"$this->client\"),\n            method: this.getMethod({ endpoint }),\n            arguments_: args,\n            multiline: true\n        });\n    }\n\n    /**\n     * Builds request options from snippet headers for per-request options.\n     * This is used when generating snippets for existing clients (e.g., wire tests)\n     * where headers should be passed as method call options rather than client constructor options.\n     * Only includes headers that are NOT already mapped to the request directly (i.e., not defined in the IR).\n     */\n    private getRequestOptions({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): php.TypeLiteral {\n        const headers = snippet.headers ?? {};\n        const entries = Object.entries(headers);\n        if (entries.length === 0) {\n            return php.TypeLiteral.nop();\n        }\n\n        // Build a set of header names that are already mapped to the request directly\n        const mappedHeaderNames = new Set<string>();\n\n        // Add global headers from IR\n        if (this.context.ir.headers != null) {\n            for (const header of this.context.ir.headers) {\n                mappedHeaderNames.add(header.name.wireValue.toLowerCase());\n            }\n        }\n\n        // Add endpoint-level headers from inlined request\n        if (endpoint.request.type === \"inlined\" && endpoint.request.headers != null) {\n            for (const header of endpoint.request.headers) {\n                mappedHeaderNames.add(header.name.wireValue.toLowerCase());\n            }\n        }\n\n        // Filter out headers that are already mapped to the request\n        const unmappedEntries = entries.filter(([name]) => !mappedHeaderNames.has(name.toLowerCase()));\n        if (unmappedEntries.length === 0) {\n            return php.TypeLiteral.nop();\n        }\n\n        return php.TypeLiteral.map({\n            entries: [\n                {\n                    key: php.TypeLiteral.string(\"headers\"),\n                    value: php.TypeLiteral.map({\n                        entries: unmappedEntries.map(([name, value]) => ({\n                            key: php.TypeLiteral.string(name),\n                            value: php.TypeLiteral.string(String(value))\n                        }))\n                    })\n                }\n            ]\n        });\n    }\n\n    private getConstructorArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): NamedArgument[] {\n        const authArgs: NamedArgument[] = [];\n        if (endpoint.auth != null) {\n            if (snippet.auth != null) {\n                authArgs.push(...this.getConstructorAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n            } else {\n                // Provide default auth values for endpoints that require authentication\n                if (endpoint.auth.type === \"inferred\") {\n                    // For inferred auth, provide default test values\n                    const defaultInferredAuthValues: FernIr.dynamic.InferredAuthValues = {\n                        values: undefined\n                    };\n                    authArgs.push(\n                        ...this.getConstructorInferredAuthArgs({\n                            auth: endpoint.auth,\n                            values: defaultInferredAuthValues\n                        })\n                    );\n                } else {\n                    this.context.errors.add({\n                        severity: Severity.Warning,\n                        message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n                    });\n                }\n            }\n        }\n\n        const hasMultiUrlEnvironments = this.context.ir.environments?.environments.type === \"multipleBaseUrls\";\n        const environmentArg = this.getConstructorEnvironmentArg({\n            environment: snippet.environment,\n            hasMultiUrlEnvironments\n        });\n\n        const optionArgs: php.ConstructorField[] = [];\n\n        if (!hasMultiUrlEnvironments) {\n            const baseUrlArgs = this.getConstructorBaseUrlArgs({\n                baseUrl: snippet.baseURL,\n                environment: snippet.environment\n            });\n            if (baseUrlArgs.length > 0) {\n                optionArgs.push(...baseUrlArgs);\n            }\n        }\n\n        this.context.errors.scope(Scope.Headers);\n        if (this.context.ir.headers != null && snippet.headers != null) {\n            optionArgs.push(\n                ...this.getConstructorHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n            );\n        }\n        this.context.errors.unscope();\n\n        const args: NamedArgument[] = [...authArgs];\n\n        if (environmentArg != null) {\n            args.push(environmentArg);\n        }\n\n        if (optionArgs.length > 0) {\n            args.push({\n                name: \"options\",\n                assignment: php.TypeLiteral.map({\n                    entries: optionArgs.map((arg) => ({\n                        key: php.TypeLiteral.string(arg.name),\n                        value: arg.value\n                    }))\n                })\n            });\n        }\n\n        return args;\n    }\n\n    private getConstructorAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): NamedArgument[] {\n        if (values.type !== auth.type) {\n            this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n            return [];\n        }\n        switch (auth.type) {\n            case \"basic\":\n                return values.type === \"basic\" ? this.getConstructorBasicAuthArgs({ auth, values }) : [];\n            case \"bearer\":\n                return values.type === \"bearer\" ? this.getConstructorBearerAuthArgs({ auth, values }) : [];\n            case \"header\":\n                return values.type === \"header\" ? this.getConstructorHeaderAuthArgs({ auth, values }) : [];\n            case \"oauth\":\n                return values.type === \"oauth\" ? this.getConstructorOAuthArgs({ auth, values }) : [];\n            case \"inferred\":\n                return values.type === \"inferred\" ? this.getConstructorInferredAuthArgs({ auth, values }) : [];\n            default:\n                assertNever(auth);\n        }\n    }\n\n    private addError(message: string): void {\n        this.context.errors.add({ severity: Severity.Critical, message });\n    }\n\n    private addWarning(message: string): void {\n        this.context.errors.add({ severity: Severity.Warning, message });\n    }\n\n    private getConstructorBasicAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BasicAuth;\n        values: FernIr.dynamic.BasicAuthValues;\n    }): NamedArgument[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.username),\n                assignment: php.TypeLiteral.string(values.username)\n            },\n            {\n                name: this.context.getPropertyName(auth.password),\n                assignment: php.TypeLiteral.string(values.password)\n            }\n        ];\n    }\n\n    private getConstructorEnvironmentArg({\n        environment,\n        hasMultiUrlEnvironments\n    }: {\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n        hasMultiUrlEnvironments: boolean;\n    }): NamedArgument | undefined {\n        if (!hasMultiUrlEnvironments) {\n            return undefined;\n        }\n\n        const environmentClassRef = this.context.getEnvironmentsClassReference();\n\n        if (environment != null) {\n            if (this.context.isSingleEnvironmentID(environment)) {\n                const environmentName = this.context.resolveEnvironmentName(environment);\n                if (environmentName == null) {\n                    this.addWarning(`Environment \"${environment}\" was not found`);\n                    return undefined;\n                }\n                const className = this.context.getClassName(environmentName);\n                return {\n                    name: \"environment\",\n                    assignment: php.TypeLiteral.reference(\n                        php.codeblock((writer) => {\n                            writer.writeNode(environmentClassRef);\n                            writer.write(`::`);\n                            writer.write(className);\n                            writer.write(`()`);\n                        })\n                    )\n                };\n            }\n\n            if (this.context.isMultiEnvironmentValues(environment)) {\n                const result = this.resolveMultiEnvironmentName(environment);\n                if (result == null) {\n                    this.addWarning(\"Invalid multi url environment\");\n                    return undefined;\n                }\n                if (result.type === \"named\") {\n                    return {\n                        name: \"environment\",\n                        assignment: php.TypeLiteral.reference(\n                            php.codeblock((writer) => {\n                                writer.writeNode(environmentClassRef);\n                                writer.write(`::`);\n                                writer.write(result.name);\n                                writer.write(`()`);\n                            })\n                        )\n                    };\n                } else {\n                    return {\n                        name: \"environment\",\n                        assignment: php.TypeLiteral.reference(\n                            php.codeblock((writer) => {\n                                writer.writeNode(environmentClassRef);\n                                writer.write(`::custom(`);\n                                const entries = Object.entries(result.urls);\n                                entries.forEach(([paramName, url], index) => {\n                                    writer.write(`${paramName}: '${url}'`);\n                                    if (index < entries.length - 1) {\n                                        writer.write(`, `);\n                                    }\n                                });\n                                writer.write(`)`);\n                            })\n                        )\n                    };\n                }\n            }\n        }\n\n        const defaultName = this.getDefaultEnvironmentName();\n        if (defaultName == null) {\n            return undefined;\n        }\n\n        return {\n            name: \"environment\",\n            assignment: php.TypeLiteral.reference(\n                php.codeblock((writer) => {\n                    writer.writeNode(environmentClassRef);\n                    writer.write(`::`);\n                    writer.write(defaultName);\n                    writer.write(`()`);\n                })\n            )\n        };\n    }\n\n    private getDefaultEnvironmentName(): string | undefined {\n        if (this.context.ir.environments?.environments.type !== \"multipleBaseUrls\") {\n            return undefined;\n        }\n\n        const environmentsConfig = this.context.ir.environments.environments;\n        if (environmentsConfig.type !== \"multipleBaseUrls\") {\n            return undefined;\n        }\n\n        const environments = environmentsConfig.environments;\n        if (environments.length === 0) {\n            return undefined;\n        }\n\n        for (const env of environments) {\n            const className = this.context.getClassName(env.name);\n            if (className === \"Production\") {\n                return className;\n            }\n        }\n\n        const firstEnv = environments[0];\n        if (firstEnv == null) {\n            return undefined;\n        }\n        return this.context.getClassName(firstEnv.name);\n    }\n\n    private resolveMultiEnvironmentName(\n        environment: FernIr.dynamic.MultipleEnvironmentUrlValues\n    ): { type: \"named\"; name: string } | { type: \"custom\"; urls: Record<string, string> } | undefined {\n        const baseUrlIds = Object.keys(environment);\n        if (baseUrlIds.length === 0) {\n            return undefined;\n        }\n\n        // Validate that all required base URLs are provided\n        if (!this.context.validateMultiEnvironmentUrlValues(environment)) {\n            return undefined;\n        }\n\n        const firstBaseUrlId = baseUrlIds[0];\n        if (firstBaseUrlId == null) {\n            return undefined;\n        }\n\n        const firstBaseUrlValue = environment[firstBaseUrlId];\n        if (firstBaseUrlValue == null) {\n            return undefined;\n        }\n\n        // Check if the first value is a valid environment ID (not just any string)\n        const firstEnvironmentName = this.context.resolveEnvironmentName(firstBaseUrlValue);\n        if (firstEnvironmentName != null) {\n            // Check if all values point to the same environment\n            const allSameEnvironment = baseUrlIds.every((baseUrlId) => {\n                const value = environment[baseUrlId];\n                if (value == null) {\n                    return false;\n                }\n                const envName = this.context.resolveEnvironmentName(value);\n                return envName != null && value === firstBaseUrlValue;\n            });\n\n            if (allSameEnvironment) {\n                return { type: \"named\", name: this.context.getClassName(firstEnvironmentName) };\n            }\n        }\n\n        // Treat all values as custom URLs\n        const urls: Record<string, string> = {};\n        for (const baseUrlId of baseUrlIds) {\n            const value = environment[baseUrlId];\n            if (value == null) {\n                continue;\n            }\n            const paramName = this.getBaseUrlPropertyName(baseUrlId);\n            urls[paramName] = value;\n        }\n\n        if (Object.keys(urls).length > 0) {\n            return { type: \"custom\", urls };\n        }\n\n        return undefined;\n    }\n\n    private getBaseUrlPropertyName(baseUrlId: string): string {\n        if (this.context.ir.environments?.environments.type !== \"multipleBaseUrls\") {\n            return baseUrlId;\n        }\n\n        const environmentsConfig = this.context.ir.environments.environments;\n        if (environmentsConfig.type !== \"multipleBaseUrls\") {\n            return baseUrlId;\n        }\n\n        const baseUrl = environmentsConfig.baseUrls.find((url) => url.id === baseUrlId);\n        if (baseUrl == null) {\n            return baseUrlId;\n        }\n\n        return baseUrl.name.camelCase.safeName;\n    }\n\n    private getConstructorBaseUrlArgs({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): php.ConstructorField[] {\n        const baseUrlArg = this.getBaseUrlArg({ baseUrl, environment });\n        if (php.TypeLiteral.isNop(baseUrlArg)) {\n            return [];\n        }\n        return [\n            {\n                name: \"baseUrl\",\n                value: baseUrlArg\n            }\n        ];\n    }\n\n    private getBaseUrlArg({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): php.TypeLiteral {\n        if (baseUrl != null && environment != null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Cannot specify both baseUrl and environment options\"\n            });\n            return php.TypeLiteral.nop();\n        }\n        if (baseUrl != null) {\n            return php.TypeLiteral.string(baseUrl);\n        }\n        if (environment != null) {\n            if (this.context.isSingleEnvironmentID(environment)) {\n                const classReference = this.context.getEnvironmentClassAccessFromID(environment);\n                if (classReference == null) {\n                    this.context.errors.add({\n                        severity: Severity.Warning,\n                        message: `Environment ${JSON.stringify(environment)} was not found`\n                    });\n                    return php.TypeLiteral.nop();\n                }\n                return php.TypeLiteral.reference(\n                    php.codeblock((writer) => {\n                        writer.writeNode(classReference);\n                        writer.write(\"->value\");\n                    })\n                );\n            }\n            if (this.context.ir.environments?.environments.type === \"multipleBaseUrls\") {\n                return php.TypeLiteral.nop();\n            }\n        }\n        return php.TypeLiteral.nop();\n    }\n\n    private getConstructorBearerAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BearerAuth;\n        values: FernIr.dynamic.BearerAuthValues;\n    }): NamedArgument[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.token),\n                assignment: php.TypeLiteral.string(values.token)\n            }\n        ];\n    }\n\n    private getConstructorHeaderAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.HeaderAuth;\n        values: FernIr.dynamic.HeaderAuthValues;\n    }): NamedArgument[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.header.name.name),\n                assignment: this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: auth.header.typeReference,\n                    value: values.value\n                })\n            }\n        ];\n    }\n\n    private getConstructorOAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.OAuth;\n        values: FernIr.dynamic.OAuthValues;\n    }): NamedArgument[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.clientId),\n                assignment: php.TypeLiteral.string(values.clientId)\n            },\n            {\n                name: this.context.getPropertyName(auth.clientSecret),\n                assignment: php.TypeLiteral.string(values.clientSecret)\n            }\n        ];\n    }\n\n    private getConstructorInferredAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.InferredAuth;\n        values: FernIr.dynamic.InferredAuthValues;\n    }): NamedArgument[] {\n        // For now, return empty array to avoid the RangeError issue\n        // The inferred auth parameters should be extracted from the normal IR,\n        // not the dynamic IR which doesn't contain the detailed endpoint information\n        return [];\n    }\n\n    private getConstructorHeaderArgs({\n        headers,\n        values\n    }: {\n        headers: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): php.ConstructorField[] {\n        const args: php.ConstructorField[] = [];\n        for (const header of headers) {\n            const value = values[header.name.wireValue];\n            const arg = this.getConstructorHeaderArg({ header, value });\n            if (arg != null) {\n                args.push({\n                    name: this.context.getPropertyName(header.name.name),\n                    value: arg\n                });\n            }\n        }\n        return args;\n    }\n\n    private getConstructorHeaderArg({\n        header,\n        value\n    }: {\n        header: FernIr.dynamic.NamedParameter;\n        value: unknown;\n    }): php.TypeLiteral | undefined {\n        const typeLiteral = this.context.dynamicTypeLiteralMapper.convert({\n            typeReference: header.typeReference,\n            value\n        });\n        if (php.TypeLiteral.isNop(typeLiteral)) {\n            // Literal header values (e.g. \"X-API-Version\") should not be included in the\n            // client constructor.\n            return undefined;\n        }\n        return typeLiteral;\n    }\n\n    private getMethodArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): php.TypeLiteral[] {\n        switch (endpoint.request.type) {\n            case \"inlined\":\n                return this.getMethodArgsForInlinedRequest({ request: endpoint.request, snippet });\n            case \"body\":\n                return this.getMethodArgsForBodyRequest({ request: endpoint.request, snippet });\n            default:\n                assertNever(endpoint.request);\n        }\n    }\n\n    private getMethodArgsForBodyRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.BodyRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): php.TypeLiteral[] {\n        const args: php.TypeLiteral[] = [];\n\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n        if (pathParameters.length > 0) {\n            args.push(\n                ...this.getPathParameters({ namedParameters: pathParameters, snippet }).map((field) => field.value)\n            );\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        if (request.body != null) {\n            args.push(this.getBodyRequestArg({ body: request.body, value: snippet.requestBody }));\n        }\n        this.context.errors.unscope();\n\n        return args;\n    }\n\n    private getBodyRequestArg({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): php.TypeLiteral {\n        switch (body.type) {\n            case \"bytes\": {\n                return this.getBytesBodyRequestArg({ value });\n            }\n            case \"typeReference\":\n                return this.context.dynamicTypeLiteralMapper.convert({ typeReference: body.value, value });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getBytesBodyRequestArg({ value }: { value: unknown }): php.TypeLiteral {\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: \"The PHP SDK doesn't support bytes requests yet\"\n        });\n        return php.TypeLiteral.nop();\n    }\n\n    private getMethodArgsForInlinedRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): php.TypeLiteral[] {\n        const args: php.TypeLiteral[] = [];\n\n        const inlinePathParameters = this.context.customConfig?.inlinePathParameters ?? false;\n\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameterFields: php.ConstructorField[] = [];\n        const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n        if (pathParameters.length > 0) {\n            pathParameterFields.push(...this.getPathParameters({ namedParameters: pathParameters, snippet }));\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const filePropertyInfo = this.getFilePropertyInfo({ request, snippet });\n        this.context.errors.unscope();\n\n        if (!this.context.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n            args.push(...pathParameterFields.map((field) => field.value));\n        }\n\n        if (\n            this.context.needsRequestParameter({\n                request,\n                inlinePathParameters,\n                inlineFileProperties: true // The PHP SDK requires inlineFileProperties.\n            })\n        ) {\n            args.push(\n                this.getInlinedRequestArg({\n                    request,\n                    snippet,\n                    pathParameterFields: this.context.includePathParametersInWrappedRequest({\n                        request,\n                        inlinePathParameters\n                    })\n                        ? pathParameterFields\n                        : [],\n                    filePropertyInfo\n                })\n            );\n        }\n        return args;\n    }\n\n    private getFilePropertyInfo({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): FilePropertyInfo {\n        if (request.body == null || !this.context.isFileUploadRequestBody(request.body)) {\n            return {\n                fileFields: [],\n                bodyPropertyFields: []\n            };\n        }\n        return this.context.filePropertyMapper.getFilePropertyInfo({\n            body: request.body,\n            value: snippet.requestBody\n        });\n    }\n\n    private getInlinedRequestArg({\n        request,\n        snippet,\n        pathParameterFields,\n        filePropertyInfo\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        pathParameterFields: php.ConstructorField[];\n        filePropertyInfo: FilePropertyInfo;\n    }): php.TypeLiteral {\n        this.context.errors.scope(Scope.QueryParameters);\n        const queryParameters = this.context.associateQueryParametersByWireValue({\n            parameters: request.queryParameters ?? [],\n            values: snippet.queryParameters ?? {}\n        });\n        const queryParameterFields = queryParameters.map((queryParameter) => ({\n            name: this.context.getPropertyName(queryParameter.name.name),\n            value: this.context.dynamicTypeLiteralMapper.convert(queryParameter)\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.Headers);\n        const headers = this.context.associateByWireValue({\n            parameters: request.headers ?? [],\n            values: snippet.headers ?? {}\n        });\n        const headerFields = headers.map((header) => ({\n            name: this.context.getPropertyName(header.name.name),\n            value: this.context.dynamicTypeLiteralMapper.convert(header)\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const requestBodyFields =\n            request.body != null\n                ? this.getInlinedRequestBodyConstructorFields({\n                      body: request.body,\n                      value: snippet.requestBody,\n                      filePropertyInfo\n                  })\n                : [];\n        this.context.errors.unscope();\n\n        return php.TypeLiteral.class_({\n            reference: php.classReference({\n                name: this.context.getClassName(request.declaration.name),\n                namespace: this.context.getRequestNamespace(request.declaration.fernFilepath)\n            }),\n            fields: [...pathParameterFields, ...queryParameterFields, ...headerFields, ...requestBodyFields]\n        });\n    }\n\n    private getInlinedRequestBodyConstructorFields({\n        body,\n        value,\n        filePropertyInfo\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        value: unknown;\n        filePropertyInfo: FilePropertyInfo;\n    }): php.ConstructorField[] {\n        switch (body.type) {\n            case \"properties\":\n                return this.getInlinedRequestBodyPropertyConstructorFields({ parameters: body.value, value });\n            case \"referenced\":\n                return [this.getReferencedRequestBodyPropertyConstructorField({ body, value })];\n            case \"fileUpload\":\n                return this.getFileUploadRequestBodyConstructorFields({ filePropertyInfo });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getFileUploadRequestBodyConstructorFields({\n        filePropertyInfo\n    }: {\n        filePropertyInfo: FilePropertyInfo;\n    }): php.ConstructorField[] {\n        return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n    }\n\n    private getReferencedRequestBodyPropertyConstructorField({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBody;\n        value: unknown;\n    }): php.ConstructorField {\n        return {\n            name: this.context.getPropertyName(body.bodyKey),\n            value: this.getReferencedRequestBodyPropertyTypeLiteral({ body: body.bodyType, value })\n        };\n    }\n\n    private getReferencedRequestBodyPropertyTypeLiteral({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): php.TypeLiteral {\n        switch (body.type) {\n            case \"bytes\":\n                return this.getBytesBodyRequestArg({ value });\n            case \"typeReference\":\n                return this.context.dynamicTypeLiteralMapper.convert({ typeReference: body.value, value });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getInlinedRequestBodyPropertyConstructorFields({\n        parameters,\n        value\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        value: unknown;\n    }): php.ConstructorField[] {\n        const fields: php.ConstructorField[] = [];\n\n        const bodyProperties = this.context.associateByWireValue({\n            parameters,\n            values: this.context.getRecord(value) ?? {}\n        });\n        for (const parameter of bodyProperties) {\n            fields.push({\n                name: this.context.getPropertyName(parameter.name.name),\n                value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n            });\n        }\n\n        return fields;\n    }\n\n    private getPathParameters({\n        namedParameters,\n        snippet\n    }: {\n        namedParameters: FernIr.dynamic.NamedParameter[];\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): php.ConstructorField[] {\n        const args: php.ConstructorField[] = [];\n\n        const pathParameters = this.context.associateByWireValue({\n            parameters: namedParameters,\n            values: snippet.pathParameters ?? {}\n        });\n        for (const parameter of pathParameters) {\n            args.push({\n                name: this.context.getPropertyName(parameter.name.name),\n                value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n            });\n        }\n\n        return args;\n    }\n\n    private getMethod({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n        if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n            return `${endpoint.declaration.fernFilepath.allParts\n                .map((val) => this.context.getPropertyName(val))\n                .join(\"->\")}->${this.context.getMethodName(endpoint.declaration.name)}`;\n        }\n        return this.context.getMethodName(endpoint.declaration.name);\n    }\n\n    private getRootClientClassInstantiation(arguments_: NamedArgument[]): php.ClassInstantiation {\n        return php.instantiateClass({\n            classReference: php.classReference({\n                name: this.context.getRootClientClassName(),\n                namespace: this.context.rootNamespace\n            }),\n            arguments_,\n            multiline: true\n        });\n    }\n}\n","export const __dirname = \"/\";\n","function unimplemented(name) {\r\n  throw new Error('Node.js process ' + name + ' is not supported by JSPM core outside of Node.js');\r\n}\r\n\r\nvar queue = [];\r\nvar draining = false;\r\nvar currentQueue;\r\nvar queueIndex = -1;\r\n\r\nfunction cleanUpNextTick() {\r\n  if (!draining || !currentQueue)\r\n    return;\r\n  draining = false;\r\n  if (currentQueue.length) {\r\n    queue = currentQueue.concat(queue);\r\n  }\r\n  else {\r\n    queueIndex = -1;\r\n  }\r\n  if (queue.length)\r\n    drainQueue();\r\n}\r\n\r\nfunction drainQueue() {\r\n  if (draining)\r\n    return;\r\n  var timeout = setTimeout(cleanUpNextTick, 0);\r\n  draining = true;\r\n\r\n  var len = queue.length;\r\n  while(len) {\r\n    currentQueue = queue;\r\n    queue = [];\r\n    while (++queueIndex < len) {\r\n      if (currentQueue)\r\n        currentQueue[queueIndex].run();\r\n    }\r\n    queueIndex = -1;\r\n    len = queue.length;\r\n  }\r\n  currentQueue = null;\r\n  draining = false;\r\n  clearTimeout(timeout);\r\n}\r\n\r\nfunction nextTick (fun) {\r\n  var args = new Array(arguments.length - 1);\r\n  if (arguments.length > 1) {\r\n    for (var i = 1; i < arguments.length; i++)\r\n      args[i - 1] = arguments[i];\r\n  }\r\n  queue.push(new Item(fun, args));\r\n  if (queue.length === 1 && !draining)\r\n    setTimeout(drainQueue, 0);\r\n}\r\n// v8 likes predictible objects\r\nfunction Item(fun, array) {\r\n  this.fun = fun;\r\n  this.array = array;\r\n}\r\nItem.prototype.run = function () {\r\n  this.fun.apply(null, this.array);\r\n};\r\n\r\nvar title = 'browser';\r\nvar arch = 'x64';\r\nvar platform = 'browser';\r\nvar env = {\r\n  PATH: '/usr/bin',\r\n  LANG: typeof navigator !== 'undefined' ? navigator.language + '.UTF-8' : undefined,\r\n  PWD: '/',\r\n  HOME: '/home',\r\n  TMP: '/tmp',\r\n};\r\nvar argv = ['/usr/bin/node'];\r\nvar execArgv = [];\r\nvar version = 'v16.8.0';\r\nvar versions = {};\r\n\r\nvar emitWarning = function(message, type) {\r\n  console.warn((type ? (type + ': ') : '') + message);\r\n};\r\n\r\nvar binding = function(name) { unimplemented('binding'); };\r\n\r\nvar umask = function(mask) { return 0; };\r\n\r\nvar cwd = function() { return '/'; };\r\nvar chdir = function(dir) {};\r\n\r\nvar release = {\r\n  name: 'node',\r\n  sourceUrl: '',\r\n  headersUrl: '',\r\n  libUrl: '',\r\n};\r\n\r\nfunction noop() {}\r\n\r\nvar browser = true;\r\nvar _rawDebug = noop;\r\nvar moduleLoadList = [];\r\nfunction _linkedBinding(name) { unimplemented('_linkedBinding'); }\r\nvar domain = {};\r\nvar _exiting = false;\r\nvar config = {};\r\nfunction dlopen(name) { unimplemented('dlopen'); }\r\nfunction _getActiveRequests() { return []; }\r\nfunction _getActiveHandles() { return []; }\r\nvar reallyExit = noop;\r\nvar _kill = noop;\r\nvar cpuUsage = function() { return {}; };\r\nvar resourceUsage = cpuUsage;\r\nvar memoryUsage = cpuUsage;\r\nvar kill = noop;\r\nvar exit = noop;\r\nvar openStdin = noop;\r\nvar allowedNodeEnvironmentFlags = {};\r\nfunction assert(condition, message) {\r\n  if (!condition) throw new Error(message || 'assertion error');\r\n}\r\nvar features = {\r\n  inspector: false,\r\n  debug: false,\r\n  uv: false,\r\n  ipv6: false,\r\n  tls_alpn: false,\r\n  tls_sni: false,\r\n  tls_ocsp: false,\r\n  tls: false,\r\n  cached_builtins: true,\r\n};\r\nvar _fatalExceptions = noop;\r\nvar setUncaughtExceptionCaptureCallback = noop;\r\nfunction hasUncaughtExceptionCaptureCallback() { return false; }var _tickCallback = noop;\r\nvar _debugProcess = noop;\r\nvar _debugEnd = noop;\r\nvar _startProfilerIdleNotifier = noop;\r\nvar _stopProfilerIdleNotifier = noop;\r\nvar stdout = undefined;\r\nvar stderr = undefined;\r\nvar stdin = undefined;\r\nvar abort = noop;\r\nvar pid = 2;\r\nvar ppid = 1;\r\nvar execPath = '/bin/usr/node';\r\nvar debugPort = 9229;\r\nvar argv0 = 'node';\r\nvar _preload_modules = [];\r\nvar setSourceMapsEnabled = noop;\r\n\r\nvar _performance = {\r\n  now: typeof performance !== 'undefined' ? performance.now.bind(performance) : undefined,\r\n  timing: typeof performance !== 'undefined' ? performance.timing : undefined,\r\n};\r\nif (_performance.now === undefined) {\r\n  var nowOffset = Date.now();\r\n\r\n  if (_performance.timing && _performance.timing.navigationStart) {\r\n    nowOffset = _performance.timing.navigationStart;\r\n  }\r\n  _performance.now = () => Date.now() - nowOffset;\r\n}\r\n\r\nfunction uptime() {\r\n  return _performance.now() / 1000;\r\n}\r\n\r\nvar nanoPerSec = 1000000000;\r\nfunction hrtime(previousTimestamp) {\r\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\r\n  var clocktime = _performance.now() * 1e-3;\r\n  var seconds = Math.floor(clocktime) + baseNow;\r\n  var nanoseconds = Math.floor((clocktime % 1) * 1e9);\r\n  if (previousTimestamp) {\r\n    seconds = seconds - previousTimestamp[0];\r\n    nanoseconds = nanoseconds - previousTimestamp[1];\r\n    if (nanoseconds < 0) {\r\n      seconds--;\r\n      nanoseconds += nanoPerSec;\r\n    }\r\n  }\r\n  return [seconds, nanoseconds];\r\n}hrtime.bigint = function(time) {\r\n  var diff = hrtime(time);\r\n  if (typeof BigInt === 'undefined') {\r\n    return diff[0] * nanoPerSec + diff[1];\r\n  }\r\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\r\n};\r\n\r\nvar _maxListeners = 10;\r\nvar _events = {};\r\nvar _eventsCount = 0;\r\nfunction on () { return process }var addListener = on;\r\nvar once = on;\r\nvar off = on;\r\nvar removeListener = on;\r\nvar removeAllListeners = on;\r\nvar emit = noop;\r\nvar prependListener = on;\r\nvar prependOnceListener = on;\r\nfunction listeners (name) { return []; }\r\nvar process = {\r\n  version,\r\n  versions,\r\n  arch,\r\n  platform,\r\n  browser,\r\n  release,\r\n  _rawDebug,\r\n  moduleLoadList,\r\n  binding,\r\n  _linkedBinding,\r\n  _events,\r\n  _eventsCount,\r\n  _maxListeners,\r\n  on,\r\n  addListener,\r\n  once,\r\n  off,\r\n  removeListener,\r\n  removeAllListeners,\r\n  emit,\r\n  prependListener,\r\n  prependOnceListener,\r\n  listeners,\r\n  domain,\r\n  _exiting,\r\n  config,\r\n  dlopen,\r\n  uptime,\r\n  _getActiveRequests,\r\n  _getActiveHandles,\r\n  reallyExit,\r\n  _kill,\r\n  cpuUsage,\r\n  resourceUsage,\r\n  memoryUsage,\r\n  kill,\r\n  exit,\r\n  openStdin,\r\n  allowedNodeEnvironmentFlags,\r\n  assert,\r\n  features,\r\n  _fatalExceptions,\r\n  setUncaughtExceptionCaptureCallback,\r\n  hasUncaughtExceptionCaptureCallback,\r\n  emitWarning,\r\n  nextTick,\r\n  _tickCallback,\r\n  _debugProcess,\r\n  _debugEnd,\r\n  _startProfilerIdleNotifier,\r\n  _stopProfilerIdleNotifier,\r\n  stdout,\r\n  stdin,\r\n  stderr,\r\n  abort,\r\n  umask,\r\n  chdir,\r\n  cwd,\r\n  env,\r\n  title,\r\n  argv,\r\n  execArgv,\r\n  pid,\r\n  ppid,\r\n  execPath,\r\n  debugPort,\r\n  hrtime,\r\n  argv0,\r\n  _preload_modules,\r\n  setSourceMapsEnabled,\r\n};\n\nexport { _debugEnd, _debugProcess, _events, _eventsCount, _exiting, _fatalExceptions, _getActiveHandles, _getActiveRequests, _kill, _linkedBinding, _maxListeners, _preload_modules, _rawDebug, _startProfilerIdleNotifier, _stopProfilerIdleNotifier, _tickCallback, abort, addListener, allowedNodeEnvironmentFlags, arch, argv, argv0, assert, binding, browser, chdir, config, cpuUsage, cwd, debugPort, process as default, dlopen, domain, emit, emitWarning, env, execArgv, execPath, exit, features, hasUncaughtExceptionCaptureCallback, hrtime, kill, listeners, memoryUsage, moduleLoadList, nextTick, off, on, once, openStdin, pid, platform, ppid, prependListener, prependOnceListener, reallyExit, release, removeAllListeners, removeListener, resourceUsage, setSourceMapsEnabled, setUncaughtExceptionCaptureCallback, stderr, stdin, stdout, title, umask, uptime, version, versions };\n","export * as process from \"process\";\n","var exports$2 = {},\n  _dewExec$2 = false;\nfunction dew$2() {\n  if (_dewExec$2) return exports$2;\n  _dewExec$2 = true;\n  exports$2.byteLength = byteLength;\n  exports$2.toByteArray = toByteArray;\n  exports$2.fromByteArray = fromByteArray;\n  var lookup = [];\n  var revLookup = [];\n  var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i = 0, len = code.length; i < len; ++i) {\n    lookup[i] = code[i];\n    revLookup[code.charCodeAt(i)] = i;\n  }\n\n  // Support decoding URL-safe base64 strings, as Node.js does.\n  // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n  function getLens(b64) {\n    var len = b64.length;\n    if (len % 4 > 0) {\n      throw new Error(\"Invalid string. Length must be a multiple of 4\");\n    }\n\n    // Trim off extra bytes after placeholder bytes are found\n    // See: https://github.com/beatgammit/base64-js/issues/42\n    var validLen = b64.indexOf(\"=\");\n    if (validLen === -1) validLen = len;\n    var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n    return [validLen, placeHoldersLen];\n  }\n\n  // base64 is 4/3 + up to two characters of the original data\n  function byteLength(b64) {\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function _byteLength(b64, validLen, placeHoldersLen) {\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function toByteArray(b64) {\n    var tmp;\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n    var curByte = 0;\n\n    // if there are placeholders, only get up to the last complete 4 chars\n    var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n    var i;\n    for (i = 0; i < len; i += 4) {\n      tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n      arr[curByte++] = tmp >> 16 & 255;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 2) {\n      tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 1) {\n      tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    return arr;\n  }\n  function tripletToBase64(num) {\n    return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n  }\n  function encodeChunk(uint8, start, end) {\n    var tmp;\n    var output = [];\n    for (var i = start; i < end; i += 3) {\n      tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n      output.push(tripletToBase64(tmp));\n    }\n    return output.join(\"\");\n  }\n  function fromByteArray(uint8) {\n    var tmp;\n    var len = uint8.length;\n    var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n    var parts = [];\n    var maxChunkLength = 16383; // must be multiple of 3\n\n    // go through the array every three bytes, we'll deal with trailing stuff later\n    for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n      parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n    }\n\n    // pad the end with zeros, but make sure to not forget the extra bytes\n    if (extraBytes === 1) {\n      tmp = uint8[len - 1];\n      parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n    } else if (extraBytes === 2) {\n      tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n      parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n    }\n    return parts.join(\"\");\n  }\n  return exports$2;\n}\n\nvar exports$1 = {},\n  _dewExec$1 = false;\nfunction dew$1() {\n  if (_dewExec$1) return exports$1;\n  _dewExec$1 = true;\n  /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n  exports$1.read = function (buffer, offset, isLE, mLen, nBytes) {\n    var e, m;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i = isLE ? nBytes - 1 : 0;\n    var d = isLE ? -1 : 1;\n    var s = buffer[offset + i];\n    i += d;\n    e = s & (1 << -nBits) - 1;\n    s >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    m = e & (1 << -nBits) - 1;\n    e >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    if (e === 0) {\n      e = 1 - eBias;\n    } else if (e === eMax) {\n      return m ? NaN : (s ? -1 : 1) * Infinity;\n    } else {\n      m = m + Math.pow(2, mLen);\n      e = e - eBias;\n    }\n    return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n  };\n  exports$1.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n    var e, m, c;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n    var i = isLE ? 0 : nBytes - 1;\n    var d = isLE ? 1 : -1;\n    var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n      m = isNaN(value) ? 1 : 0;\n      e = eMax;\n    } else {\n      e = Math.floor(Math.log(value) / Math.LN2);\n      if (value * (c = Math.pow(2, -e)) < 1) {\n        e--;\n        c *= 2;\n      }\n      if (e + eBias >= 1) {\n        value += rt / c;\n      } else {\n        value += rt * Math.pow(2, 1 - eBias);\n      }\n      if (value * c >= 2) {\n        e++;\n        c /= 2;\n      }\n      if (e + eBias >= eMax) {\n        m = 0;\n        e = eMax;\n      } else if (e + eBias >= 1) {\n        m = (value * c - 1) * Math.pow(2, mLen);\n        e = e + eBias;\n      } else {\n        m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n        e = 0;\n      }\n    }\n    for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n    e = e << mLen | m;\n    eLen += mLen;\n    for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n    buffer[offset + i - d] |= s * 128;\n  };\n  return exports$1;\n}\n\nvar exports = {},\n  _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports;\n  _dewExec = true;\n  const base64 = dew$2();\n  const ieee754 = dew$1();\n  const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" // eslint-disable-line dot-notation\n  ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n  : null;\n  exports.Buffer = Buffer;\n  exports.SlowBuffer = SlowBuffer;\n  exports.INSPECT_MAX_BYTES = 50;\n  const K_MAX_LENGTH = 2147483647;\n  exports.kMaxLength = K_MAX_LENGTH;\n\n  /**\n   * If `Buffer.TYPED_ARRAY_SUPPORT`:\n   *   === true    Use Uint8Array implementation (fastest)\n   *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n   *               implementation (most compatible, even IE6)\n   *\n   * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n   * Opera 11.6+, iOS 4.2+.\n   *\n   * We report that the browser does not support typed arrays if the are not subclassable\n   * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n   * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n   * for __proto__ and has a buggy typed array implementation.\n   */\n  Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n  if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n  }\n  function typedArraySupport() {\n    // Can typed array instances can be augmented?\n    try {\n      const arr = new Uint8Array(1);\n      const proto = {\n        foo: function () {\n          return 42;\n        }\n      };\n      Object.setPrototypeOf(proto, Uint8Array.prototype);\n      Object.setPrototypeOf(arr, proto);\n      return arr.foo() === 42;\n    } catch (e) {\n      return false;\n    }\n  }\n  Object.defineProperty(Buffer.prototype, \"parent\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.buffer;\n    }\n  });\n  Object.defineProperty(Buffer.prototype, \"offset\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.byteOffset;\n    }\n  });\n  function createBuffer(length) {\n    if (length > K_MAX_LENGTH) {\n      throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n    // Return an augmented `Uint8Array` instance\n    const buf = new Uint8Array(length);\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n\n  /**\n   * The Buffer constructor returns instances of `Uint8Array` that have their\n   * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n   * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n   * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n   * returns a single octet.\n   *\n   * The `Uint8Array` prototype remains unmodified.\n   */\n\n  function Buffer(arg, encodingOrOffset, length) {\n    // Common case.\n    if (typeof arg === \"number\") {\n      if (typeof encodingOrOffset === \"string\") {\n        throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n      }\n      return allocUnsafe(arg);\n    }\n    return from(arg, encodingOrOffset, length);\n  }\n  Buffer.poolSize = 8192; // not used by this implementation\n\n  function from(value, encodingOrOffset, length) {\n    if (typeof value === \"string\") {\n      return fromString(value, encodingOrOffset);\n    }\n    if (ArrayBuffer.isView(value)) {\n      return fromArrayView(value);\n    }\n    if (value == null) {\n      throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n    }\n    if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof value === \"number\") {\n      throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n    }\n    const valueOf = value.valueOf && value.valueOf();\n    if (valueOf != null && valueOf !== value) {\n      return Buffer.from(valueOf, encodingOrOffset, length);\n    }\n    const b = fromObject(value);\n    if (b) return b;\n    if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n      return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n    }\n    throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n  }\n\n  /**\n   * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n   * if value is a number.\n   * Buffer.from(str[, encoding])\n   * Buffer.from(array)\n   * Buffer.from(buffer)\n   * Buffer.from(arrayBuffer[, byteOffset[, length]])\n   **/\n  Buffer.from = function (value, encodingOrOffset, length) {\n    return from(value, encodingOrOffset, length);\n  };\n\n  // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n  // https://github.com/feross/buffer/pull/148\n  Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n  Object.setPrototypeOf(Buffer, Uint8Array);\n  function assertSize(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n    } else if (size < 0) {\n      throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n  }\n  function alloc(size, fill, encoding) {\n    assertSize(size);\n    if (size <= 0) {\n      return createBuffer(size);\n    }\n    if (fill !== undefined) {\n      // Only pay attention to encoding if it's a string. This\n      // prevents accidentally sending in a number that would\n      // be interpreted as a start offset.\n      return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n    }\n    return createBuffer(size);\n  }\n\n  /**\n   * Creates a new filled Buffer instance.\n   * alloc(size[, fill[, encoding]])\n   **/\n  Buffer.alloc = function (size, fill, encoding) {\n    return alloc(size, fill, encoding);\n  };\n  function allocUnsafe(size) {\n    assertSize(size);\n    return createBuffer(size < 0 ? 0 : checked(size) | 0);\n  }\n\n  /**\n   * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n   * */\n  Buffer.allocUnsafe = function (size) {\n    return allocUnsafe(size);\n  };\n  /**\n   * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n   */\n  Buffer.allocUnsafeSlow = function (size) {\n    return allocUnsafe(size);\n  };\n  function fromString(string, encoding) {\n    if (typeof encoding !== \"string\" || encoding === \"\") {\n      encoding = \"utf8\";\n    }\n    if (!Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n    const length = byteLength(string, encoding) | 0;\n    let buf = createBuffer(length);\n    const actual = buf.write(string, encoding);\n    if (actual !== length) {\n      // Writing a hex string, for example, that contains invalid characters will\n      // cause everything after the first invalid character to be ignored. (e.g.\n      // 'abxxcd' will be treated as 'ab')\n      buf = buf.slice(0, actual);\n    }\n    return buf;\n  }\n  function fromArrayLike(array) {\n    const length = array.length < 0 ? 0 : checked(array.length) | 0;\n    const buf = createBuffer(length);\n    for (let i = 0; i < length; i += 1) {\n      buf[i] = array[i] & 255;\n    }\n    return buf;\n  }\n  function fromArrayView(arrayView) {\n    if (isInstance(arrayView, Uint8Array)) {\n      const copy = new Uint8Array(arrayView);\n      return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n    }\n    return fromArrayLike(arrayView);\n  }\n  function fromArrayBuffer(array, byteOffset, length) {\n    if (byteOffset < 0 || array.byteLength < byteOffset) {\n      throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n    }\n    if (array.byteLength < byteOffset + (length || 0)) {\n      throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n    }\n    let buf;\n    if (byteOffset === undefined && length === undefined) {\n      buf = new Uint8Array(array);\n    } else if (length === undefined) {\n      buf = new Uint8Array(array, byteOffset);\n    } else {\n      buf = new Uint8Array(array, byteOffset, length);\n    }\n\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function fromObject(obj) {\n    if (Buffer.isBuffer(obj)) {\n      const len = checked(obj.length) | 0;\n      const buf = createBuffer(len);\n      if (buf.length === 0) {\n        return buf;\n      }\n      obj.copy(buf, 0, 0, len);\n      return buf;\n    }\n    if (obj.length !== undefined) {\n      if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n        return createBuffer(0);\n      }\n      return fromArrayLike(obj);\n    }\n    if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n      return fromArrayLike(obj.data);\n    }\n  }\n  function checked(length) {\n    // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n    // length is NaN (which is otherwise coerced to zero.)\n    if (length >= K_MAX_LENGTH) {\n      throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n    }\n    return length | 0;\n  }\n  function SlowBuffer(length) {\n    if (+length != length) {\n      // eslint-disable-line eqeqeq\n      length = 0;\n    }\n    return Buffer.alloc(+length);\n  }\n  Buffer.isBuffer = function isBuffer(b) {\n    return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n  };\n  Buffer.compare = function compare(a, b) {\n    if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n    if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n    if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n      throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n    }\n    if (a === b) return 0;\n    let x = a.length;\n    let y = b.length;\n    for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n      if (a[i] !== b[i]) {\n        x = a[i];\n        y = b[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n  Buffer.isEncoding = function isEncoding(encoding) {\n    switch (String(encoding).toLowerCase()) {\n      case \"hex\":\n      case \"utf8\":\n      case \"utf-8\":\n      case \"ascii\":\n      case \"latin1\":\n      case \"binary\":\n      case \"base64\":\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return true;\n      default:\n        return false;\n    }\n  };\n  Buffer.concat = function concat(list, length) {\n    if (!Array.isArray(list)) {\n      throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n    }\n    if (list.length === 0) {\n      return Buffer.alloc(0);\n    }\n    let i;\n    if (length === undefined) {\n      length = 0;\n      for (i = 0; i < list.length; ++i) {\n        length += list[i].length;\n      }\n    }\n    const buffer = Buffer.allocUnsafe(length);\n    let pos = 0;\n    for (i = 0; i < list.length; ++i) {\n      let buf = list[i];\n      if (isInstance(buf, Uint8Array)) {\n        if (pos + buf.length > buffer.length) {\n          if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n          buf.copy(buffer, pos);\n        } else {\n          Uint8Array.prototype.set.call(buffer, buf, pos);\n        }\n      } else if (!Buffer.isBuffer(buf)) {\n        throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n      } else {\n        buf.copy(buffer, pos);\n      }\n      pos += buf.length;\n    }\n    return buffer;\n  };\n  function byteLength(string, encoding) {\n    if (Buffer.isBuffer(string)) {\n      return string.length;\n    }\n    if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n      return string.byteLength;\n    }\n    if (typeof string !== \"string\") {\n      throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n    }\n    const len = string.length;\n    const mustMatch = arguments.length > 2 && arguments[2] === true;\n    if (!mustMatch && len === 0) return 0;\n\n    // Use a for loop to avoid recursion\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return len;\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8ToBytes(string).length;\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return len * 2;\n        case \"hex\":\n          return len >>> 1;\n        case \"base64\":\n          return base64ToBytes(string).length;\n        default:\n          if (loweredCase) {\n            return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n          }\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.byteLength = byteLength;\n  function slowToString(encoding, start, end) {\n    let loweredCase = false;\n\n    // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n    // property of a typed array.\n\n    // This behaves neither like String nor Uint8Array in that we set start/end\n    // to their upper/lower bounds if the value passed is out of range.\n    // undefined is handled specially as per ECMA-262 6th Edition,\n    // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n    if (start === undefined || start < 0) {\n      start = 0;\n    }\n    // Return early if start > this.length. Done here to prevent potential uint32\n    // coercion fail below.\n    if (start > this.length) {\n      return \"\";\n    }\n    if (end === undefined || end > this.length) {\n      end = this.length;\n    }\n    if (end <= 0) {\n      return \"\";\n    }\n\n    // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n    end >>>= 0;\n    start >>>= 0;\n    if (end <= start) {\n      return \"\";\n    }\n    if (!encoding) encoding = \"utf8\";\n    while (true) {\n      switch (encoding) {\n        case \"hex\":\n          return hexSlice(this, start, end);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Slice(this, start, end);\n        case \"ascii\":\n          return asciiSlice(this, start, end);\n        case \"latin1\":\n        case \"binary\":\n          return latin1Slice(this, start, end);\n        case \"base64\":\n          return base64Slice(this, start, end);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return utf16leSlice(this, start, end);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (encoding + \"\").toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n\n  // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n  // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n  // reliably in a browserify context because there could be multiple different\n  // copies of the 'buffer' package in use. This method works even for Buffer\n  // instances that were created from another copy of the `buffer` package.\n  // See: https://github.com/feross/buffer/issues/154\n  Buffer.prototype._isBuffer = true;\n  function swap(b, n, m) {\n    const i = b[n];\n    b[n] = b[m];\n    b[m] = i;\n  }\n  Buffer.prototype.swap16 = function swap16() {\n    const len = this.length;\n    if (len % 2 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n    }\n    for (let i = 0; i < len; i += 2) {\n      swap(this, i, i + 1);\n    }\n    return this;\n  };\n  Buffer.prototype.swap32 = function swap32() {\n    const len = this.length;\n    if (len % 4 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n    }\n    for (let i = 0; i < len; i += 4) {\n      swap(this, i, i + 3);\n      swap(this, i + 1, i + 2);\n    }\n    return this;\n  };\n  Buffer.prototype.swap64 = function swap64() {\n    const len = this.length;\n    if (len % 8 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n    }\n    for (let i = 0; i < len; i += 8) {\n      swap(this, i, i + 7);\n      swap(this, i + 1, i + 6);\n      swap(this, i + 2, i + 5);\n      swap(this, i + 3, i + 4);\n    }\n    return this;\n  };\n  Buffer.prototype.toString = function toString() {\n    const length = this.length;\n    if (length === 0) return \"\";\n    if (arguments.length === 0) return utf8Slice(this, 0, length);\n    return slowToString.apply(this, arguments);\n  };\n  Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n  Buffer.prototype.equals = function equals(b) {\n    if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n    if (this === b) return true;\n    return Buffer.compare(this, b) === 0;\n  };\n  Buffer.prototype.inspect = function inspect() {\n    let str = \"\";\n    const max = exports.INSPECT_MAX_BYTES;\n    str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n    if (this.length > max) str += \" ... \";\n    return \"<Buffer \" + str + \">\";\n  };\n  if (customInspectSymbol) {\n    Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n  }\n  Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n    if (isInstance(target, Uint8Array)) {\n      target = Buffer.from(target, target.offset, target.byteLength);\n    }\n    if (!Buffer.isBuffer(target)) {\n      throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n    }\n    if (start === undefined) {\n      start = 0;\n    }\n    if (end === undefined) {\n      end = target ? target.length : 0;\n    }\n    if (thisStart === undefined) {\n      thisStart = 0;\n    }\n    if (thisEnd === undefined) {\n      thisEnd = this.length;\n    }\n    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n      throw new RangeError(\"out of range index\");\n    }\n    if (thisStart >= thisEnd && start >= end) {\n      return 0;\n    }\n    if (thisStart >= thisEnd) {\n      return -1;\n    }\n    if (start >= end) {\n      return 1;\n    }\n    start >>>= 0;\n    end >>>= 0;\n    thisStart >>>= 0;\n    thisEnd >>>= 0;\n    if (this === target) return 0;\n    let x = thisEnd - thisStart;\n    let y = end - start;\n    const len = Math.min(x, y);\n    const thisCopy = this.slice(thisStart, thisEnd);\n    const targetCopy = target.slice(start, end);\n    for (let i = 0; i < len; ++i) {\n      if (thisCopy[i] !== targetCopy[i]) {\n        x = thisCopy[i];\n        y = targetCopy[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n\n  // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n  // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n  //\n  // Arguments:\n  // - buffer - a Buffer to search\n  // - val - a string, Buffer, or number\n  // - byteOffset - an index into `buffer`; will be clamped to an int32\n  // - encoding - an optional encoding, relevant is val is a string\n  // - dir - true for indexOf, false for lastIndexOf\n  function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n    // Empty buffer means no match\n    if (buffer.length === 0) return -1;\n\n    // Normalize byteOffset\n    if (typeof byteOffset === \"string\") {\n      encoding = byteOffset;\n      byteOffset = 0;\n    } else if (byteOffset > 2147483647) {\n      byteOffset = 2147483647;\n    } else if (byteOffset < -2147483648) {\n      byteOffset = -2147483648;\n    }\n    byteOffset = +byteOffset; // Coerce to Number.\n    if (numberIsNaN(byteOffset)) {\n      // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n      byteOffset = dir ? 0 : buffer.length - 1;\n    }\n\n    // Normalize byteOffset: negative offsets start from the end of the buffer\n    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n    if (byteOffset >= buffer.length) {\n      if (dir) return -1;else byteOffset = buffer.length - 1;\n    } else if (byteOffset < 0) {\n      if (dir) byteOffset = 0;else return -1;\n    }\n\n    // Normalize val\n    if (typeof val === \"string\") {\n      val = Buffer.from(val, encoding);\n    }\n\n    // Finally, search either indexOf (if dir is true) or lastIndexOf\n    if (Buffer.isBuffer(val)) {\n      // Special case: looking for empty string/buffer always fails\n      if (val.length === 0) {\n        return -1;\n      }\n      return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n    } else if (typeof val === \"number\") {\n      val = val & 255; // Search for a byte value [0-255]\n      if (typeof Uint8Array.prototype.indexOf === \"function\") {\n        if (dir) {\n          return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n        } else {\n          return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n        }\n      }\n      return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n    }\n    throw new TypeError(\"val must be string, number or Buffer\");\n  }\n  function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n    let indexSize = 1;\n    let arrLength = arr.length;\n    let valLength = val.length;\n    if (encoding !== undefined) {\n      encoding = String(encoding).toLowerCase();\n      if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n        if (arr.length < 2 || val.length < 2) {\n          return -1;\n        }\n        indexSize = 2;\n        arrLength /= 2;\n        valLength /= 2;\n        byteOffset /= 2;\n      }\n    }\n    function read(buf, i) {\n      if (indexSize === 1) {\n        return buf[i];\n      } else {\n        return buf.readUInt16BE(i * indexSize);\n      }\n    }\n    let i;\n    if (dir) {\n      let foundIndex = -1;\n      for (i = byteOffset; i < arrLength; i++) {\n        if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n          if (foundIndex === -1) foundIndex = i;\n          if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n        } else {\n          if (foundIndex !== -1) i -= i - foundIndex;\n          foundIndex = -1;\n        }\n      }\n    } else {\n      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n      for (i = byteOffset; i >= 0; i--) {\n        let found = true;\n        for (let j = 0; j < valLength; j++) {\n          if (read(arr, i + j) !== read(val, j)) {\n            found = false;\n            break;\n          }\n        }\n        if (found) return i;\n      }\n    }\n    return -1;\n  }\n  Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n    return this.indexOf(val, byteOffset, encoding) !== -1;\n  };\n  Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n  };\n  Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n  };\n  function hexWrite(buf, string, offset, length) {\n    offset = Number(offset) || 0;\n    const remaining = buf.length - offset;\n    if (!length) {\n      length = remaining;\n    } else {\n      length = Number(length);\n      if (length > remaining) {\n        length = remaining;\n      }\n    }\n    const strLen = string.length;\n    if (length > strLen / 2) {\n      length = strLen / 2;\n    }\n    let i;\n    for (i = 0; i < length; ++i) {\n      const parsed = parseInt(string.substr(i * 2, 2), 16);\n      if (numberIsNaN(parsed)) return i;\n      buf[offset + i] = parsed;\n    }\n    return i;\n  }\n  function utf8Write(buf, string, offset, length) {\n    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  function asciiWrite(buf, string, offset, length) {\n    return blitBuffer(asciiToBytes(string), buf, offset, length);\n  }\n  function base64Write(buf, string, offset, length) {\n    return blitBuffer(base64ToBytes(string), buf, offset, length);\n  }\n  function ucs2Write(buf, string, offset, length) {\n    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  Buffer.prototype.write = function write(string, offset, length, encoding) {\n    // Buffer#write(string)\n    if (offset === undefined) {\n      encoding = \"utf8\";\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, encoding)\n    } else if (length === undefined && typeof offset === \"string\") {\n      encoding = offset;\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, offset[, length][, encoding])\n    } else if (isFinite(offset)) {\n      offset = offset >>> 0;\n      if (isFinite(length)) {\n        length = length >>> 0;\n        if (encoding === undefined) encoding = \"utf8\";\n      } else {\n        encoding = length;\n        length = undefined;\n      }\n    } else {\n      throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    }\n    const remaining = this.length - offset;\n    if (length === undefined || length > remaining) length = remaining;\n    if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n      throw new RangeError(\"Attempt to write outside buffer bounds\");\n    }\n    if (!encoding) encoding = \"utf8\";\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"hex\":\n          return hexWrite(this, string, offset, length);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Write(this, string, offset, length);\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return asciiWrite(this, string, offset, length);\n        case \"base64\":\n          // Warning: maxLength not taken into account in base64Write\n          return base64Write(this, string, offset, length);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return ucs2Write(this, string, offset, length);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  };\n  Buffer.prototype.toJSON = function toJSON() {\n    return {\n      type: \"Buffer\",\n      data: Array.prototype.slice.call(this._arr || this, 0)\n    };\n  };\n  function base64Slice(buf, start, end) {\n    if (start === 0 && end === buf.length) {\n      return base64.fromByteArray(buf);\n    } else {\n      return base64.fromByteArray(buf.slice(start, end));\n    }\n  }\n  function utf8Slice(buf, start, end) {\n    end = Math.min(buf.length, end);\n    const res = [];\n    let i = start;\n    while (i < end) {\n      const firstByte = buf[i];\n      let codePoint = null;\n      let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n      if (i + bytesPerSequence <= end) {\n        let secondByte, thirdByte, fourthByte, tempCodePoint;\n        switch (bytesPerSequence) {\n          case 1:\n            if (firstByte < 128) {\n              codePoint = firstByte;\n            }\n            break;\n          case 2:\n            secondByte = buf[i + 1];\n            if ((secondByte & 192) === 128) {\n              tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n              if (tempCodePoint > 127) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 3:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n              if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 4:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            fourthByte = buf[i + 3];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n              if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n                codePoint = tempCodePoint;\n              }\n            }\n        }\n      }\n      if (codePoint === null) {\n        // we did not generate a valid codePoint so insert a\n        // replacement char (U+FFFD) and advance only 1 byte\n        codePoint = 65533;\n        bytesPerSequence = 1;\n      } else if (codePoint > 65535) {\n        // encode to utf16 (surrogate pair dance)\n        codePoint -= 65536;\n        res.push(codePoint >>> 10 & 1023 | 55296);\n        codePoint = 56320 | codePoint & 1023;\n      }\n      res.push(codePoint);\n      i += bytesPerSequence;\n    }\n    return decodeCodePointsArray(res);\n  }\n\n  // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n  // the lowest limit is Chrome, with 0x10000 args.\n  // We go 1 magnitude less, for safety\n  const MAX_ARGUMENTS_LENGTH = 4096;\n  function decodeCodePointsArray(codePoints) {\n    const len = codePoints.length;\n    if (len <= MAX_ARGUMENTS_LENGTH) {\n      return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n    }\n\n    // Decode in chunks to avoid \"call stack size exceeded\".\n    let res = \"\";\n    let i = 0;\n    while (i < len) {\n      res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n    }\n    return res;\n  }\n  function asciiSlice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i] & 127);\n    }\n    return ret;\n  }\n  function latin1Slice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i]);\n    }\n    return ret;\n  }\n  function hexSlice(buf, start, end) {\n    const len = buf.length;\n    if (!start || start < 0) start = 0;\n    if (!end || end < 0 || end > len) end = len;\n    let out = \"\";\n    for (let i = start; i < end; ++i) {\n      out += hexSliceLookupTable[buf[i]];\n    }\n    return out;\n  }\n  function utf16leSlice(buf, start, end) {\n    const bytes = buf.slice(start, end);\n    let res = \"\";\n    // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n    for (let i = 0; i < bytes.length - 1; i += 2) {\n      res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n    }\n    return res;\n  }\n  Buffer.prototype.slice = function slice(start, end) {\n    const len = this.length;\n    start = ~~start;\n    end = end === undefined ? len : ~~end;\n    if (start < 0) {\n      start += len;\n      if (start < 0) start = 0;\n    } else if (start > len) {\n      start = len;\n    }\n    if (end < 0) {\n      end += len;\n      if (end < 0) end = 0;\n    } else if (end > len) {\n      end = len;\n    }\n    if (end < start) end = start;\n    const newBuf = this.subarray(start, end);\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(newBuf, Buffer.prototype);\n    return newBuf;\n  };\n\n  /*\n   * Need to make sure that buffer isn't trying to write out of bounds.\n   */\n  function checkOffset(offset, ext, length) {\n    if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n    if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n  }\n  Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      checkOffset(offset, byteLength, this.length);\n    }\n    let val = this[offset + --byteLength];\n    let mul = 1;\n    while (byteLength > 0 && (mul *= 256)) {\n      val += this[offset + --byteLength] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    return this[offset];\n  };\n  Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] | this[offset + 1] << 8;\n  };\n  Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] << 8 | this[offset + 1];\n  };\n  Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n  };\n  Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n  };\n  Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n    const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n    return BigInt(lo) + (BigInt(hi) << BigInt(32));\n  });\n  Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n    return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  });\n  Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let i = byteLength;\n    let mul = 1;\n    let val = this[offset + --i];\n    while (i > 0 && (mul *= 256)) {\n      val += this[offset + --i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    if (!(this[offset] & 128)) return this[offset];\n    return (255 - this[offset] + 1) * -1;\n  };\n  Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset] | this[offset + 1] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset + 1] | this[offset] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n  };\n  Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n  };\n  Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n    return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n  });\n  Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = (first << 24) +\n    // Overflow\n    this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n  });\n  Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, true, 23, 4);\n  };\n  Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, false, 23, 4);\n  };\n  Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, true, 52, 8);\n  };\n  Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, false, 52, 8);\n  };\n  function checkInt(buf, value, offset, ext, max, min) {\n    if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n    if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n  }\n  Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let mul = 1;\n    let i = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  function wrtBigUInt64LE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    return offset;\n  }\n  function wrtBigUInt64BE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset + 7] = lo;\n    lo = lo >> 8;\n    buf[offset + 6] = lo;\n    lo = lo >> 8;\n    buf[offset + 5] = lo;\n    lo = lo >> 8;\n    buf[offset + 4] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset + 3] = hi;\n    hi = hi >> 8;\n    buf[offset + 2] = hi;\n    hi = hi >> 8;\n    buf[offset + 1] = hi;\n    hi = hi >> 8;\n    buf[offset] = hi;\n    return offset + 8;\n  }\n  Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = 0;\n    let mul = 1;\n    let sub = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    let sub = 0;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n    if (value < 0) value = 255 + value + 1;\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n    return offset + 4;\n  };\n  Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    if (value < 0) value = 4294967295 + value + 1;\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  function checkIEEE754(buf, value, offset, ext, max, min) {\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n    if (offset < 0) throw new RangeError(\"Index out of range\");\n  }\n  function writeFloat(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 4);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 23, 4);\n    return offset + 4;\n  }\n  Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, false, noAssert);\n  };\n  function writeDouble(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 8);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 52, 8);\n    return offset + 8;\n  }\n  Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, false, noAssert);\n  };\n\n  // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n  Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n    if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n    if (!start) start = 0;\n    if (!end && end !== 0) end = this.length;\n    if (targetStart >= target.length) targetStart = target.length;\n    if (!targetStart) targetStart = 0;\n    if (end > 0 && end < start) end = start;\n\n    // Copy 0 bytes; we're done\n    if (end === start) return 0;\n    if (target.length === 0 || this.length === 0) return 0;\n\n    // Fatal error conditions\n    if (targetStart < 0) {\n      throw new RangeError(\"targetStart out of bounds\");\n    }\n    if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n    if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n\n    // Are we oob?\n    if (end > this.length) end = this.length;\n    if (target.length - targetStart < end - start) {\n      end = target.length - targetStart + start;\n    }\n    const len = end - start;\n    if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n      // Use built-in when available, missing from IE11\n      this.copyWithin(targetStart, start, end);\n    } else {\n      Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n    }\n    return len;\n  };\n\n  // Usage:\n  //    buffer.fill(number[, offset[, end]])\n  //    buffer.fill(buffer[, offset[, end]])\n  //    buffer.fill(string[, offset[, end]][, encoding])\n  Buffer.prototype.fill = function fill(val, start, end, encoding) {\n    // Handle string cases:\n    if (typeof val === \"string\") {\n      if (typeof start === \"string\") {\n        encoding = start;\n        start = 0;\n        end = this.length;\n      } else if (typeof end === \"string\") {\n        encoding = end;\n        end = this.length;\n      }\n      if (encoding !== undefined && typeof encoding !== \"string\") {\n        throw new TypeError(\"encoding must be a string\");\n      }\n      if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n        throw new TypeError(\"Unknown encoding: \" + encoding);\n      }\n      if (val.length === 1) {\n        const code = val.charCodeAt(0);\n        if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n          // Fast path: If `val` fits into a single byte, use that numeric value.\n          val = code;\n        }\n      }\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n    } else if (typeof val === \"boolean\") {\n      val = Number(val);\n    }\n\n    // Invalid ranges are not set to a default, so can range check early.\n    if (start < 0 || this.length < start || this.length < end) {\n      throw new RangeError(\"Out of range index\");\n    }\n    if (end <= start) {\n      return this;\n    }\n    start = start >>> 0;\n    end = end === undefined ? this.length : end >>> 0;\n    if (!val) val = 0;\n    let i;\n    if (typeof val === \"number\") {\n      for (i = start; i < end; ++i) {\n        this[i] = val;\n      }\n    } else {\n      const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n      const len = bytes.length;\n      if (len === 0) {\n        throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n      }\n      for (i = 0; i < end - start; ++i) {\n        this[i + start] = bytes[i % len];\n      }\n    }\n    return this;\n  };\n\n  // CUSTOM ERRORS\n  // =============\n\n  // Simplified versions from Node, changed for Buffer-only usage\n  const errors = {};\n  function E(sym, getMessage, Base) {\n    errors[sym] = class NodeError extends Base {\n      constructor() {\n        super();\n        Object.defineProperty(this, \"message\", {\n          value: getMessage.apply(this, arguments),\n          writable: true,\n          configurable: true\n        });\n\n        // Add the error code to the name to include it in the stack trace.\n        this.name = `${this.name} [${sym}]`;\n        // Access the stack to generate the error message including the error code\n        // from the name.\n        this.stack; // eslint-disable-line no-unused-expressions\n        // Reset the name to the actual name.\n        delete this.name;\n      }\n      get code() {\n        return sym;\n      }\n      set code(value) {\n        Object.defineProperty(this, \"code\", {\n          configurable: true,\n          enumerable: true,\n          value,\n          writable: true\n        });\n      }\n      toString() {\n        return `${this.name} [${sym}]: ${this.message}`;\n      }\n    };\n  }\n  E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`;\n    }\n    return \"Attempt to access memory outside buffer bounds\";\n  }, RangeError);\n  E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n  }, TypeError);\n  E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`;\n    let received = input;\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input));\n    } else if (typeof input === \"bigint\") {\n      received = String(input);\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received);\n      }\n      received += \"n\";\n    }\n    msg += ` It must be ${range}. Received ${received}`;\n    return msg;\n  }, RangeError);\n  function addNumericalSeparator(val) {\n    let res = \"\";\n    let i = val.length;\n    const start = val[0] === \"-\" ? 1 : 0;\n    for (; i >= start + 4; i -= 3) {\n      res = `_${val.slice(i - 3, i)}${res}`;\n    }\n    return `${val.slice(0, i)}${res}`;\n  }\n\n  // CHECK FUNCTIONS\n  // ===============\n\n  function checkBounds(buf, offset, byteLength) {\n    validateNumber(offset, \"offset\");\n    if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n      boundsError(offset, buf.length - (byteLength + 1));\n    }\n  }\n  function checkIntBI(value, min, max, buf, offset, byteLength) {\n    if (value > max || value < min) {\n      const n = typeof min === \"bigint\" ? \"n\" : \"\";\n      let range;\n      {\n        if (min === 0 || min === BigInt(0)) {\n          range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n        } else {\n          range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n        }\n      }\n      throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n    }\n    checkBounds(buf, offset, byteLength);\n  }\n  function validateNumber(value, name) {\n    if (typeof value !== \"number\") {\n      throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n    }\n  }\n  function boundsError(value, length, type) {\n    if (Math.floor(value) !== value) {\n      validateNumber(value, type);\n      throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n    }\n    if (length < 0) {\n      throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n    }\n    throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n  }\n\n  // HELPER FUNCTIONS\n  // ================\n\n  const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n  function base64clean(str) {\n    // Node takes equal signs as end of the Base64 encoding\n    str = str.split(\"=\")[0];\n    // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n    str = str.trim().replace(INVALID_BASE64_RE, \"\");\n    // Node converts strings with length < 2 to ''\n    if (str.length < 2) return \"\";\n    // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n    while (str.length % 4 !== 0) {\n      str = str + \"=\";\n    }\n    return str;\n  }\n  function utf8ToBytes(string, units) {\n    units = units || Infinity;\n    let codePoint;\n    const length = string.length;\n    let leadSurrogate = null;\n    const bytes = [];\n    for (let i = 0; i < length; ++i) {\n      codePoint = string.charCodeAt(i);\n\n      // is surrogate component\n      if (codePoint > 55295 && codePoint < 57344) {\n        // last char was a lead\n        if (!leadSurrogate) {\n          // no lead yet\n          if (codePoint > 56319) {\n            // unexpected trail\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          } else if (i + 1 === length) {\n            // unpaired lead\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          }\n\n          // valid lead\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // 2 leads in a row\n        if (codePoint < 56320) {\n          if ((units -= 3) > -1) bytes.push(239, 191, 189);\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // valid surrogate pair\n        codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n      } else if (leadSurrogate) {\n        // valid bmp char, but last char was a lead\n        if ((units -= 3) > -1) bytes.push(239, 191, 189);\n      }\n      leadSurrogate = null;\n\n      // encode utf8\n      if (codePoint < 128) {\n        if ((units -= 1) < 0) break;\n        bytes.push(codePoint);\n      } else if (codePoint < 2048) {\n        if ((units -= 2) < 0) break;\n        bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n      } else if (codePoint < 65536) {\n        if ((units -= 3) < 0) break;\n        bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else if (codePoint < 1114112) {\n        if ((units -= 4) < 0) break;\n        bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else {\n        throw new Error(\"Invalid code point\");\n      }\n    }\n    return bytes;\n  }\n  function asciiToBytes(str) {\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      // Node's code seems to be doing this and not & 0x7F..\n      byteArray.push(str.charCodeAt(i) & 255);\n    }\n    return byteArray;\n  }\n  function utf16leToBytes(str, units) {\n    let c, hi, lo;\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      if ((units -= 2) < 0) break;\n      c = str.charCodeAt(i);\n      hi = c >> 8;\n      lo = c % 256;\n      byteArray.push(lo);\n      byteArray.push(hi);\n    }\n    return byteArray;\n  }\n  function base64ToBytes(str) {\n    return base64.toByteArray(base64clean(str));\n  }\n  function blitBuffer(src, dst, offset, length) {\n    let i;\n    for (i = 0; i < length; ++i) {\n      if (i + offset >= dst.length || i >= src.length) break;\n      dst[i + offset] = src[i];\n    }\n    return i;\n  }\n\n  // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n  // the `instanceof` check but they should be treated as of that type.\n  // See: https://github.com/feross/buffer/issues/166\n  function isInstance(obj, type) {\n    return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n  }\n  function numberIsNaN(obj) {\n    // For IE11 support\n    return obj !== obj; // eslint-disable-line no-self-compare\n  }\n\n  // Create lookup table for `toString('hex')`\n  // See: https://github.com/feross/buffer/issues/219\n  const hexSliceLookupTable = function () {\n    const alphabet = \"0123456789abcdef\";\n    const table = new Array(256);\n    for (let i = 0; i < 16; ++i) {\n      const i16 = i * 16;\n      for (let j = 0; j < 16; ++j) {\n        table[i16 + j] = alphabet[i] + alphabet[j];\n      }\n    }\n    return table;\n  }();\n\n  // Return not function with Error if BigInt not supported\n  function defineBigIntMethod(fn) {\n    return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n  }\n  function BufferBigIntNotDefined() {\n    throw new Error(\"BigInt not supported\");\n  }\n  return exports;\n}\n\nexport { dew as d };\n","import { d as dew } from './chunk-DtuTasat.js';\n\nconst exports = dew();\nexports['Buffer']; exports['SlowBuffer']; exports['INSPECT_MAX_BYTES']; exports['kMaxLength'];\n\nvar Buffer = exports.Buffer;\r\nvar INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;\r\nvar kMaxLength = exports.kMaxLength;\n\nexport { Buffer, INSPECT_MAX_BYTES, exports as default, kMaxLength };\n","export { Buffer } from \"buffer\";\n","export { DynamicSnippetsGenerator } from \"./DynamicSnippetsGenerator.js\";\n","import {\n    AbstractAstNode,\n    AbstractDynamicSnippetsGenerator,\n    FernGeneratorExec,\n    Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { python } from \"@fern-api/python-ast\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator.js\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n    DynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator\n> {\n    constructor({\n        ir,\n        config\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n    }) {\n        super(new DynamicSnippetsGeneratorContext({ ir, config }));\n    }\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        return super.generate(request, options);\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        return super.generateSync(request, options);\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<AbstractAstNode> {\n        return super.generateSnippetAst(request, options);\n    }\n\n    /**\n     * Generates just the method call AST without the client instantiation.\n     * This is useful for wire tests where the client is created separately\n     * with test-specific configuration.\n     *\n     * @param request - The snippet request\n     * @param options - Optional options, including endpointId to resolve a specific endpoint\n     *                  when multiple endpoints share the same HTTP method and path\n     */\n    public generateMethodCallSnippetAst({\n        request,\n        options = {}\n    }: {\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): python.AstNode {\n        const endpoints = this.resolveEndpointsForMethodCall({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        let lastError: Error | undefined = undefined;\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as DynamicSnippetsGeneratorContext;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                return snippetGenerator.generateMethodCallSnippetAst({ endpoint, request });\n            } catch (error) {\n                lastError = error as Error;\n            }\n        }\n        if (lastError != null) {\n            throw lastError;\n        }\n        throw new Error(\n            `Failed to generate method call snippet AST for endpoint: ${request.endpoint.method} ${request.endpoint.path}`\n        );\n    }\n\n    private resolveEndpointsForMethodCall({\n        request,\n        options\n    }: {\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): FernIr.dynamic.Endpoint[] {\n        if (options.endpointId != null) {\n            const endpoint = this.context.resolveEndpointById(options.endpointId);\n            if (endpoint == null) {\n                throw new Error(`No endpoint found with ID \"${options.endpointId}\"`);\n            }\n            return [endpoint];\n        }\n        return this.context.resolveEndpointLocationOrThrow(request.endpoint);\n    }\n\n    protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n        return new EndpointSnippetGenerator({ context });\n    }\n}\n","// Force cache invalidation for CI - server URL templating feature\nexport { addPrefixToString } from \"./addPrefixToString.js\";\nexport { applyOpenAPIOverlay, type Overlay, type OverlayAction } from \"./applyOpenAPIOverlay.js\";\nexport {\n    assert,\n    assertDefined,\n    assertNever,\n    assertNeverNoThrow,\n    assertNonNull,\n    assertString,\n    assertVoidNoThrow\n} from \"./assert.js\";\nexport { delay } from \"./delay/delay.js\";\nexport { withMinimumTime } from \"./delay/withMinimumTime.js\";\nexport { EMPTY_ARRAY, EMPTY_OBJECT } from \"./empty.js\";\nexport * as Examples from \"./examples.js\";\nexport { extractErrorMessage } from \"./extractErrorMessage.js\";\nexport { getDuplicates } from \"./getDuplicates.js\";\nexport { identity } from \"./identity.js\";\nexport { isNonNullish } from \"./isNonNullish.js\";\nexport { MediaType } from \"./mediaType.js\";\nexport { mergeWithOverrides } from \"./mergeWithOverrides.js\";\nexport { noop } from \"./noop.js\";\nexport {\n    haveSameNullishness,\n    nullIfNullish,\n    nullIfSomeNullish,\n    undefinedIfNullish,\n    undefinedIfSomeNullish\n} from \"./nullishUtils.js\";\nexport { type ObjectPropertiesVisitor, visitObject, visitObjectAsync } from \"./ObjectPropertiesVisitor.js\";\nexport { type Entries, entries } from \"./objects/entries.js\";\nexport { isPlainObject } from \"./objects/isPlainObject.js\";\nexport { keys } from \"./objects/keys.js\";\nexport { mapValues } from \"./objects/mapValues.js\";\nexport { type Values, values } from \"./objects/values.js\";\nexport { parseEndpointLocator } from \"./parseEndpointLocator.js\";\nexport { PLATFORM, type Platform } from \"./platform.js\";\nexport { removeSuffix } from \"./removeSuffix.js\";\nexport { replaceEnvVariables } from \"./replaceEnvVars.js\";\nexport { SymbolRegistry, type SymbolRegistryOptions } from \"./SymbolRegistry.js\";\nexport { sanitizeChangelogEntry } from \"./sanitizeChangelogEntry.js\";\nexport { SKIP_MARKER, sanitizeNullValues } from \"./sanitizeNullValues.js\";\nexport { diffSemverOrThrow, parseSemverOrThrow } from \"./semverUtils.js\";\nexport { type SetRequired } from \"./setRequired.js\";\nexport { stripLeadingSlash } from \"./stripLeadingSlash.js\";\nexport { titleCase } from \"./titleCase.js\";\nexport type { ContainerRunner, Digit, Letter, LowercaseLetter, UppercaseLetter } from \"./types.js\";\nexport { validateAgainstJsonSchema } from \"./validateAgainstJsonSchema.js\";\nexport { visitDiscriminatedUnion } from \"./visitDiscriminatedUnion.js\";\nexport type { WithoutQuestionMarks } from \"./withoutQuestionMarks.js\";\n","/**\n * @license\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"es\" --repo lodash/lodash#4.18.1 -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nexport { default as add } from './add.js';\nexport { default as after } from './after.js';\nexport { default as ary } from './ary.js';\nexport { default as assign } from './assign.js';\nexport { default as assignIn } from './assignIn.js';\nexport { default as assignInWith } from './assignInWith.js';\nexport { default as assignWith } from './assignWith.js';\nexport { default as at } from './at.js';\nexport { default as attempt } from './attempt.js';\nexport { default as before } from './before.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as bindKey } from './bindKey.js';\nexport { default as camelCase } from './camelCase.js';\nexport { default as capitalize } from './capitalize.js';\nexport { default as castArray } from './castArray.js';\nexport { default as ceil } from './ceil.js';\nexport { default as chain } from './chain.js';\nexport { default as chunk } from './chunk.js';\nexport { default as clamp } from './clamp.js';\nexport { default as clone } from './clone.js';\nexport { default as cloneDeep } from './cloneDeep.js';\nexport { default as cloneDeepWith } from './cloneDeepWith.js';\nexport { default as cloneWith } from './cloneWith.js';\nexport { default as commit } from './commit.js';\nexport { default as compact } from './compact.js';\nexport { default as concat } from './concat.js';\nexport { default as cond } from './cond.js';\nexport { default as conforms } from './conforms.js';\nexport { default as conformsTo } from './conformsTo.js';\nexport { default as constant } from './constant.js';\nexport { default as countBy } from './countBy.js';\nexport { default as create } from './create.js';\nexport { default as curry } from './curry.js';\nexport { default as curryRight } from './curryRight.js';\nexport { default as debounce } from './debounce.js';\nexport { default as deburr } from './deburr.js';\nexport { default as defaultTo } from './defaultTo.js';\nexport { default as defaults } from './defaults.js';\nexport { default as defaultsDeep } from './defaultsDeep.js';\nexport { default as defer } from './defer.js';\nexport { default as delay } from './delay.js';\nexport { default as difference } from './difference.js';\nexport { default as differenceBy } from './differenceBy.js';\nexport { default as differenceWith } from './differenceWith.js';\nexport { default as divide } from './divide.js';\nexport { default as drop } from './drop.js';\nexport { default as dropRight } from './dropRight.js';\nexport { default as dropRightWhile } from './dropRightWhile.js';\nexport { default as dropWhile } from './dropWhile.js';\nexport { default as each } from './each.js';\nexport { default as eachRight } from './eachRight.js';\nexport { default as endsWith } from './endsWith.js';\nexport { default as entries } from './entries.js';\nexport { default as entriesIn } from './entriesIn.js';\nexport { default as eq } from './eq.js';\nexport { default as escape } from './escape.js';\nexport { default as escapeRegExp } from './escapeRegExp.js';\nexport { default as every } from './every.js';\nexport { default as extend } from './extend.js';\nexport { default as extendWith } from './extendWith.js';\nexport { default as fill } from './fill.js';\nexport { default as filter } from './filter.js';\nexport { default as find } from './find.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findKey } from './findKey.js';\nexport { default as findLast } from './findLast.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as findLastKey } from './findLastKey.js';\nexport { default as first } from './first.js';\nexport { default as flatMap } from './flatMap.js';\nexport { default as flatMapDeep } from './flatMapDeep.js';\nexport { default as flatMapDepth } from './flatMapDepth.js';\nexport { default as flatten } from './flatten.js';\nexport { default as flattenDeep } from './flattenDeep.js';\nexport { default as flattenDepth } from './flattenDepth.js';\nexport { default as flip } from './flip.js';\nexport { default as floor } from './floor.js';\nexport { default as flow } from './flow.js';\nexport { default as flowRight } from './flowRight.js';\nexport { default as forEach } from './forEach.js';\nexport { default as forEachRight } from './forEachRight.js';\nexport { default as forIn } from './forIn.js';\nexport { default as forInRight } from './forInRight.js';\nexport { default as forOwn } from './forOwn.js';\nexport { default as forOwnRight } from './forOwnRight.js';\nexport { default as fromPairs } from './fromPairs.js';\nexport { default as functions } from './functions.js';\nexport { default as functionsIn } from './functionsIn.js';\nexport { default as get } from './get.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as gt } from './gt.js';\nexport { default as gte } from './gte.js';\nexport { default as has } from './has.js';\nexport { default as hasIn } from './hasIn.js';\nexport { default as head } from './head.js';\nexport { default as identity } from './identity.js';\nexport { default as inRange } from './inRange.js';\nexport { default as includes } from './includes.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as initial } from './initial.js';\nexport { default as intersection } from './intersection.js';\nexport { default as intersectionBy } from './intersectionBy.js';\nexport { default as intersectionWith } from './intersectionWith.js';\nexport { default as invert } from './invert.js';\nexport { default as invertBy } from './invertBy.js';\nexport { default as invoke } from './invoke.js';\nexport { default as invokeMap } from './invokeMap.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isArrayLike } from './isArrayLike.js';\nexport { default as isArrayLikeObject } from './isArrayLikeObject.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isBuffer } from './isBuffer.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isEqualWith } from './isEqualWith.js';\nexport { default as isError } from './isError.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isInteger } from './isInteger.js';\nexport { default as isLength } from './isLength.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isMatchWith } from './isMatchWith.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isNative } from './isNative.js';\nexport { default as isNil } from './isNil.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isObject } from './isObject.js';\nexport { default as isObjectLike } from './isObjectLike.js';\nexport { default as isPlainObject } from './isPlainObject.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isSafeInteger } from './isSafeInteger.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isString } from './isString.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isWeakSet } from './isWeakSet.js';\nexport { default as iteratee } from './iteratee.js';\nexport { default as join } from './join.js';\nexport { default as kebabCase } from './kebabCase.js';\nexport { default as keyBy } from './keyBy.js';\nexport { default as keys } from './keys.js';\nexport { default as keysIn } from './keysIn.js';\nexport { default as last } from './last.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as lodash } from './wrapperLodash.js';\nexport { default as lowerCase } from './lowerCase.js';\nexport { default as lowerFirst } from './lowerFirst.js';\nexport { default as lt } from './lt.js';\nexport { default as lte } from './lte.js';\nexport { default as map } from './map.js';\nexport { default as mapKeys } from './mapKeys.js';\nexport { default as mapValues } from './mapValues.js';\nexport { default as matches } from './matches.js';\nexport { default as matchesProperty } from './matchesProperty.js';\nexport { default as max } from './max.js';\nexport { default as maxBy } from './maxBy.js';\nexport { default as mean } from './mean.js';\nexport { default as meanBy } from './meanBy.js';\nexport { default as memoize } from './memoize.js';\nexport { default as merge } from './merge.js';\nexport { default as mergeWith } from './mergeWith.js';\nexport { default as method } from './method.js';\nexport { default as methodOf } from './methodOf.js';\nexport { default as min } from './min.js';\nexport { default as minBy } from './minBy.js';\nexport { default as mixin } from './mixin.js';\nexport { default as multiply } from './multiply.js';\nexport { default as negate } from './negate.js';\nexport { default as next } from './next.js';\nexport { default as noop } from './noop.js';\nexport { default as now } from './now.js';\nexport { default as nth } from './nth.js';\nexport { default as nthArg } from './nthArg.js';\nexport { default as omit } from './omit.js';\nexport { default as omitBy } from './omitBy.js';\nexport { default as once } from './once.js';\nexport { default as orderBy } from './orderBy.js';\nexport { default as over } from './over.js';\nexport { default as overArgs } from './overArgs.js';\nexport { default as overEvery } from './overEvery.js';\nexport { default as overSome } from './overSome.js';\nexport { default as pad } from './pad.js';\nexport { default as padEnd } from './padEnd.js';\nexport { default as padStart } from './padStart.js';\nexport { default as parseInt } from './parseInt.js';\nexport { default as partial } from './partial.js';\nexport { default as partialRight } from './partialRight.js';\nexport { default as partition } from './partition.js';\nexport { default as pick } from './pick.js';\nexport { default as pickBy } from './pickBy.js';\nexport { default as plant } from './plant.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as pull } from './pull.js';\nexport { default as pullAll } from './pullAll.js';\nexport { default as pullAllBy } from './pullAllBy.js';\nexport { default as pullAllWith } from './pullAllWith.js';\nexport { default as pullAt } from './pullAt.js';\nexport { default as random } from './random.js';\nexport { default as range } from './range.js';\nexport { default as rangeRight } from './rangeRight.js';\nexport { default as rearg } from './rearg.js';\nexport { default as reduce } from './reduce.js';\nexport { default as reduceRight } from './reduceRight.js';\nexport { default as reject } from './reject.js';\nexport { default as remove } from './remove.js';\nexport { default as repeat } from './repeat.js';\nexport { default as replace } from './replace.js';\nexport { default as rest } from './rest.js';\nexport { default as result } from './result.js';\nexport { default as reverse } from './reverse.js';\nexport { default as round } from './round.js';\nexport { default as sample } from './sample.js';\nexport { default as sampleSize } from './sampleSize.js';\nexport { default as set } from './set.js';\nexport { default as setWith } from './setWith.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as size } from './size.js';\nexport { default as slice } from './slice.js';\nexport { default as snakeCase } from './snakeCase.js';\nexport { default as some } from './some.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as sortedIndexBy } from './sortedIndexBy.js';\nexport { default as sortedIndexOf } from './sortedIndexOf.js';\nexport { default as sortedLastIndex } from './sortedLastIndex.js';\nexport { default as sortedLastIndexBy } from './sortedLastIndexBy.js';\nexport { default as sortedLastIndexOf } from './sortedLastIndexOf.js';\nexport { default as sortedUniq } from './sortedUniq.js';\nexport { default as sortedUniqBy } from './sortedUniqBy.js';\nexport { default as split } from './split.js';\nexport { default as spread } from './spread.js';\nexport { default as startCase } from './startCase.js';\nexport { default as startsWith } from './startsWith.js';\nexport { default as stubArray } from './stubArray.js';\nexport { default as stubFalse } from './stubFalse.js';\nexport { default as stubObject } from './stubObject.js';\nexport { default as stubString } from './stubString.js';\nexport { default as stubTrue } from './stubTrue.js';\nexport { default as subtract } from './subtract.js';\nexport { default as sum } from './sum.js';\nexport { default as sumBy } from './sumBy.js';\nexport { default as tail } from './tail.js';\nexport { default as take } from './take.js';\nexport { default as takeRight } from './takeRight.js';\nexport { default as takeRightWhile } from './takeRightWhile.js';\nexport { default as takeWhile } from './takeWhile.js';\nexport { default as tap } from './tap.js';\nexport { default as template } from './template.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as throttle } from './throttle.js';\nexport { default as thru } from './thru.js';\nexport { default as times } from './times.js';\nexport { default as toArray } from './toArray.js';\nexport { default as toFinite } from './toFinite.js';\nexport { default as toInteger } from './toInteger.js';\nexport { default as toIterator } from './toIterator.js';\nexport { default as toJSON } from './toJSON.js';\nexport { default as toLength } from './toLength.js';\nexport { default as toLower } from './toLower.js';\nexport { default as toNumber } from './toNumber.js';\nexport { default as toPairs } from './toPairs.js';\nexport { default as toPairsIn } from './toPairsIn.js';\nexport { default as toPath } from './toPath.js';\nexport { default as toPlainObject } from './toPlainObject.js';\nexport { default as toSafeInteger } from './toSafeInteger.js';\nexport { default as toString } from './toString.js';\nexport { default as toUpper } from './toUpper.js';\nexport { default as transform } from './transform.js';\nexport { default as trim } from './trim.js';\nexport { default as trimEnd } from './trimEnd.js';\nexport { default as trimStart } from './trimStart.js';\nexport { default as truncate } from './truncate.js';\nexport { default as unary } from './unary.js';\nexport { default as unescape } from './unescape.js';\nexport { default as union } from './union.js';\nexport { default as unionBy } from './unionBy.js';\nexport { default as unionWith } from './unionWith.js';\nexport { default as uniq } from './uniq.js';\nexport { default as uniqBy } from './uniqBy.js';\nexport { default as uniqWith } from './uniqWith.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as unset } from './unset.js';\nexport { default as unzip } from './unzip.js';\nexport { default as unzipWith } from './unzipWith.js';\nexport { default as update } from './update.js';\nexport { default as updateWith } from './updateWith.js';\nexport { default as upperCase } from './upperCase.js';\nexport { default as upperFirst } from './upperFirst.js';\nexport { default as value } from './value.js';\nexport { default as valueOf } from './valueOf.js';\nexport { default as values } from './values.js';\nexport { default as valuesIn } from './valuesIn.js';\nexport { default as without } from './without.js';\nexport { default as words } from './words.js';\nexport { default as wrap } from './wrap.js';\nexport { default as wrapperAt } from './wrapperAt.js';\nexport { default as wrapperChain } from './wrapperChain.js';\nexport { default as wrapperCommit } from './commit.js';\nexport { default as wrapperLodash } from './wrapperLodash.js';\nexport { default as wrapperNext } from './next.js';\nexport { default as wrapperPlant } from './plant.js';\nexport { default as wrapperReverse } from './wrapperReverse.js';\nexport { default as wrapperToIterator } from './toIterator.js';\nexport { default as wrapperValue } from './wrapperValue.js';\nexport { default as xor } from './xor.js';\nexport { default as xorBy } from './xorBy.js';\nexport { default as xorWith } from './xorWith.js';\nexport { default as zip } from './zip.js';\nexport { default as zipObject } from './zipObject.js';\nexport { default as zipObjectDeep } from './zipObjectDeep.js';\nexport { default as zipWith } from './zipWith.js';\nexport { default } from './lodash.default.js';\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nexport default createCompounder;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduce;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default basePropertyOf;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nexport default words;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n  return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nexport default snakeCase;\n","/**\n * Asserts that a condition is truthy, throwing an exception with the specified message if it is falsy.\n */\nexport function assert(condition: unknown, message?: string): asserts condition {\n    if (!condition) {\n        throw new Error(message ?? \"Expected condition to be truthy but got falsy.\");\n    }\n}\n\nexport function assertDefined<T>(val: T, message?: string): asserts val is Exclude<T, undefined> {\n    if (val === undefined) {\n        throw new Error(message ?? \"Expected value to be defined but got undefined.\");\n    }\n}\n\nexport function assertNonNull<T>(val: T, message?: string): asserts val is Exclude<T, null> {\n    if (val === null) {\n        throw new Error(message ?? \"Expected value to be non-null but got null.\");\n    }\n}\n\nexport function assertString(val: unknown, message?: string): asserts val is string {\n    if (typeof val !== \"string\") {\n        throw new Error(message ?? `Expected value to be a string but got ${typeof val}.`);\n    }\n}\n\nexport function assertNever(x: never): never {\n    throw new Error(\"Unexpected value: \" + JSON.stringify(x));\n}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertNeverNoThrow(_: never): void {}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertVoidNoThrow(_x: void): void {}\n","export function keys<T extends object>(object: T): (keyof T)[] {\n    return Object.keys(object) as (keyof T)[];\n}\n","export { AbstractAstNode } from \"./AbstractAstNode.js\";\nexport { AbstractFormatter, NopFormatter } from \"./AbstractFormatter.js\";\nexport { AbstractWriter } from \"./AbstractWriter.js\";\nexport {\n    type Argument,\n    type Arguments,\n    hasNamedArgument,\n    isNamedArgument,\n    type NamedArgument,\n    type UnnamedArgument\n} from \"./Argument.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Ternary } from \"./Ternary.js\";\n","import { tag } from \"../utils/stacktrace.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport abstract class AbstractAstNode {\n    /**\n     * Every AST node knows how to write itself to a string.\n     */\n    public abstract write(writer: AbstractWriter): void;\n\n    public constructor() {\n        // when FERN_STACK_TRACK is defined this will track the stack trace of the current AstNode.\n        // otherwise this has absolutely no effect whatsoever.\n        tag(this);\n    }\n}\n","/**\n * Global flag that enables or disables stack tracing functionality throughout the application.\n * This is controlled via the FERN_STACK_TRACK environment variable.\n *\n * When enabled (truthy environment variable value), stack traces will be captured and processed\n * by the stacktrace functions in this module. When disabled, the stacktrace() function returns\n * an empty array for performance optimization.\n *\n * @example\n * // Enable tracing by setting the environment variable\n * // FERN_STACK_TRACK=1 <cmdline>\n */\nconst key = process.env[\"FERN_STACK_TRACK\"]?.toLowerCase() ?? \"\";\n\nexport const enableStackTracking = key !== \"\" && key !== \"0\" && key !== \"false\";\n\n/** The style of comments desired for the stack tracking comments\n *\n * can be \"single\", \"multiline\", or \"box\".\n * if not set to one of those, defaults to \"single\".\n */\nexport const trackingType = [\"single\", \"multiline\", \"box\"].includes(key) ? key : \"single\";\n\nif (enableStackTracking) {\n    // we're going to put a hard max limit on the stack trace to prevent infinite recursion and excessive stack generation\n    Error.stackTraceLimit = 50;\n}\n\n/**\n * Configuration options for controlling stack trace capture and filtering behavior.\n */\ninterface StackTraceOptions {\n    /**\n     * Maximum number of stack frames to return after filtering.\n     *\n     * Maximum may never exceed 50.\n     * @default 50\n     */\n    maxFrames?: number;\n\n    /**\n     * Number of frames to skip from the beginning of the filtered stack trace.\n     * Useful for omitting wrapper functions from the output.\n     * @default 0\n     */\n    skip?: number;\n\n    /**\n     * Array of function name substrings that trigger an early stop when encountered.\n     * When a frame's function name includes any of these strings, that frame and all\n     * subsequent frames will be excluded from the output.\n     *\n     * implicitly includes \"runInteractiveTask\"\n     * @default []\n     */\n    stopOn?: string[];\n\n    /**\n     * Array of file path substrings to filter out. Any frame whose path contains\n     * any of these strings will be excluded from the output.\n     * @default []\n     */\n    filterPaths?: string[];\n\n    /**\n     * Array of function name substrings to filter out. Any frame whose function name\n     * contains any of these strings will be excluded from the output.\n     *\n     * implicitly includes \"SdkGeneratorCLI\", \"runCli\",\"Frames.trace\",\"Frames.tag\", \"at\", \"stacktrace\"\n     * @default []\n     */\n    filterFunctions?: string[];\n\n    /**\n     * Whether to filter out Node.js internal frames (paths starting with \"node:\").\n     * @default true\n     */\n    filterNode?: boolean;\n\n    /**\n     * Whether to filter out .js files, which typically indicate non-source files\n     * without source map information.\n     * @default true\n     */\n    filterJs?: boolean;\n\n    /**\n     * A function to format the file path of the stack trace frame.\n     * @default (filename) => filename\n     */\n    formatFilename?: (filename: string) => string;\n}\n\n/**\n * Represents a single parsed stack trace frame containing function, file path, and position information.\n */\nexport interface StackTraceFrame {\n    /**\n     * The function name or context. May include special formatting like \"alias()=> { ... }\"\n     * for certain Object methods, or be an empty string for anonymous contexts.\n     */\n    fn: string;\n\n    /**\n     * The file path where this frame originated. This will typically be the full path\n     * to the source file.\n     */\n    path: string;\n\n    /**\n     * The line and column position in the format \"line:column\" (e.g., \"42:13\").\n     */\n    position: string;\n}\n\nconst globalFunctionFilters = new Set<string>([\"SdkGeneratorCLI\", \"runCli\", \"LoggerImpl\", \"Array.forEach\"]);\nconst globalFileFilters = new Set<string>([\"stacktrace\"]);\n\n/**\n * Adds a function name to the global function filters for stack traces\n * @param filter - The function name to add to the global function filters.\n */\nexport function addGlobalFunctionFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFunctionFilters.add(filter);\n    }\n}\n\n/**\n * Adds a file path to the global file filters for stack traces.\n * @param filter - The file path to add to the global file filters.\n */\nexport function addGlobalFileFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFileFilters.add(filter);\n    }\n}\n\n/**\n * Captures and parses the current call stack, returning an array of stack frames with filtering options.\n *\n * This function creates a new Error object to capture the stack trace, then parses each frame\n * to extract function names, file paths, and positions. It applies multiple filtering strategies\n * to exclude unwanted frames (e.g., Node.js internals, .js files, specific functions).\n *\n * The function only operates when `enableStackTracking` is true. If tracing is disabled, it returns\n * an empty array for performance optimization.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns Array of parsed stack trace frames, filtered and limited according to the options\n *\n * @example\n * // Capture the first 10 frames, skipping the first 2\n * const frames = stacktrace({ maxFrames: 10, skip: 2 });\n *\n * @example\n * // Capture frames until hitting \"main\" function, filter out test files\n * const frames = stacktrace({\n *   stopOn: [\"main\"],\n *   filterPaths: [\"/test/\"],\n *   filterFunctions: [\"runTests\"]\n * });\n *\n * @remarks\n * The function applies filters in the following order:\n * 1. Parses each stack frame using regex to extract function, path, line, and column\n * 2. Applies early-stop logic when encountering functions in the `stopOn` array\n * 3. Formats special function names (e.g., \"Object.alias\" → \"alias()=> { ... }\")\n * 4. Filters out:\n *    - The stacktrace function itself (\"at\", \"stacktrace\")\n *    - Functions matching `filterFunctions` (substring match)\n *    - Node.js internal frames (if `filterNode` is true)\n *    - .js files (if `filterJs` is true)\n *    - Paths matching `filterPaths` (substring match)\n * 5. Applies `skip` and `maxFrames` to limit the output\n */\nexport function stacktrace({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    formatFilename = (filename) => filename\n}: StackTraceOptions = {}): StackTraceFrame[] {\n    if (!enableStackTracking) {\n        return [];\n    }\n    filterFunctions = [...filterFunctions, ...globalFunctionFilters];\n    filterPaths = [...filterPaths, ...globalFileFilters];\n    stopOn = [...stopOn, \"runInteractiveTask\"];\n    let stop = false;\n    return (\n        (new Error().stack ?? \"\")\n            .split(\"\\n\")\n            .map((line) => {\n                const match = line.match(/at\\s+(.*)\\s+\\((.*):(\\d+):(\\d+)\\)/);\n                if (match && match.length === 5) {\n                    let [, fn, path, line, column] = match;\n                    if (!fn || !path || !line || !column) {\n                        return undefined;\n                    }\n\n                    if (stop || stopOn.some((s) => fn?.includes(s))) {\n                        stop = true;\n                        return undefined;\n                    }\n\n                    switch (fn) {\n                        case \"Object.<anonymous>\":\n                            fn = \"\";\n                            break;\n                        case \"Object.object\":\n                        case \"Object.alias\":\n                        case \"Object.union\":\n                        case \"Object.enum\":\n                        case \"Object.undiscriminatedUnion\":\n                            fn = `${fn.substring(fn.indexOf(\".\") + 1)}()=> { ... }`;\n                            break;\n                    }\n                    return {\n                        fn,\n                        path: formatFilename(path),\n                        position: `${line}:${column}`\n                    } as StackTraceFrame;\n                }\n                return undefined;\n            })\n            .filter(\n                (each) =>\n                    each &&\n                    !filterFunctions.some((f) => each.fn.includes(f)) && // substring match for filter functions\n                    !(filterNode && each.path?.startsWith(\"node:\")) && // starts with node:\n                    !(filterJs && each.path?.endsWith(\".js\")) && // ends with .js (meaning likely not a source file - no source map info)\n                    !filterPaths.some((p) => each.path.includes(p)) // substring match for filter paths\n            ) as StackTraceFrame[]\n    ).slice(skip, skip + maxFrames);\n}\n\n/**\n * Returns a formatted stack trace string at the current location for debugging purposes.\n *\n * This is a convenience function that wraps `stacktrace()` and formats the output as a\n * human-readable string. It's particularly useful for logging or debugging to understand\n * the execution flow and call hierarchy.\n *\n * The function supports both single-line and multi-line output formats. Single-line format\n * concatenates all frames into one line (useful for compact logging), while multi-line format\n * adds newlines and indentation for better readability.\n *\n * @param options - Configuration options for stack trace capture, filtering, and formatting\n * @param options.multiline - Whether to format the output with newlines and indentation.\n *                            When true, each frame is on its own line with 4-space indent.\n *                            When false (default), all frames are concatenated on one line.\n * @returns A formatted string containing the stack trace information, prefixed with \"stacktrace - \"\n *\n * @example\n * // Single-line format (compact)\n * console.log(at());\n * // Output: \"stacktrace - myFunction - /path/to/file.ts:42:13anotherFunc - /path/to/other.ts:17:5\"\n *\n * @example\n * // Multi-line format (readable)\n * console.log(at({ multiline: true, maxFrames: 5 }));\n * // Output:\n * // stacktrace -\n * //     myFunction - /path/to/file.ts:42:13\n * //     anotherFunc - /path/to/other.ts:17:5\n * //     main - /path/to/index.ts:10:1\n *\n * @example\n * // Custom filtering for specific use case\n * console.log(at({\n *   maxFrames: 10,\n *   skip: 1,\n *   filterPaths: [\"foo.ts\"],\n *   multiline: true\n * }));\n *\n * @remarks\n * This function automatically skips itself from the stack trace output by default.\n * The \"at\" function name is filtered by the underlying `stacktrace()` function.\n */\nexport function at({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [\"runInteractiveTask\"],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}): string {\n    return enableStackTracking\n        ? `${stacktrace({ maxFrames, skip, filterPaths, filterFunctions, stopOn, filterNode, filterJs, formatFilename })\n              .map((each) => `${multiline ? \"\\n    \" : \" > \"}${each.fn} - ${each.path}:${each.position}`)\n              .join(\"\")}`\n        : \"\";\n}\n\n/** This class allows the developer to attach stack trace information to objects  */\nexport class StackTraces {\n    private readonly maxFrames: number;\n    private readonly skip: number;\n    private readonly filterPaths: string[];\n    private readonly filterFunctions: string[];\n    private readonly stopOn: string[];\n    private readonly filterNode: boolean;\n    private readonly filterJs: boolean;\n    private readonly multiline: boolean;\n    private readonly formatFilename: (filename: string) => string;\n    private tracking = new WeakMap<object, Set<StackTraceFrame>>();\n\n    constructor({\n        maxFrames = 50,\n        skip = 0,\n        filterPaths = [],\n        filterFunctions = [],\n        stopOn = [],\n        filterNode = true,\n        filterJs = true,\n        multiline = false,\n        formatFilename = (filename) => filename\n    }: StackTraceOptions & { multiline?: boolean } = {}) {\n        this.maxFrames = maxFrames;\n        this.skip = skip;\n        this.filterPaths = filterPaths;\n        this.filterFunctions = filterFunctions;\n        this.stopOn = stopOn;\n        this.filterNode = filterNode;\n        this.filterJs = filterJs;\n        this.multiline = multiline;\n        this.formatFilename = formatFilename;\n    }\n\n    /**\n     * Tags the current stack trace with the given object.\n     *\n     * This can be called multiple times to add more stack trace information to the object.\n     *\n     * @param obj - The object to tag the stack trace with.\n     */\n    tag(obj: object): void {\n        const current = this.tracking.get(obj) || new Set<StackTraceFrame>();\n        stacktrace({\n            maxFrames: this.maxFrames,\n            skip: this.skip,\n            filterPaths: this.filterPaths,\n            filterFunctions: this.filterFunctions,\n            stopOn: this.stopOn,\n            filterNode: this.filterNode,\n            filterJs: this.filterJs,\n            formatFilename: this.formatFilename\n        }).forEach((frame) => current.add(frame));\n        this.tracking.set(obj, current);\n    }\n\n    /**\n     * Returns a formatted stack trace string for the given object.\n     * @param obj - The object to get the stack trace for.\n     * @returns A formatted string containing the stack trace information.\n     */\n    trace(obj: object): string {\n        if (!enableStackTracking) {\n            return \"\";\n        }\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return \"\";\n        }\n\n        return [...frames]\n            .map((each) => `${this.multiline ? \"\\n    \" : \"\"}${each.fn} - ${each.path}:${each.position}`)\n            .join(\"\");\n    }\n\n    /**\n     * Gets the stack trace frames for the given object.\n     *\n     * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n     *       Otherwise this will return an empty array.\n     *\n     * @param obj - The object to get the stack trace frames for.\n     * @returns The stack trace frames for the given object.\n     */\n    frames(obj: object): StackTraceFrame[] {\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return [];\n        }\n        return [...frames];\n    }\n\n    /**\n     * Frees the stack trace information for the given object.\n     * @param obj - The object to free the stack trace information for.\n     */\n    free(obj: object): void {\n        this.tracking.delete(obj);\n    }\n\n    /**\n     * Clears all stack trace information.\n     */\n    clear(): void {\n        this.tracking = new WeakMap<object, Set<StackTraceFrame>>();\n    }\n}\n\nlet stackTraces: StackTraces | undefined;\n/**\n * Starts tracking the stack trace of the current object.\n *\n * Note: This will only start tracking when FERN_STACK_TRACK is defined.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns The stack traces object.\n */\nexport function startTracking({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}) {\n    if (!enableStackTracking) {\n        return;\n    }\n    stackTraces ??= new StackTraces({\n        maxFrames,\n        skip,\n        filterPaths,\n        filterFunctions,\n        stopOn,\n        filterNode,\n        filterJs,\n        multiline,\n        formatFilename\n    });\n}\n\n/**\n * Tags the current stack trace with the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to tag the stack trace with.\n */\nexport function tag(obj: object) {\n    stackTraces?.tag(obj);\n}\n\n/**\n * Returns a formatted stack trace string for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to get the stack trace for.\n * @returns A formatted string containing the stack trace information.\n */\nexport function trace(obj: object) {\n    return stackTraces?.trace(obj) ?? \"\";\n}\n\n/**\n * Frees the stack trace information for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to free the stack trace information for.\n */\nexport function free(obj: object) {\n    stackTraces?.free(obj);\n}\n\n/**\n * Gets the stack trace frames for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will return an empty array.\n *\n * @param obj - The object to get the stack trace frames for.\n * @returns The stack trace frames for the given object.\n */\nexport function getFramesForTaggedObject(obj: object): StackTraceFrame[] {\n    return stackTraces?.frames(obj) ?? [];\n}\n","import { enableStackTracking } from \"../utils/index.js\";\nimport {\n    getFramesForTaggedObject,\n    StackTraceFrame,\n    stacktrace,\n    startTracking,\n    trackingType\n} from \"../utils/stacktrace.js\";\nimport { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\n\nconst TAB_SIZE = 4;\n// this will start tracking only when FERN_STACK_TRACK is defined\n// otherwise this has absolutely no effect whatsoever.\nstartTracking({ skip: 0, maxFrames: 15, filterFunctions: [\"Abstract\"] });\n\nexport class AbstractWriter {\n    /* The buffer of lines being written */\n    protected readonly lineBuffer: string[] = [];\n\n    /* The contents being written */\n    public get buffer() {\n        if (enableStackTracking && this.nodeStackFrames.length > 0) {\n            // if we're emitting tracking comments, let's ensure we get the last little bit of info.\n            // by appending a newline to the buffer before returning it.\n            // (this can be useful when using toString() to get a node's content.)\n            this.writeInternal(\"\\n\");\n        }\n        return this.lineBuffer.join(\"\\n\") + (this.lastCharacterIsNewline ? \"\\n\" : \"\");\n    }\n\n    /* Indentation level (multiple of 4) */\n    private indentLevel = 0;\n    /* Whether anything has been written to the buffer */\n    private hasWrittenAnything = false;\n    /* Whether the last character written was a semi colon */\n    private lastCharacterIsSemicolon = false;\n    /* Whether the last character written was a newline */\n    private lastCharacterIsNewline = false;\n    /* The stack traces associated with the current node */\n    private nodeStackFrames: StackTraceFrame[] = [];\n\n    /**\n     * Writes arbitrary text and nodes\n     * @param text\n     */\n    public write(...parts: (string | AbstractAstNode | undefined)[]): void {\n        for (const text of parts) {\n            if (text != null) {\n                if (typeof text === \"string\") {\n                    const textEndsInNewline = text.length > 0 && text.endsWith(\"\\n\");\n                    // temporarily remove the trailing newline, since we don't want to add the indent prefix after it\n                    const textWithoutNewline = textEndsInNewline ? text.substring(0, text.length - 1) : text;\n\n                    const indent = this.getIndentString();\n                    let indentedText = textWithoutNewline.replaceAll(\"\\n\", `\\n${indent}`);\n                    if (this.isAtStartOfLine()) {\n                        indentedText = indent + indentedText;\n                    }\n                    if (textEndsInNewline) {\n                        indentedText += \"\\n\";\n                    }\n                    this.writeInternal(indentedText);\n                } else {\n                    this.writeNode(text);\n                }\n            }\n        }\n    }\n\n    public writeStatement(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...parts);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes arbitrary text without indentation\n     * @param text\n     */\n    public writeNoIndent(text: string): void {\n        const currIndentLevel = this.indentLevel;\n        this.indentLevel = 0;\n        this.write(text);\n        this.indentLevel = currIndentLevel;\n    }\n\n    /**\n     * Writes a node\n     * @param node\n     */\n    public writeNode(node: AbstractAstNode): void {\n        if (enableStackTracking) {\n            this.nodeStackFrames.push(...getFramesForTaggedObject(node));\n        }\n        node.write(this);\n\n        // if we're using box or multiline comments, write a newline after every node so it emits a comment for the node\n        // since we're dumping a lot of data anyway, might as well be explicit about it.\n        if (enableStackTracking && trackingType !== \"single\") {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    /**\n     * Writes a node or string\n     * @param input\n     */\n    public writeNodeOrString(input: AbstractAstNode | string): void {\n        if (typeof input === \"string\") {\n            this.write(input);\n            return;\n        }\n\n        this.writeNode(input);\n    }\n\n    /**\n     * Writes a node but then suffixes with a `;` and new line\n     * @param node\n     */\n    public writeNodeStatement(node: AbstractAstNode): void {\n        this.writeNode(node);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes text but then suffixes with a `;`\n     * @param node\n     */\n    public writeTextStatement(text: string): void {\n        const codeBlock = new CodeBlock(text);\n        codeBlock.write(this);\n        if (!text.endsWith(\";\")) {\n            this.write(\";\");\n        }\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlow(prefix: string, statement: AbstractAstNode): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlowWithoutStatement(prefix: string): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    /**\n     * Ends a control flow block\n     */\n    public endControlFlow(): void {\n        this.popScope();\n    }\n\n    /**\n     * Starts a control flow without a newline from the previous control flow block\n     * @param prefix\n     * @param statement\n     */\n    public contiguousControlFlow(prefix: string, statement: AbstractAstNode): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow alternative block\n     * @param prefix\n     */\n    public alternativeControlFlow(prefix: string): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    public pushScope() {\n        this.writeLine(\"{\");\n        this.indent();\n    }\n\n    public popScope(withNewline = true) {\n        this.dedent();\n        this.writeNewLineIfLastLineNot();\n        if (withNewline) {\n            this.writeLine(\"}\");\n        } else {\n            this.write(\"}\");\n        }\n    }\n\n    /* Only writes a newline if last line in the buffer is not a newline */\n    public writeLine(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...(parts.length === 0 ? [\"\"] : parts));\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /* Always writes newline */\n    public newLine(): void {\n        this.writeInternal(\"\\n\");\n    }\n\n    public writeSemicolonIfLastCharacterIsNot(): void {\n        if (!this.lastCharacterIsSemicolon) {\n            this.writeInternal(\";\");\n        }\n    }\n\n    public writeNewLineIfLastLineNot(): void {\n        if (!this.lastCharacterIsNewline) {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    public indent(): void {\n        this.indentLevel++;\n    }\n\n    public dedent(): void {\n        this.indentLevel--;\n    }\n\n    public delimit<T extends AbstractAstNode>({\n        nodes,\n        delimiter,\n        writeFunction\n    }: {\n        nodes: T[];\n        delimiter: string;\n        writeFunction: (node: T) => void;\n    }): void {\n        if (nodes.length > 0) {\n            const firstNode = nodes[0];\n            if (firstNode != null) {\n                writeFunction(firstNode);\n            }\n            for (let i = 1; i < nodes.length; i++) {\n                this.write(delimiter);\n                const node = nodes[i];\n                if (node != null) {\n                    writeFunction(node);\n                }\n            }\n        }\n    }\n\n    public toString(): string {\n        return this.buffer;\n    }\n\n    /*******************************\n     * Helper Methods\n     *******************************/\n    private writeInternal(text: string) {\n        if (text.length === 0) {\n            return;\n        }\n\n        const appendToLastLine = !this.lastCharacterIsNewline;\n\n        this.hasWrittenAnything = true;\n        this.lastCharacterIsNewline = text.endsWith(\"\\n\");\n        this.lastCharacterIsSemicolon = text.endsWith(\";\");\n\n        const lines = text.split(\"\\n\");\n\n        const appendTrackingComment =\n            enableStackTracking && !this.shouldSkipTracking(lines) && this.lastCharacterIsNewline;\n\n        if (appendToLastLine) {\n            this.lastLine = `${this.lastLine}${lines.shift() || \"\"}`;\n        }\n\n        if (this.lastCharacterIsNewline) {\n            lines.pop();\n        }\n\n        this.lineBuffer.push(...lines);\n\n        if (appendTrackingComment) {\n            this.appendTrackingComment();\n        }\n    }\n\n    /**\n     * Sets the last line of the buffer\n     * @param line - The line to set\n     */\n    protected set lastLine(line: string) {\n        if (this.lineBuffer.length > 0) {\n            this.lineBuffer[this.lineBuffer.length - 1] = line;\n        } else {\n            this.lineBuffer.push(line);\n        }\n    }\n\n    /**\n     * Gets the last line of the buffer\n     * @returns The last line of the buffer\n     */\n    protected get lastLine() {\n        return this.lineBuffer[this.lineBuffer.length - 1] || \"\";\n    }\n\n    /**\n     * Determines if the tracking comment should be skipped\n     * @param lines - The that are being written out\n     *\n     * @returns True if the tracking comment should be skipped\n     */\n    protected shouldSkipTracking(lines: string[]) {\n        return false;\n    }\n\n    /**\n     * Formats the stack trace frames into a string\n     * @param stack - The stack trace to format\n     * @param prefix - The prefix to add to the stack trace\n     * @returns The formatted stack trace\n     */\n    protected formatStack(stack: StackTraceFrame[], prefix = \"\") {\n        return stack.map((each) => `${prefix ? `(${prefix}) ` : \"\"} ${each.fn} - ${each.path} : ${each.position}`);\n    }\n\n    /**\n     * Filters out frames that start with the name of the current class\n     *\n     * This will filter out frames that start with the name of the current class that inherits from AbstractWriter.\n     *\n     * You can override this function to filter out more things.\n     * @param stack - The stack trace to filter\n     * @returns The filtered stack trace\n     */\n    protected filterStack(stack: StackTraceFrame[]) {\n        return stack.filter((each) => !each.fn.startsWith(`${this.constructor.name}.`));\n    }\n\n    /**\n     * Prepares the stack trace and calls the appropriate tracking comment formatter\n     */\n    protected appendTrackingComment() {\n        const stack = [\n            // adds the stack frames of the current function call\n            ...this.formatStack(this.filterStack(stacktrace({ maxFrames: 15, skip: 3 }))),\n\n            // adds the stack frames of any AstNodes that have been written since the last tracking comment\n            ...this.formatStack(this.filterStack(this.nodeStackFrames), \"node\")\n        ];\n        // reset the ast node stack frames\n        this.nodeStackFrames.length = 0;\n\n        switch (trackingType) {\n            case \"single\":\n                return this.singleLineTrackingComment(stack);\n\n            case \"multiline\":\n                return this.multiLineTrackingComment(stack);\n\n            case \"box\":\n                return this.boxTrackingComment(stack);\n        }\n    }\n\n    /**\n     * Creates a single line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected singleLineTrackingComment(stack: string[]) {\n        this.lastLine = `${this.lastLine} // ${stack.join(\" \")}`;\n    }\n    /**\n     * Creates a multi line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected multiLineTrackingComment(stack: string[]) {\n        this.lineBuffer.push(...stack.map((each) => `    // ${each}`));\n    }\n    /**\n     * Creates a box tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected boxTrackingComment(stack: string[]) {\n        this.lineBuffer.push(\"/*\", ...stack.map((each) => `    ${each}`), \"*/\");\n    }\n\n    private isAtStartOfLine(): boolean {\n        return this.lastCharacterIsNewline || !this.hasWrittenAnything;\n    }\n\n    private getIndentString(): string {\n        return \" \".repeat(this.indentLevel * this.getTabSize());\n    }\n\n    protected getTabSize(): number {\n        return TAB_SIZE;\n    }\n}\n","export { getPackageName } from \"./getPackageName.js\";\nexport { getSdkVersion } from \"./getSdkVersion.js\";\nexport {\n    addGlobalFileFilter,\n    addGlobalFunctionFilter,\n    at,\n    enableStackTracking,\n    getFramesForTaggedObject,\n    StackTraces,\n    stacktrace\n} from \"./stacktrace.js\";\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg<T extends AbstractWriter> = string | AbstractAstNode | ((writer: T) => void);\n}\n\nexport class CodeBlock<T extends AbstractWriter> extends AbstractAstNode {\n    private value: CodeBlock.Arg<T>;\n\n    constructor(value: CodeBlock.Arg<T>) {\n        super();\n        this.value = value;\n    }\n\n    public write(writer: T): void {\n        if (typeof this.value === \"string\") {\n            writer.write(this.value);\n            // if function\n        } else if (typeof this.value === \"function\") {\n            this.value(writer);\n        } else {\n            this.value.write(writer);\n        }\n    }\n}\n","export { AbstractDynamicSnippetsGenerator } from \"./AbstractDynamicSnippetsGenerator.js\";\nexport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nexport { type DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nexport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nexport { type Options, Style } from \"./Options.js\";\nexport { Result } from \"./Result.js\";\nexport { Scope } from \"./Scope.js\";\nexport { type TypeInstance } from \"./TypeInstance.js\";\nexport { DynamicSnippetsTestRunner } from \"./test-utils/DynamicSnippetsTestRunner.js\";\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { AbstractAstNode } from \"../ast/index.js\";\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { AbstractEndpointSnippetGenerator } from \"./AbstractEndpointSnippetGenerator.js\";\nimport { Options } from \"./Options.js\";\nimport { Result } from \"./Result.js\";\n\nexport abstract class AbstractDynamicSnippetsGenerator<\n    Context extends AbstractDynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator extends AbstractEndpointSnippetGenerator<Context>\n> {\n    public constructor(public readonly context: Context) {}\n\n    protected abstract createSnippetGenerator(context: Context): EndpointSnippetGenerator;\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = await snippetGenerator.generateSnippet({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<AbstractAstNode> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        let lastError: Error | undefined = undefined;\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const ast = await snippetGenerator.generateSnippetAst({ endpoint, request, options });\n                return ast;\n            } catch (error) {\n                lastError = error as Error;\n            }\n        }\n        if (lastError != null) {\n            throw lastError;\n        }\n        throw new Error(\n            `Failed to generate snippet AST for endpoint: ${request.endpoint.method} ${request.endpoint.path}`\n        );\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = snippetGenerator.generateSnippetSync({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    /**\n     * Resolves endpoints based on the request and options.\n     * If an endpointId is specified in options, returns only that specific endpoint.\n     * Otherwise, resolves all endpoints matching the endpoint location (method + path).\n     */\n    private resolveEndpoints({\n        request,\n        options\n    }: {\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): FernIr.dynamic.Endpoint[] {\n        if (options.endpointId != null) {\n            const endpoint = this.context.resolveEndpointById(options.endpointId);\n            if (endpoint == null) {\n                throw new Error(`No endpoint found with ID \"${options.endpointId}\"`);\n            }\n            return [endpoint];\n        }\n        return this.context.resolveEndpointLocationOrThrow(request.endpoint);\n    }\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { ErrorReporter } from \"./ErrorReporter.js\";\n\nexport class Result {\n    public reporter: ErrorReporter | undefined;\n    public snippet: string | undefined;\n    public err: Error | undefined;\n\n    constructor() {\n        this.snippet = undefined;\n        this.reporter = undefined;\n        this.err = undefined;\n    }\n\n    public update({ context, snippet }: { context: AbstractDynamicSnippetsGeneratorContext; snippet: string }): void {\n        if (this.shouldUpdate({ snippet, reporter: context.errors })) {\n            this.reporter = context.errors.clone();\n            this.snippet = snippet;\n        }\n    }\n\n    public getResponseOrThrow({\n        endpoint\n    }: {\n        endpoint: FernIr.dynamic.EndpointLocation;\n    }): FernIr.dynamic.EndpointSnippetResponse {\n        if (this.snippet != null && this.reporter != null) {\n            return {\n                snippet: this.snippet,\n                errors: this.reporter.toDynamicSnippetErrors()\n            };\n        }\n        throw this.err ?? new Error(`Failed to generate snippet for endpoint \"${endpoint.method} ${endpoint.path}\"`);\n    }\n\n    private shouldUpdate({ snippet, reporter }: { snippet: string; reporter: ErrorReporter }): boolean {\n        if (this.reporter == null || (this.reporter.size() > 0 && reporter.size() === 0)) {\n            return true;\n        }\n        return snippet.length > (this.snippet?.length ?? 0);\n    }\n}\n","import { assertNever, keys } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { HttpEndpointReferenceParser } from \"@fern-api/fern-definition-schema\";\n\nimport { FernGeneratorExec } from \"../GeneratorNotificationService.js\";\nimport { DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nimport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nimport { Options } from \"./Options.js\";\nimport { TypeInstance } from \"./TypeInstance.js\";\n\nexport abstract class AbstractDynamicSnippetsGeneratorContext {\n    public config: FernGeneratorExec.GeneratorConfig;\n    public options: Options;\n    public errors: ErrorReporter;\n\n    private _ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    private httpEndpointReferenceParser: HttpEndpointReferenceParser;\n\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        this._ir = ir;\n        this.config = config;\n        this.options = options;\n        this.errors = new ErrorReporter();\n        this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n    }\n\n    public abstract clone(): AbstractDynamicSnippetsGeneratorContext;\n\n    public associateQueryParametersByWireValue({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    throw this.newParameterNotRecognizedError(key);\n                }\n                // If this query parameter supports allow-multiple, the user-provided values\n                // must be wrapped in an array.\n                const typeInstanceValue =\n                    this.isListTypeReference(parameter.typeReference) && !Array.isArray(value) ? [value] : value;\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value: typeInstanceValue\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    public associateByWireValueOrDefault({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            this.errors.scope(parameter.name.wireValue);\n            try {\n                let value = values[parameter.name.wireValue];\n\n                if (value == null) {\n                    if (parameter.typeReference.type === \"primitive\" && parameter.typeReference.value === \"STRING\") {\n                        // synthesize a parameter value for string parameters that are missing data\n                        value = `<${parameter.name.wireValue}>`;\n                    } else {\n                        this.errors.add({\n                            severity: Severity.Critical,\n                            message: this.newParameterNotRecognizedError(parameter.name.wireValue).message\n                        });\n                        continue;\n                    }\n                }\n\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n\n        return instances;\n    }\n\n    public associateByWireValue({\n        parameters,\n        values,\n        ignoreMissingParameters\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n        ignoreMissingParameters?: boolean;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    if (ignoreMissingParameters) {\n                        // Required for request payloads that include more information than\n                        // just the target parameters (e.g. union base properties).\n                        continue;\n                    }\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: this.newParameterNotRecognizedError(key).message\n                    });\n                    continue;\n                }\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    /**\n     * Similar to `associateByWireValue` but it builds TypeInstance objects by iterating over schema parameters rather\n     * than snippet values. Skips non-nullable parameters that are missing from the snippet object.\n     */\n    public getExampleObjectProperties({\n        parameters,\n        snippetObject\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        snippetObject: unknown;\n    }): TypeInstance[] {\n        const objectRecord = (\n            typeof snippetObject === \"object\" && snippetObject !== null && !Array.isArray(snippetObject)\n                ? snippetObject\n                : {}\n        ) as Record<string, unknown>;\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            const value = objectRecord[parameter.name.wireValue];\n            if (value == null) {\n                if (parameter.typeReference.type === \"nullable\") {\n                    instances.push({\n                        name: parameter.name,\n                        typeReference: parameter.typeReference,\n                        value: null\n                    });\n                }\n            } else {\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            }\n        }\n        return instances;\n    }\n\n    public getSingleFileValue({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): string | undefined {\n        const fileValue = record[property.wireValue];\n        if (fileValue == null) {\n            return undefined;\n        }\n        if (typeof fileValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file value to be a string, got ${typeof fileValue}`\n            });\n            return undefined;\n        }\n        return fileValue;\n    }\n\n    public getFileArrayValues({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): string[] | undefined {\n        const fileArrayValue = record[property.wireValue];\n        if (fileArrayValue == null) {\n            return undefined;\n        }\n        if (!Array.isArray(fileArrayValue)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file array value to be an array of strings, got ${typeof fileArrayValue}`\n            });\n            return undefined;\n        }\n        const stringValues: string[] = [];\n        for (const value of fileArrayValue) {\n            if (typeof value !== \"string\") {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message: `Expected file array value to be an array of strings, got ${typeof value}`\n                });\n                return undefined;\n            }\n            stringValues.push(value);\n        }\n        return stringValues;\n    }\n\n    public getRecord(value: unknown): Record<string, unknown> | undefined {\n        if (typeof value !== \"object\" || Array.isArray(value)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object with key, value pairs but got: ${\n                    Array.isArray(value) ? \"array\" : typeof value\n                }`\n            });\n            return undefined;\n        }\n        if (value == null) {\n            return {};\n        }\n        return value as Record<string, unknown>;\n    }\n\n    public resolveNamedType({ typeId }: { typeId: FernIr.dynamic.TypeId }): FernIr.dynamic.NamedType | undefined {\n        const namedType = this._ir.types[typeId];\n        if (namedType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Type identified by \"${typeId}\" could not be found`\n            });\n            return undefined;\n        }\n        return namedType;\n    }\n\n    public resolveDiscriminatedUnionTypeInstance({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): DiscriminatedUnionTypeInstance | undefined {\n        const record = this.getRecord(value);\n        if (record == null) {\n            return undefined;\n        }\n\n        const discriminantFieldName = discriminatedUnion.discriminant.wireValue;\n        const discriminantValue = record[discriminantFieldName];\n        if (discriminantValue == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newParameterNotRecognizedError(discriminantFieldName).message\n            });\n            return undefined;\n        }\n        if (typeof discriminantValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected discriminant value to be a string but got: ${typeof discriminantValue}`\n            });\n            return undefined;\n        }\n\n        const singleDiscriminatedUnionType = discriminatedUnion.types[discriminantValue];\n        if (singleDiscriminatedUnionType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `No type found for discriminant value \"${discriminantValue}\"`\n            });\n            return undefined;\n        }\n\n        // Remove the discriminant from the record so that the value is valid for the type.\n        const { [discriminantFieldName]: _, ...filtered } = record;\n\n        return {\n            singleDiscriminatedUnionType,\n            discriminantValue: singleDiscriminatedUnionType.discriminantValue,\n            value: filtered\n        };\n    }\n\n    public resolveEndpointOrThrow(rawEndpoint: string): FernIr.dynamic.Endpoint[] {\n        const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(rawEndpoint);\n        if (parsedEndpoint == null) {\n            throw new Error(`Failed to parse endpoint reference \"${rawEndpoint}\"`);\n        }\n        return this.resolveEndpointLocationOrThrow(parsedEndpoint);\n    }\n\n    public resolveEndpointLocation(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints: FernIr.dynamic.Endpoint[] = [];\n        for (const endpoint of Object.values(this._ir.endpoints)) {\n            if (this.parsedEndpointMatches({ endpoint, parsedEndpoint: location })) {\n                endpoints.push(endpoint);\n            }\n        }\n\n        return endpoints;\n    }\n\n    public resolveEndpointLocationOrThrow(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints = this.resolveEndpointLocation(location);\n        if (endpoints.length === 0) {\n            throw new Error(`Failed to find endpoint identified by \"${location.method} ${location.path}\"`);\n        }\n        return endpoints;\n    }\n\n    public resolveEndpointById(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint | undefined {\n        return this._ir.endpoints[endpointId];\n    }\n\n    public resolveEndpointByIdOrThrow(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint {\n        const endpoint = this.resolveEndpointById(endpointId);\n        if (endpoint == null) {\n            throw new Error(`Failed to find endpoint with ID \"${endpointId}\"`);\n        }\n        return endpoint;\n    }\n\n    public needsRequestParameter({\n        request,\n        inlinePathParameters,\n        inlineFileProperties\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n        inlineFileProperties: boolean;\n    }): boolean {\n        if (this.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n            return true;\n        }\n        if (request.queryParameters != null && request.queryParameters.length > 0) {\n            return true;\n        }\n        if (request.headers != null && request.headers.length > 0) {\n            return true;\n        }\n        if (request.body != null) {\n            return this.includeRequestBodyInWrappedRequest({ body: request.body, inlineFileProperties });\n        }\n        if (request.metadata?.onlyPathParameters) {\n            return false;\n        }\n        return true;\n    }\n\n    public includePathParametersInWrappedRequest({\n        request,\n        inlinePathParameters\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n    }): boolean {\n        return inlinePathParameters && (request.metadata?.includePathParameters ?? false);\n    }\n\n    public isFileUploadRequestBody(\n        body: FernIr.dynamic.InlinedRequestBody\n    ): body is FernIr.dynamic.InlinedRequestBody.FileUpload {\n        switch (body.type) {\n            case \"fileUpload\":\n                return true;\n            case \"properties\":\n            case \"referenced\":\n                return false;\n            default:\n                assertNever(body);\n        }\n    }\n\n    public resolveEnvironmentName(environmentID: string): FernIr.Name | undefined {\n        if (this._ir.environments == null) {\n            return undefined;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            case \"multipleBaseUrls\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            default:\n                assertNever(environments);\n        }\n    }\n\n    public isSingleEnvironmentID(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.EnvironmentId {\n        return typeof environment === \"string\";\n    }\n\n    public isMultiEnvironmentValues(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n        return typeof environment === \"object\";\n    }\n\n    public validateMultiEnvironmentUrlValues(\n        multiEnvironmentUrlValues: FernIr.dynamic.MultipleEnvironmentUrlValues\n    ): boolean {\n        if (this._ir.environments == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message:\n                    \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n            });\n            return false;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message:\n                        \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n                });\n                return false;\n            }\n            case \"multipleBaseUrls\": {\n                const firstEnvironment = environments.environments[0];\n                if (firstEnvironment == null) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Multiple environments are not supported; use the baseUrl option instead\"\n                    });\n                    return false;\n                }\n                const expectedKeys = new Set(keys(firstEnvironment.urls));\n                for (const key of keys(multiEnvironmentUrlValues)) {\n                    if (expectedKeys.has(key)) {\n                        expectedKeys.delete(key);\n                    }\n                }\n                if (expectedKeys.size > 0) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: `The provided environments are invalid; got: [${Object.keys(multiEnvironmentUrlValues).join(\", \")}], expected: [${keys(firstEnvironment.urls).join(\", \")}]`\n                    });\n                    return false;\n                }\n                return true;\n            }\n        }\n    }\n\n    public getValueAsNumber({ value }: { value: unknown }): number | undefined {\n        if (typeof value !== \"number\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"number\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsBoolean({ value }: { value: unknown }): boolean | undefined {\n        if (typeof value !== \"boolean\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"boolean\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsString({ value }: { value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"string\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return this.isOptional(typeReference.value);\n            case \"optional\":\n                return true;\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public isNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return true;\n            case \"optional\":\n                return this.isNullable(typeReference.value);\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public newAuthMismatchError({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): Error {\n        return new Error(`Expected auth type ${auth.type}, got ${values.type}`);\n    }\n\n    public newParameterNotRecognizedError(parameterName: string): Error {\n        return new Error(`\"${parameterName}\" is not a recognized parameter for this endpoint`);\n    }\n\n    public newTypeMismatchError({ expected, value }: { expected: string; value: unknown }): Error {\n        return new Error(`Expected ${expected}, got ${typeof value}`);\n    }\n\n    private includeRequestBodyInWrappedRequest({\n        body,\n        inlineFileProperties\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        switch (body.type) {\n            case \"properties\":\n            case \"referenced\":\n                return true;\n            case \"fileUpload\":\n                return this.includeFileUploadBodyInWrappedRequest({ fileUpload: body, inlineFileProperties });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private includeFileUploadBodyInWrappedRequest({\n        fileUpload,\n        inlineFileProperties\n    }: {\n        fileUpload: FernIr.dynamic.FileUploadRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        return (\n            this.fileUploadHasBodyProperties({ fileUpload }) ||\n            (inlineFileProperties && this.fileUploadHasFileProperties({ fileUpload }))\n        );\n    }\n\n    private fileUploadHasBodyProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return false;\n                case \"bodyProperty\":\n                    return true;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private fileUploadHasFileProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return true;\n                case \"bodyProperty\":\n                    return false;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private isListTypeReference(typeReference: FernIr.dynamic.TypeReference): boolean {\n        if (typeReference.type === \"optional\") {\n            return this.isListTypeReference(typeReference.value);\n        }\n        return typeReference.type === \"list\" || typeReference.type === \"set\";\n    }\n\n    private parsedEndpointMatches({\n        endpoint,\n        parsedEndpoint\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        parsedEndpoint: { method: string; path: string; namespace?: string };\n    }): boolean {\n        return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n    }\n}\n","export { EXAMPLE_REFERENCE_PREFIX, YAML_SCHEMA_VERSION } from \"./constants.js\";\nexport { type NodePath, type NodePathItem } from \"./NodePath.js\";\nexport * as RawSchemas from \"./schemas/index.js\";\nexport { type DefinitionFileSchema, type PackageMarkerFileSchema, type RootApiFileSchema } from \"./schemas/index.js\";\nexport * from \"./utils/auth/index.js\";\nexport * from \"./utils/generics/index.js\";\nexport { getRequestBody } from \"./utils/getRequestBody.js\";\nexport { getResponseBodyType } from \"./utils/getResponseBodyType.js\";\nexport { HttpEndpointReferenceParser } from \"./utils/HttpEndpointReferenceParser.js\";\nexport { isInlineRequestBody } from \"./utils/isInlineRequestBody.js\";\nexport { isOpenApiSourceSchema } from \"./utils/isOpenApiSourceSchema.js\";\nexport { isRawProtobufSourceSchema } from \"./utils/isRawProtobufSourceSchema.js\";\nexport { isRawTextType } from \"./utils/isRawTextType.js\";\nexport { type BytesRequest, parseBytesRequest } from \"./utils/parseBytesRequest.js\";\nexport { parseFileUploadRequest, type RawFileUploadRequest } from \"./utils/parseFileUploadRequest.js\";\nexport { parseRawBytesType, type RawBytesType } from \"./utils/parseRawBytesType.js\";\nexport { parseRawFileType, type RawFileType } from \"./utils/parseRawFileType.js\";\nexport { parseRawTextType, type RawTextType } from \"./utils/parseRawTextType.js\";\nexport { RawPrimitiveType } from \"./utils/RawPrimitiveType.js\";\nexport { recursivelyVisitRawTypeReference } from \"./utils/recursivelyVisitRawTypeReference.js\";\nexport { visitExampleCodeSampleSchema } from \"./utils/visitExampleCodeSampleSchema.js\";\nexport { type ExampleResponseSchemaVisitor, visitExampleResponseSchema } from \"./utils/visitExampleResponseSchema.js\";\nexport {\n    isAnyAuthSchemes,\n    isSingleAuthScheme,\n    type RawApiAuthVisitor,\n    visitRawApiAuth\n} from \"./utils/visitRawApiAuth.js\";\nexport {\n    type AuthSchemeDeclarationVisitor,\n    isHeaderAuthScheme,\n    visitRawAuthSchemeDeclaration\n} from \"./utils/visitRawAuthSchemeDeclaration.js\";\nexport {\n    isRawMultipleBaseUrlsEnvironment,\n    isRawSingleBaseUrlEnvironment,\n    visitRawEnvironmentDeclaration\n} from \"./utils/visitRawEnvironmentDeclaration.js\";\nexport {\n    isVariablePathParameter,\n    type PathParameterDeclarationVisitor,\n    visitRawPathParameter\n} from \"./utils/visitRawPathParameter.js\";\nexport {\n    isRawAliasDefinition,\n    isRawDiscriminatedUnionDefinition,\n    isRawEnumDefinition,\n    isRawObjectDefinition,\n    isRawUndiscriminatedUnionDefinition,\n    type RawTypeDeclarationVisitor,\n    visitRawTypeDeclaration\n} from \"./utils/visitRawTypeDeclaration.js\";\nexport { FernContainerRegex, visitRawTypeReference } from \"./utils/visitRawTypeReference.js\";\n","export declare namespace HttpEndpointReferenceParser {\n    interface Parsed {\n        path: string;\n        method: Method;\n        namespace: string | undefined;\n    }\n\n    type Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\";\n\n    export type ValidationResult = Valid | Invalid;\n\n    interface Valid {\n        type: \"valid\";\n    }\n\n    interface Invalid {\n        type: \"invalid\";\n    }\n}\n\n/**\n * Parses an HTTP endpoint reference like `POST /users/get` or `namespace::POST /users/get`\n */\nexport class HttpEndpointReferenceParser {\n    //eslint-disable-next-line\n    private REFERENCE_REGEX = /^(?:(\\w+)::)?(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n\n    public validate(reference: string): HttpEndpointReferenceParser.ValidationResult {\n        const validFormat = this.REFERENCE_REGEX.test(reference);\n        if (!validFormat) {\n            return { type: \"invalid\" };\n        }\n        return { type: \"valid\" };\n    }\n\n    public tryParse(reference: string): HttpEndpointReferenceParser.Parsed | undefined {\n        const validationResponse = this.validate(reference);\n        if (validationResponse.type === \"invalid\") {\n            return undefined;\n        }\n        const match = reference.match(this.REFERENCE_REGEX);\n        if (match == null || match[2] == null || match[3] == null) {\n            return undefined;\n        }\n        return {\n            namespace: match[1], // undefined if no namespace prefix\n            method: match[2] as HttpEndpointReferenceParser.Method,\n            path: match[3]\n        };\n    }\n}\n","export const Severity = {\n    Critical: \"CRITICAL\",\n    Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n    type Path = readonly PathItem[];\n\n    type PathItem = string | ArrayPathItem;\n\n    type Severity = (typeof Severity)[keyof typeof Severity];\n\n    interface ArrayPathItem {\n        index: number;\n    }\n\n    interface Error {\n        path?: Path;\n        severity: Severity;\n        message: string;\n    }\n}\n\ninterface Error_ {\n    severity: \"CRITICAL\" | \"WARNING\";\n    path: string[] | undefined;\n    message: string;\n}\n\nexport class ErrorReporter {\n    private errors: ErrorReporter.Error[];\n    private path: ErrorReporter.PathItem[];\n\n    constructor() {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n        this.errors.push({\n            ...err,\n            path: [...this.path]\n        });\n    }\n\n    public scope(path: ErrorReporter.PathItem): void {\n        this.path.push(path);\n    }\n\n    public unscope(): void {\n        this.path.pop();\n    }\n\n    public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n        return this.errors.filter((err) => err.severity === severity);\n    }\n\n    public empty(): boolean {\n        return this.errors.length === 0;\n    }\n\n    public size(): number {\n        return this.errors.length;\n    }\n\n    public truncate(size: number): void {\n        this.errors.length = size;\n    }\n\n    public clone(): ErrorReporter {\n        const clone = new ErrorReporter();\n        clone.errors = [...this.errors];\n        clone.path = [...this.path];\n        return clone;\n    }\n\n    public reset(): void {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public toDynamicSnippetErrors(): Error_[] {\n        return this.errors.map((err) => ({\n            severity: err.severity,\n            path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n            message: err.message\n        }));\n    }\n\n    private pathToStringArray(path: ErrorReporter.Path): string[] {\n        const result: string[] = [];\n        for (const item of path) {\n            if (typeof item === \"string\") {\n                result.push(item);\n                continue;\n            }\n            result[result.length - 1] += `[${item.index}]`;\n        }\n        return result;\n    }\n}\n","export const Scope = {\n    PathParameters: \"pathParameters\",\n    QueryParameters: \"queryParameters\",\n    Headers: \"headers\",\n    RequestBody: \"requestBody\"\n} as const;\n\nexport type Scope = (typeof Scope)[keyof typeof Scope];\n","import {\n    AbstractDynamicSnippetsGeneratorContext,\n    FernGeneratorExec\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { python } from \"@fern-api/python-ast\";\nimport { BasePythonCustomConfigSchema } from \"@fern-api/python-browser-compatible-base\";\nimport { camelCase, snakeCase } from \"lodash-es\";\n\nimport { DynamicTypeLiteralMapper } from \"./DynamicTypeLiteralMapper.js\";\nimport { FilePropertyMapper } from \"./FilePropertyMapper.js\";\n\nconst ALLOWED_RESERVED_METHOD_NAMES = [\"list\", \"set\"];\n\nexport class DynamicSnippetsGeneratorContext extends AbstractDynamicSnippetsGeneratorContext {\n    public ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    public customConfig: BasePythonCustomConfigSchema;\n    public dynamicTypeLiteralMapper: DynamicTypeLiteralMapper;\n    public filePropertyMapper: FilePropertyMapper;\n\n    constructor({\n        ir,\n        config\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n    }) {\n        super({ ir, config });\n        this.ir = ir;\n        this.customConfig = (config.customConfig ?? {}) as BasePythonCustomConfigSchema;\n        this.dynamicTypeLiteralMapper = new DynamicTypeLiteralMapper({ context: this });\n        this.filePropertyMapper = new FilePropertyMapper({ context: this });\n    }\n\n    public clone(): DynamicSnippetsGeneratorContext {\n        return new DynamicSnippetsGeneratorContext({\n            ir: this.ir,\n            config: this.config\n        });\n    }\n\n    public getClassName(name: FernIr.Name): string {\n        const result = name.pascalCase.safeName;\n        const rootClientName = this.getRootClientClassName();\n        if (result === rootClientName) {\n            return `${rootClientName}Model`;\n        }\n        return result;\n    }\n\n    public getTypedDictClassName(name: FernIr.Name): string {\n        return `${this.getClassName(name)}Params`;\n    }\n\n    public getPropertyName(name: FernIr.Name): string {\n        const snakeCase = name.snakeCase.safeName;\n        if (snakeCase.startsWith(\"_\")) {\n            // These are public fields so they should not start with an underscore.\n            //\n            // The Fern CLI will automatically add the underscore in the beginning for\n            // fields that start with a number so we actually expect some public fields\n            // to start with an underscore that we need to strip.\n            //\n            // This isn't just nice to have, Pydantic V2 also disallows underscore prefixes\n            // and Python also does not allow fields to start with a number, so we need a\n            // new prefix.\n            return \"f_\" + snakeCase.substring(snakeCase.lastIndexOf(\"_\") + 1);\n        }\n        return snakeCase;\n    }\n\n    public getMethodName(name: FernIr.Name): string {\n        if (ALLOWED_RESERVED_METHOD_NAMES.includes(name.snakeCase.unsafeName)) {\n            return name.snakeCase.unsafeName;\n        }\n        return name.snakeCase.safeName;\n    }\n\n    public getRootClientClassReference(): python.Reference {\n        return python.reference({\n            name: this.getRootClientClassName(),\n            modulePath: this.getRootModulePath()\n        });\n    }\n\n    public getTypeClassReference(declaration: FernIr.dynamic.Declaration): python.Reference {\n        const className = this.getClassName(declaration.name);\n        const modulePath = [\n            ...this.getRootModulePath(),\n            ...declaration.fernFilepath.allParts.map((part) => part.snakeCase.safeName)\n        ];\n        return python.reference({ name: className, modulePath });\n    }\n\n    public useTypedDictRequests(): boolean {\n        return this.customConfig.use_typeddict_requests === true;\n    }\n\n    public getRootClientClassName(): string {\n        if (this.customConfig.client?.exported_class_name != null) {\n            return this.customConfig.client.exported_class_name;\n        }\n        if (this.customConfig.client_class_name != null) {\n            return this.customConfig.client_class_name;\n        }\n        if (this.customConfig.client?.class_name != null) {\n            return this.customConfig.client.class_name;\n        }\n        return this.pascalCase(this.config.organization) + this.pascalCase(this.config.workspaceName);\n    }\n\n    public getEnvironmentClassName(): string {\n        return `${this.getRootClientClassName()}Environment`;\n    }\n\n    public getEnvironmentTypeReferenceFromID(environmentID: string): python.AstNode | undefined {\n        const environmentName = this.resolveEnvironmentName(environmentID);\n        if (environmentName == null) {\n            return undefined;\n        }\n        return python.accessAttribute({\n            lhs: this.getEnvironmentClassReference(),\n            rhs: python.codeBlock(this.getEnvironmentEnumName(environmentName))\n        });\n    }\n\n    public getEnvironmentClassReference(): python.Reference {\n        return python.reference({\n            name: this.getEnvironmentClassName(),\n            modulePath: this.getEnvironmentModulePath()\n        });\n    }\n\n    public getEnvironmentEnumName(name: FernIr.Name): string {\n        return name.screamingSnakeCase.safeName;\n    }\n\n    public isPrimitive(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"primitive\":\n                return true;\n            case \"optional\":\n            case \"nullable\":\n                return this.isPrimitive(typeReference.value);\n            case \"named\": {\n                const named = this.resolveNamedType({ typeId: typeReference.value });\n                if (named == null) {\n                    return false;\n                }\n                switch (named.type) {\n                    case \"alias\":\n                        return this.isPrimitive(named.typeReference);\n                    case \"discriminatedUnion\":\n                    case \"undiscriminatedUnion\":\n                    case \"object\":\n                    case \"enum\":\n                        return false;\n                    default:\n                        assertNever(named);\n                }\n                break;\n            }\n            case \"list\":\n            case \"set\":\n            case \"map\":\n            case \"literal\":\n            case \"unknown\":\n                return false;\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    public getFileFromString(content: string): python.TypeInstantiation {\n        return python.TypeInstantiation.str(content);\n    }\n\n    public getRootModulePath(): string[] {\n        if (this.customConfig.package_name != null) {\n            return [this.customConfig.package_name];\n        }\n        const cleanOrganizationName = this.cleanOrganizationName();\n        if (this.customConfig.use_api_name_in_package) {\n            return [cleanOrganizationName, this.getApiName()];\n        }\n        return [cleanOrganizationName];\n    }\n\n    public getCoreModulePath(): string[] {\n        return this.getRootModulePath().concat(\"core\");\n    }\n\n    public getEnvironmentModulePath(): string[] {\n        return this.getRootModulePath().concat(\"environment\");\n    }\n\n    public shouldInlinePathParameters(): boolean {\n        // TODO: Update this when inline_path_parameters is supported.\n        return true;\n    }\n\n    private cleanOrganizationName(): string {\n        return this.config.organization.replace(/[^a-zA-Z0-9]/g, \"_\");\n    }\n\n    private getApiName(): string {\n        return snakeCase(this.config.workspaceName);\n    }\n\n    private pascalCase(name: string): string {\n        const value = camelCase(name);\n        return value.charAt(0).toUpperCase() + value.slice(1);\n    }\n}\n","export * as python from \"./python.js\";\n","import { AccessAttribute } from \"./AccessAttribute.js\";\nimport { Assign } from \"./Assign.js\";\nimport { BaseInvocation } from \"./BaseInvocation.js\";\nimport { Class } from \"./Class.js\";\nimport { ClassInstantiation } from \"./ClassInstantiation.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { Comment } from \"./Comment.js\";\nimport { Decorator } from \"./Decorator.js\";\nimport { Field } from \"./Field.js\";\nimport { Lambda } from \"./Lambda.js\";\nimport { LambdaParameter } from \"./LambdaParameter.js\";\nimport { Method } from \"./Method.js\";\nimport { MethodArgument } from \"./MethodArgument.js\";\nimport { MethodInvocation } from \"./MethodInvocation.js\";\nimport { Operator } from \"./Operator.js\";\nimport { Parameter } from \"./Parameter.js\";\nimport { PythonFile } from \"./PythonFile.js\";\nimport { Reference } from \"./Reference.js\";\nimport { StarImport } from \"./StarImport.js\";\n\nexport { AccessAttribute } from \"./AccessAttribute.js\";\nexport { Class } from \"./Class.js\";\nexport { ClassInstantiation } from \"./ClassInstantiation.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Comment } from \"./Comment.js\";\nexport { AstNode } from \"./core/AstNode.js\";\nexport { Decorator } from \"./Decorator.js\";\nexport { Field } from \"./Field.js\";\nexport { Lambda } from \"./Lambda.js\";\nexport { LambdaParameter } from \"./LambdaParameter.js\";\nexport { Method } from \"./Method.js\";\nexport { MethodArgument } from \"./MethodArgument.js\";\nexport { MethodInvocation } from \"./MethodInvocation.js\";\nexport { ModuleImport } from \"./ModuleImport.js\";\nexport { Operator } from \"./Operator.js\";\nexport { Parameter } from \"./Parameter.js\";\nexport { PythonFile } from \"./PythonFile.js\";\nexport { Reference } from \"./Reference.js\";\nexport { StarImport } from \"./StarImport.js\";\nexport { Type } from \"./Type.js\";\nexport { type NamedValue, TypeInstantiation } from \"./TypeInstantiation.js\";\n\nexport function accessAttribute(args: AccessAttribute.Args): AccessAttribute {\n    return new AccessAttribute(args);\n}\n\nexport function assign(args: Assign.Args): Assign {\n    return new Assign(args);\n}\n\nexport function file(args: PythonFile.Args): PythonFile {\n    return new PythonFile(args);\n}\n\nexport function class_(args: Class.Args): Class {\n    return new Class(args);\n}\n\nexport function instantiateClass(args: ClassInstantiation.Args): ClassInstantiation {\n    return new ClassInstantiation(args);\n}\n\nexport function decorator(args: Decorator.Args): Decorator {\n    return new Decorator(args);\n}\n\nexport function reference(args: Reference.Args): Reference {\n    return new Reference(args);\n}\n\nexport function starImport(args: StarImport.Args): StarImport {\n    return new StarImport(args);\n}\n\nexport function field(args: Field.Args): Field {\n    return new Field(args);\n}\n\nexport function codeBlock(args: CodeBlock.Arg): CodeBlock {\n    return new CodeBlock(args);\n}\n\nexport function comment(args: Comment.Args): Comment {\n    return new Comment(args);\n}\n\nexport function lambda(args: Lambda.Args): Lambda {\n    return new Lambda(args);\n}\n\nexport function lambdaParameter(args: LambdaParameter.Args): LambdaParameter {\n    return new LambdaParameter(args);\n}\n\nexport function method(args: Method.Args): Method {\n    return new Method(args);\n}\n\nexport function invokeFunction(args: BaseInvocation.Args): BaseInvocation {\n    return new BaseInvocation(args);\n}\n\nexport function invokeMethod(args: MethodInvocation.Args): MethodInvocation {\n    return new MethodInvocation(args);\n}\n\nexport function parameter(args: Parameter.Args): Parameter {\n    return new Parameter(args);\n}\n\nexport function methodArgument(args: MethodArgument.Args): MethodArgument {\n    return new MethodArgument(args);\n}\n\nexport function operator(args: Operator.Args): Operator {\n    return new Operator(args);\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace AccessAttribute {\n    interface Args {\n        lhs: AstNode;\n        rhs: AstNode;\n    }\n}\n\nexport class AccessAttribute extends AstNode {\n    private readonly lhs: AstNode;\n    private readonly rhs: AstNode;\n\n    constructor({ lhs, rhs }: AccessAttribute.Args) {\n        super();\n\n        this.lhs = lhs;\n        this.inheritReferences(lhs);\n\n        this.rhs = rhs;\n        this.inheritReferences(rhs);\n    }\n\n    public write(writer: Writer): void {\n        this.lhs.write(writer);\n        writer.write(\".\");\n        this.rhs.write(writer);\n    }\n}\n","import { AbstractAstNode, AbstractFormatter } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { Reference } from \"../Reference.js\";\nimport { Writer } from \"./Writer.js\";\n\nexport abstract class AstNode extends AbstractAstNode {\n    protected references: Reference[] = [];\n\n    public addReference(reference: Reference): void {\n        this.references.push(reference);\n    }\n\n    public inheritReferences(astNode: AstNode | undefined): void {\n        if (astNode === undefined) {\n            return;\n        }\n\n        astNode.references.forEach((reference) => {\n            if (!this.references.includes(reference)) {\n                this.addReference(reference);\n            }\n        });\n    }\n\n    public getReferences(): Reference[] {\n        return this.references;\n    }\n\n    /**\n     * Writes the node to a string.\n     */\n    public toString(): string {\n        const writer = new Writer();\n        this.write(writer);\n        return writer.toString();\n    }\n\n    /**\n     * Writes the node to a string and formats it.\n     */\n    public async toStringFormatted(formatter: AbstractFormatter): Promise<string> {\n        const writer = new Writer();\n        this.write(writer);\n        return writer.toStringFormatted(formatter);\n    }\n}\n","import { AbstractFormatter, AbstractWriter } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { Reference } from \"../Reference.js\";\nimport { ImportedName } from \"./types.js\";\n\nexport class Writer extends AbstractWriter {\n    private fullyQualifiedModulePathsToImportedNames: Record<string, ImportedName> = {};\n\n    public setRefNameOverrides(completeRefPathsToNameOverrides: Record<string, ImportedName>): void {\n        this.fullyQualifiedModulePathsToImportedNames = completeRefPathsToNameOverrides;\n    }\n\n    public unsetRefNameOverrides(): void {\n        this.fullyQualifiedModulePathsToImportedNames = {};\n    }\n\n    public getRefNameOverride(reference: Reference): ImportedName {\n        const explicitNameOverride =\n            this.fullyQualifiedModulePathsToImportedNames[reference.getFullyQualifiedModulePath()];\n\n        if (explicitNameOverride) {\n            return explicitNameOverride;\n        }\n\n        return { name: reference.alias ?? reference.name, isAlias: !!reference.alias };\n    }\n\n    public toString(): string {\n        return this.buffer;\n    }\n\n    public async toStringFormatted(formatter: AbstractFormatter): Promise<string> {\n        return formatter.format(this.buffer);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Assign {\n    interface Args {\n        lhs: AstNode;\n        rhs: AstNode;\n    }\n}\n\nexport class Assign extends AstNode {\n    private readonly lhs: AstNode;\n    private readonly rhs: AstNode;\n\n    constructor({ lhs, rhs }: Assign.Args) {\n        super();\n\n        this.lhs = lhs;\n        this.inheritReferences(lhs);\n\n        this.rhs = rhs;\n        this.inheritReferences(rhs);\n    }\n\n    public write(writer: Writer): void {\n        this.lhs.write(writer);\n        writer.write(\" = \");\n        this.rhs.write(writer);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { MethodArgument } from \"./MethodArgument.js\";\nimport { Reference } from \"./Reference.js\";\n\nexport declare namespace BaseInvocation {\n    interface Args {\n        /* A reference to the callable that you'd like to invoke */\n        reference: Reference;\n        /* The arguments to pass to the method */\n        arguments_: MethodArgument[];\n        /* Whether to write the invocation on a new line */\n        multiline?: boolean;\n    }\n}\n\nexport class BaseInvocation extends AstNode {\n    protected reference: Reference;\n    private arguments: MethodArgument[];\n    private multiline: boolean;\n\n    constructor({ reference, arguments_, multiline }: BaseInvocation.Args) {\n        super();\n\n        this.reference = reference;\n        this.arguments = arguments_;\n        this.multiline = multiline ?? false;\n\n        this.inheritReferences(reference);\n        this.arguments.forEach((arg) => {\n            this.inheritReferences(arg);\n        });\n    }\n\n    public write(writer: Writer): void {\n        this.reference.write(writer);\n\n        if (this.arguments.length === 0) {\n            writer.write(\"()\");\n            return;\n        }\n\n        writer.write(\"(\");\n        if (this.multiline) {\n            writer.newLine();\n            writer.indent();\n        }\n        this.arguments.forEach((arg, idx) => {\n            arg.write(writer);\n            if (idx < this.arguments.length - 1) {\n                writer.write(\",\");\n                if (this.multiline) {\n                    writer.newLine();\n                } else {\n                    writer.write(\" \");\n                }\n            } else if (this.multiline) {\n                writer.write(\",\");\n            }\n        });\n        if (this.multiline) {\n            writer.newLine();\n            writer.dedent();\n        }\n        writer.write(\")\");\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Decorator } from \"./Decorator.js\";\nimport { Field } from \"./Field.js\";\nimport { Reference } from \"./Reference.js\";\n\nexport declare namespace Class {\n    interface Args {\n        /* The name of the Python class */\n        name: string;\n        /* Documentation string for the class */\n        docs?: string;\n        /* The parent classes that this class inherits from */\n        extends_?: Reference[];\n        /* The decorators that should be applied to this class */\n        decorators?: Decorator[];\n    }\n}\n\nexport class Class extends AstNode {\n    public readonly name: string;\n    public readonly extends_: Reference[];\n    public readonly decorators: Decorator[];\n    public readonly fields: Field[] = [];\n    public readonly docs?: string;\n    private statements: AstNode[] = [];\n\n    constructor({ docs, name, extends_, decorators }: Class.Args) {\n        super();\n        this.name = name;\n        this.extends_ = extends_ ?? [];\n        this.decorators = decorators ?? [];\n        this.docs = docs;\n\n        this.extends_.forEach((parentClassReference) => {\n            this.inheritReferences(parentClassReference);\n        });\n\n        this.decorators.forEach((decorator) => {\n            this.inheritReferences(decorator);\n        });\n    }\n\n    public write(writer: Writer): void {\n        this.decorators.forEach((decorator) => {\n            decorator.write(writer);\n        });\n\n        writer.write(`class ${this.name}`);\n\n        if (this.extends_.length > 0) {\n            writer.write(\"(\");\n            this.extends_.forEach((parentClassReference, index) => {\n                if (index > 0) {\n                    writer.write(\", \");\n                }\n                parentClassReference.write(writer);\n            });\n            writer.write(\")\");\n        }\n        writer.write(\":\");\n        writer.newLine();\n\n        writer.indent();\n        if (this.docs != null) {\n            writer.write('\"\"\"');\n            writer.write(this.docs);\n            writer.write('\"\"\"');\n        }\n        writer.writeNewLineIfLastLineNot();\n\n        this.fields.forEach((field) => {\n            field.write(writer);\n            writer.writeNewLineIfLastLineNot();\n        });\n        writer.dedent();\n\n        writer.indent();\n        if (this.statements.length) {\n            this.writeStatements({ writer });\n        } else {\n            writer.write(\"pass\");\n        }\n        writer.dedent();\n    }\n\n    public add(statement: AstNode): void {\n        this.statements.push(statement);\n        this.inheritReferences(statement);\n    }\n\n    private writeStatements({ writer }: { writer: Writer }): void {\n        this.statements.forEach((statement, index) => {\n            statement.write(writer);\n            writer.writeNewLineIfLastLineNot();\n        });\n    }\n\n    public addField(field: Field): void {\n        this.add(field);\n    }\n}\n","import { BaseInvocation } from \"./BaseInvocation.js\";\nimport { Reference } from \"./Reference.js\";\n\nexport declare namespace ClassInstantiation {\n    interface Args extends Omit<BaseInvocation.Args, \"reference\"> {\n        /* A reference to the class that you'd like to instantiate */\n        classReference: Reference;\n    }\n}\n\nexport class ClassInstantiation extends BaseInvocation {\n    constructor({ classReference, ...args }: ClassInstantiation.Args) {\n        super({ reference: classReference, ...args });\n    }\n}\n","import { CodeBlock as CommonCodeBlock } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg = CommonCodeBlock.Arg<Writer>;\n}\n\nexport class CodeBlock extends AstNode {\n    private arg: CodeBlock.Arg;\n\n    public constructor(arg: CodeBlock.Arg) {\n        super();\n        this.arg = arg;\n    }\n\n    public write(writer: Writer): void {\n        const commonCodeBlock = new CommonCodeBlock(this.arg);\n        return commonCodeBlock.write(writer);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Comment {\n    interface Args {\n        /* The comment documentation, if any */\n        docs?: string;\n    }\n}\n\nexport class Comment extends AstNode {\n    public readonly docs: string | undefined;\n\n    public constructor({ docs }: Comment.Args) {\n        super();\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.split(\"\\n\").forEach((line) => {\n                writer.writeLine(`# ${line}`);\n            });\n        }\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Decorator {\n    interface Args {\n        callable: AstNode;\n    }\n}\n\nexport class Decorator extends AstNode {\n    private callable: AstNode;\n\n    constructor({ callable }: Decorator.Args) {\n        super();\n        this.callable = callable;\n        this.inheritReferences(callable);\n    }\n\n    public write(writer: Writer): void {\n        writer.write(\"@\");\n        this.callable.write(writer);\n        writer.newLine();\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Field {\n    export interface BaseArgs {\n        /* The name of the field */\n        name: string;\n        /* The documentation for the field */\n        docs?: string;\n    }\n\n    /* At least one of type or initializer must be defined\n     * type: The type annotation of the field\n     * initializer: The initializer for the field\n     */\n    export type Args = BaseArgs &\n        (\n            | { type: Type; initializer?: AstNode }\n            | { type?: Type; initializer: AstNode }\n            | { type: Type; initializer: AstNode }\n        );\n}\n\nexport class Field extends AstNode {\n    public readonly name: string;\n    public readonly type: Type | undefined;\n    public readonly initializer: AstNode | undefined;\n    public readonly docs: string | undefined;\n\n    constructor({ name, type, initializer, docs }: Field.Args) {\n        super();\n        this.name = name;\n        this.type = type;\n        this.initializer = initializer;\n        this.docs = docs;\n\n        this.inheritReferences(this.type);\n        this.inheritReferences(this.initializer);\n    }\n\n    public write(writer: Writer): void {\n        writer.write(this.name);\n\n        if (this.type !== undefined) {\n            writer.write(\": \");\n            this.type.write(writer);\n        }\n\n        if (this.initializer !== undefined) {\n            writer.write(\" = \");\n            this.initializer.write(writer);\n        }\n\n        if (this.docs != null) {\n            writer.newLine();\n            writer.write('\"\"\"');\n            writer.newLine();\n            writer.write(this.docs);\n            writer.newLine();\n            writer.write('\"\"\"');\n        }\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { LambdaParameter } from \"./LambdaParameter.js\";\n\nexport declare namespace Lambda {\n    interface Args {\n        /* The parameter names of the lambda */\n        parameters?: LambdaParameter[];\n        /* The body of the lambda */\n        body: AstNode;\n    }\n}\n\nexport class Lambda extends AstNode {\n    private readonly parameters: LambdaParameter[];\n    private readonly body: AstNode;\n\n    constructor({ parameters, body }: Lambda.Args) {\n        super();\n        this.parameters = parameters ?? [];\n        this.body = body;\n\n        this.inheritReferences(body);\n    }\n\n    public write(writer: Writer): void {\n        writer.write(\"lambda\");\n\n        if (this.parameters && this.parameters.length) {\n            writer.write(\" \");\n            this.parameters.forEach((param, index) => {\n                param.write(writer);\n                if (index < this.parameters.length - 1) {\n                    writer.write(\", \");\n                }\n            });\n        }\n        writer.write(\": \");\n        this.body.write(writer);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Parameter } from \"./Parameter.js\";\n\nexport declare namespace LambdaParameter {\n    interface Args {\n        /* The name of the parameter */\n        name: string;\n        /* The initializer for the parameter */\n        initializer?: AstNode;\n    }\n}\n\nexport class LambdaParameter extends Parameter {\n    constructor({ name, initializer }: LambdaParameter.Args) {\n        super({ name, initializer, type: undefined });\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Parameter {\n    interface Args {\n        /* The name of the parameter */\n        name: string;\n        /* The type of the parameter. Set to undefined if you explicitly do not want a type hint. */\n        type: Type | undefined;\n        /* The initializer for the parameter */\n        initializer?: AstNode;\n    }\n}\n\nexport class Parameter extends AstNode {\n    public readonly name: string;\n    public readonly initializer: AstNode | undefined;\n    public readonly type: Type | undefined;\n\n    constructor({ name, type, initializer }: Parameter.Args) {\n        super();\n        this.name = name;\n        this.type = type;\n        this.initializer = initializer;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(this.name);\n\n        if (this.type) {\n            writer.write(\": \");\n            this.type.write(writer);\n        }\n\n        if (this.initializer !== undefined) {\n            writer.write(\" = \");\n            this.initializer.write(writer);\n        }\n    }\n}\n","import { CodeBlock } from \"./CodeBlock.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Decorator } from \"./Decorator.js\";\nimport { python } from \"./index.js\";\nimport { Parameter } from \"./Parameter.js\";\nimport { Type } from \"./Type.js\";\n\nexport enum ClassMethodType {\n    STATIC,\n    INSTANCE,\n    CLASS\n}\n\nexport declare namespace Method {\n    interface Args {\n        /* The name of the method */\n        name: string;\n        /* The parameters of the method */\n        parameters?: Parameter[];\n        /* The return type of the method */\n        return_?: Type;\n        /* The docstring for the method */\n        docstring?: string;\n        /* The type of the method if defined within the context of a class */\n        type?: ClassMethodType;\n        /* Whether the method is a static method */\n        static_?: boolean;\n        /* The decorators that should be applied to this method */\n        decorators?: Decorator[];\n    }\n}\n\nexport class Method extends AstNode {\n    public readonly name: string;\n    public readonly return: Type | undefined;\n    public readonly docstring: string | undefined;\n    public readonly type: ClassMethodType | undefined;\n    private readonly parameters: Parameter[];\n    private readonly decorators: Decorator[];\n    private readonly statements: AstNode[] = [];\n    private readonly static_: boolean;\n\n    constructor({ static_, name, parameters, return_, docstring, type, decorators }: Method.Args) {\n        super();\n        this.name = name;\n        this.parameters = parameters ?? [];\n        this.return = return_;\n        this.docstring = docstring;\n        this.type = type;\n        this.decorators = decorators ?? [];\n        this.static_ = static_ ?? false;\n\n        this.parameters.forEach((parameter) => {\n            this.inheritReferences(parameter);\n        });\n\n        this.inheritReferences(this.return);\n\n        this.decorators.forEach((decorator) => {\n            this.inheritReferences(decorator);\n        });\n\n        this.statements.forEach((statements) => {\n            this.inheritReferences(statements);\n        });\n    }\n\n    public addStatement(statement: AstNode): void {\n        this.statements.push(statement);\n        this.inheritReferences(statement);\n    }\n\n    public write(writer: Writer): void {\n        if (this.static_) {\n            this.decorators.push(\n                python.decorator({\n                    callable: python.codeBlock(\"staticmethod\")\n                })\n            );\n        }\n\n        // Write decorators\n        this.decorators.forEach((decorator) => {\n            decorator.write(writer);\n        });\n\n        if (this.type === ClassMethodType.CLASS) {\n            python\n                .decorator({\n                    callable: new CodeBlock(\"classmethod\")\n                })\n                .write(writer);\n        } else if (this.type === ClassMethodType.STATIC) {\n            python\n                .decorator({\n                    callable: new CodeBlock(\"staticmethod\")\n                })\n                .write(writer);\n        }\n\n        // Write method signature\n        writer.write(`def ${this.name}(`);\n\n        const totalParams = this.parameters.length;\n        const useMultiline = totalParams > 3;\n\n        if (useMultiline) {\n            writer.newLine();\n            writer.indent();\n        }\n\n        if (this.type === ClassMethodType.INSTANCE) {\n            writer.write(\"self\");\n            if (this.parameters.length > 0) {\n                writer.write(useMultiline ? \",\" : \", \");\n                if (useMultiline) {\n                    writer.newLine();\n                }\n            }\n        } else if (this.type === ClassMethodType.CLASS) {\n            writer.write(\"cls\");\n            if (this.parameters.length > 0) {\n                writer.write(useMultiline ? \",\" : \", \");\n                if (useMultiline) {\n                    writer.newLine();\n                }\n            }\n        }\n        this.parameters.forEach((param, index) => {\n            param.write(writer);\n            if (index < this.parameters.length - 1) {\n                writer.write(useMultiline ? \",\" : \", \");\n                if (useMultiline) {\n                    writer.newLine();\n                }\n            }\n        });\n\n        if (useMultiline) {\n            writer.write(\",\");\n            writer.dedent();\n            writer.newLine();\n        }\n\n        writer.write(\")\");\n\n        // Write return type if specified\n        if (this.return) {\n            writer.write(\" -> \");\n            this.return.write(writer);\n        }\n\n        writer.write(\":\");\n        writer.newLine();\n\n        // Write docstring if specified\n        if (this.docstring) {\n            writer.indent();\n            writer.write('\"\"\"');\n            writer.write(this.docstring);\n            writer.write('\"\"\"');\n            writer.newLine();\n            writer.dedent();\n        }\n\n        // Write method body\n        if (this.statements.length) {\n            writer.indent();\n            this.statements.forEach((statement, index) => {\n                statement.write(writer);\n                if (index < this.statements.length - 1) {\n                    writer.newLine();\n                }\n            });\n            writer.dedent();\n        } else {\n            writer.indent();\n            writer.write(\"pass\");\n            writer.dedent();\n        }\n        writer.newLine();\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace MethodArgument {\n    interface Args {\n        /* If a kwarg, then the name of the parameter that this is a keyword argument for */\n        name?: string;\n        /* The value of the argument */\n        value: AstNode;\n    }\n}\n\nexport class MethodArgument extends AstNode {\n    public readonly name: string | undefined;\n    public readonly value: AstNode;\n\n    constructor({ name, value }: MethodArgument.Args) {\n        super();\n        this.name = name;\n        this.value = value;\n\n        this.inheritReferences(this.value);\n    }\n\n    public write(writer: Writer): void {\n        if (this.name !== undefined) {\n            writer.write(this.name);\n            writer.write(\"=\");\n        }\n        this.value.write(writer);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { MethodArgument } from \"./MethodArgument.js\";\nimport { Reference } from \"./Reference.js\";\n\nexport declare namespace MethodInvocation {\n    interface Args {\n        /* The reference to the class instance the method is defined on */\n        on: Reference;\n        /* The method to invoke */\n        method: string;\n        /* The arguments to pass to the method */\n        arguments_: MethodArgument[];\n        /* Whether to write the method invocation on a new line */\n        multiline?: boolean;\n    }\n}\n\nexport class MethodInvocation extends AstNode {\n    protected on: Reference;\n    private method: string;\n    private arguments: MethodArgument[];\n    private multiline: boolean;\n\n    constructor({ on, method, arguments_, multiline }: MethodInvocation.Args) {\n        super();\n\n        this.on = on;\n        this.method = method;\n        this.arguments = arguments_;\n        this.multiline = multiline ?? false;\n\n        this.inheritReferences(on);\n        this.arguments.forEach((arg) => {\n            this.inheritReferences(arg);\n        });\n    }\n\n    public write(writer: Writer): void {\n        this.on.write(writer);\n        writer.write(\".\");\n        writer.write(this.method);\n\n        if (this.arguments.length === 0) {\n            writer.write(\"()\");\n            return;\n        }\n\n        writer.write(\"(\");\n        if (this.multiline) {\n            writer.newLine();\n            writer.indent();\n        }\n        this.arguments.forEach((arg, idx) => {\n            arg.write(writer);\n            if (idx < this.arguments.length - 1) {\n                writer.write(\",\");\n                if (this.multiline) {\n                    writer.newLine();\n                } else {\n                    writer.write(\" \");\n                }\n            } else if (this.multiline) {\n                writer.write(\",\");\n            }\n        });\n        if (this.multiline) {\n            writer.newLine();\n            writer.dedent();\n        }\n        writer.write(\")\");\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { OperatorType } from \"./OperatorType.js\";\n\nexport declare namespace Operator {\n    interface Args {\n        operator: OperatorType;\n        lhs: AstNode;\n        rhs: AstNode;\n    }\n}\n\nexport class Operator extends AstNode {\n    private readonly operator: OperatorType;\n    private readonly lhs: AstNode;\n    private readonly rhs: AstNode;\n\n    public constructor({ operator, lhs, rhs }: Operator.Args) {\n        super();\n        this.operator = operator;\n        this.lhs = lhs;\n        this.inheritReferences(lhs);\n        this.rhs = rhs;\n        this.inheritReferences(rhs);\n    }\n\n    private getOperatorString(): string {\n        switch (this.operator) {\n            case OperatorType.Or:\n                return \"or\";\n            case OperatorType.And:\n                return \"and\";\n            case OperatorType.Add:\n                return \"+\";\n            case OperatorType.Subtract:\n                return \"-\";\n            case OperatorType.Multiply:\n                return \"*\";\n            case OperatorType.Divide:\n                return \"/\";\n            case OperatorType.Modulo:\n                return \"%\";\n            case OperatorType.LeftShift:\n                return \"<<\";\n            case OperatorType.RightShift:\n                return \">>\";\n            default:\n                assertNever(this.operator);\n        }\n    }\n\n    public write(writer: Writer): void {\n        this.lhs.write(writer);\n        writer.write(\" \");\n        writer.write(this.getOperatorString());\n        writer.write(\" \");\n        this.rhs.write(writer);\n    }\n}\n","export type OperatorType =\n    | \"or\"\n    | \"and\"\n    | \"add\"\n    | \"subtract\"\n    | \"multiple\"\n    | \"divide\"\n    | \"modulo\"\n    | \"leftShift\"\n    | \"rightShift\";\n\nexport const OperatorType = {\n    Or: \"or\",\n    And: \"and\",\n    Add: \"add\",\n    Subtract: \"subtract\",\n    Multiply: \"multiple\",\n    Divide: \"divide\",\n    Modulo: \"modulo\",\n    LeftShift: \"leftShift\",\n    RightShift: \"rightShift\"\n} as const;\n","import { Class } from \"./Class.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { ImportedName, ModulePath } from \"./core/types.js\";\nimport { createPythonClassName } from \"./core/utils.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Field } from \"./Field.js\";\nimport { Method } from \"./Method.js\";\nimport { ModuleImport } from \"./ModuleImport.js\";\nimport { Reference } from \"./Reference.js\";\nimport { StarImport } from \"./StarImport.js\";\n\ninterface UniqueReferenceValue {\n    modulePath: ModulePath;\n    references: Reference[];\n    referenceNames: Set<string>;\n}\n\nexport declare namespace PythonFile {\n    interface Args {\n        /* The path of the Python file relative to the module */\n        path: ModulePath;\n        /* The list of statements in the Python file. More can be added following initialization. */\n        statements?: AstNode[];\n        /* Whether or not this represents the root of a Python module */\n        isInitFile?: boolean;\n        /* Any comments that should be at the top of the file */\n        comments?: Comment[];\n        /* Any explicit imports that should be included */\n        imports?: StarImport[];\n    }\n}\n\nexport class PythonFile extends AstNode {\n    public readonly path: ModulePath;\n    public readonly isInitFile: boolean;\n    private readonly statements: AstNode[] = [];\n    private readonly comments: Comment[];\n\n    constructor({ path, statements, isInitFile = false, comments, imports }: PythonFile.Args) {\n        super();\n        this.path = path;\n        this.isInitFile = isInitFile;\n\n        statements?.forEach((statement) => this.addStatement(statement));\n\n        this.comments = comments ?? [];\n\n        imports?.forEach((import_) => this.addReference(import_));\n    }\n\n    public addStatement(statement: AstNode): void {\n        this.statements.push(statement);\n        this.inheritReferences(statement);\n    }\n\n    public write(writer: Writer): void {\n        const uniqueReferences = this.deduplicateReferences();\n\n        this.updateWriterRefNameOverrides({ writer, uniqueReferences });\n\n        this.writeComments(writer);\n        this.writeImports({ writer, uniqueReferences });\n        this.statements.forEach((statement, idx) => {\n            statement.write(writer);\n            writer.newLine();\n            if (idx < this.statements.length - 1) {\n                writer.newLine();\n            }\n        });\n\n        writer.unsetRefNameOverrides();\n    }\n\n    /*******************************\n     * Helper Methods\n     *******************************/\n\n    private updateWriterRefNameOverrides({\n        writer,\n        uniqueReferences\n    }: {\n        writer: Writer;\n        uniqueReferences: Map<string, UniqueReferenceValue>;\n    }): void {\n        // Clone the map so that we can mutate its copy.\n        const referencesToHandle = new Map(uniqueReferences);\n\n        // Build up a map of refs to their name overrides, keeping track of names that have been used as we go.\n        const completeRefPathsToNameOverrides: Record<string, ImportedName> = {};\n        const usedNames = this.getInitialUsedNames();\n\n        // First, reserve the names of any references that are defined in the file itself and that don't need importing.\n        const filePath = this.path.join(\".\");\n        const fileReferences = uniqueReferences.get(filePath);\n        if (fileReferences) {\n            const { references } = fileReferences;\n\n            references.forEach((reference) => {\n                const fullyQualifiedModulePath = reference.getFullyQualifiedModulePath();\n                const name = reference.name;\n\n                completeRefPathsToNameOverrides[fullyQualifiedModulePath] = {\n                    name,\n                    isAlias: false\n                };\n                usedNames.add(reference.name);\n            });\n\n            referencesToHandle.delete(filePath);\n        }\n\n        // Continue on to resolving names for references that must be imported\n        const importedReferences: Reference[] = Array.from(referencesToHandle.values()).flatMap(\n            ({ references }) => references\n        );\n        importedReferences.forEach((reference) => {\n            // Skip star imports and module imports since we should never override their import alias\n            if (reference instanceof StarImport || reference instanceof ModuleImport) {\n                return;\n            }\n\n            const name = reference.alias ?? reference.name;\n            const fullyQualifiedModulePath = reference.getFullyQualifiedModulePath();\n\n            let nameOverride = name;\n            let modulePathIdx = reference.modulePath.length - 1;\n            let isAlias = !!reference.alias;\n\n            while (usedNames.has(nameOverride)) {\n                isAlias = true;\n\n                const module = reference.modulePath[modulePathIdx];\n                if (modulePathIdx < 0 || !module) {\n                    nameOverride = `_${nameOverride}`;\n                } else {\n                    nameOverride = `${createPythonClassName(module)}${nameOverride}`;\n                }\n\n                modulePathIdx--;\n            }\n            usedNames.add(nameOverride);\n\n            completeRefPathsToNameOverrides[fullyQualifiedModulePath] = {\n                name: nameOverride,\n                isAlias\n            };\n        });\n\n        writer.setRefNameOverrides(completeRefPathsToNameOverrides);\n    }\n\n    private getInitialUsedNames(): Set<string> {\n        const usedNames = new Set<string>();\n\n        this.statements.forEach((statement) => {\n            if (statement instanceof Class) {\n                usedNames.add(statement.name);\n            } else if (statement instanceof Method) {\n                usedNames.add(statement.name);\n            } else if (statement instanceof Field) {\n                usedNames.add(statement.name);\n            }\n        });\n\n        return usedNames;\n    }\n\n    private deduplicateReferences() {\n        // Deduplicate references by their fully qualified paths\n        const uniqueReferences = new Map<string, UniqueReferenceValue>();\n        for (const reference of this.references) {\n            const referenceName = reference.name;\n            const fullyQualifiedPath = reference.getFullyQualifiedPath();\n\n            // Skip references that don't have a path. It's inferred that they don't need to be imported.\n            if (fullyQualifiedPath === \"\") {\n                continue;\n            }\n\n            const existingRefs = uniqueReferences.get(fullyQualifiedPath);\n\n            if (existingRefs) {\n                if (!existingRefs.referenceNames.has(referenceName)) {\n                    existingRefs.references.push(reference);\n                    existingRefs.referenceNames.add(referenceName);\n                }\n            } else {\n                uniqueReferences.set(fullyQualifiedPath, {\n                    modulePath: reference.modulePath,\n                    references: [reference],\n                    referenceNames: new Set([referenceName])\n                });\n            }\n        }\n\n        return uniqueReferences;\n    }\n\n    private writeComments(writer: Writer): void {\n        this.comments.forEach((comment) => {\n            comment.write(writer);\n        });\n\n        if (this.comments.length > 0) {\n            writer.newLine();\n        }\n    }\n\n    private getImportName({ writer, reference }: { writer: Writer; reference: Reference }): string {\n        const nameOverride = writer.getRefNameOverride(reference);\n\n        const name = reference.name;\n        const alias = nameOverride.isAlias ? nameOverride.name : undefined;\n\n        return `${name}${alias ? ` as ${alias}` : \"\"}`;\n    }\n\n    private writeImports({\n        writer,\n        uniqueReferences\n    }: {\n        writer: Writer;\n        uniqueReferences: Map<string, { modulePath: ModulePath; references: Reference[] }>;\n    }): void {\n        if (uniqueReferences.size === 0) {\n            return;\n        }\n        for (const [fullyQualifiedPath, { modulePath, references }] of uniqueReferences) {\n            const refModulePath = modulePath;\n\n            // Check to see if the reference is defined in this same file and if so, skip its import\n            if (this.isDefinedInFile(refModulePath)) {\n                continue;\n            }\n\n            // Handle module-level imports (e.g., `import datetime`)\n            if (references.some((ref) => ref instanceof ModuleImport)) {\n                writer.write(`import ${fullyQualifiedPath}`);\n                writer.newLine();\n                continue;\n            }\n\n            if (refModulePath[0] === this.path[0]) {\n                // Relativize the import\n                // Calculate the common prefix length\n                let commonPrefixLength = 0;\n                while (\n                    commonPrefixLength < this.path.length &&\n                    commonPrefixLength < refModulePath.length &&\n                    this.path[commonPrefixLength] === refModulePath[commonPrefixLength]\n                ) {\n                    commonPrefixLength++;\n                }\n\n                // Calculate the number of levels to go up\n                let levelsUp = this.path.length - commonPrefixLength;\n\n                // If this is an __init__.py file, then we must go one more level up.\n                if (this.isInitFile) {\n                    levelsUp++;\n                }\n\n                // Build the relative import path\n                let relativePath = levelsUp > 0 ? \".\".repeat(levelsUp) : \".\";\n                relativePath += refModulePath.slice(commonPrefixLength).join(\".\");\n\n                // Write the relative import statement\n                writer.write(\n                    `from ${relativePath} import ${references\n                        .map((reference) => this.getImportName({ writer, reference }))\n                        .join(\", \")}`\n                );\n            } else {\n                // Use fully qualified path\n                writer.write(\n                    `from ${fullyQualifiedPath} import ${references\n                        .map((reference) => this.getImportName({ writer, reference }))\n                        .join(\", \")}`\n                );\n            }\n            writer.newLine();\n        }\n        writer.newLine();\n    }\n\n    private isDefinedInFile(modulePath: readonly string[]): boolean {\n        return modulePath.length === this.path.length && modulePath.every((part, idx) => part === this.path[idx]);\n    }\n}\n","export function createPythonClassName(input: string): string {\n    // Handle empty input\n    if (!input) {\n        return \"Class\";\n    }\n\n    // Clean up the input string\n    let cleanedInput = input\n        .replace(/[^a-zA-Z0-9\\s_-]/g, \" \") // Replace special characters with spaces\n        .replace(/[-_\\s]+/g, \" \") // Replace hyphens, underscores and multiple spaces with single space\n        .trim(); // Remove leading/trailing spaces\n\n    // Handle numeric-only or empty string after cleanup\n    if (!cleanedInput || /^\\d+$/.test(cleanedInput)) {\n        return \"Class\" + (cleanedInput || \"\");\n    }\n\n    // Handle strings starting with numbers\n    if (/^\\d/.test(cleanedInput)) {\n        cleanedInput = \"Class\" + cleanedInput;\n    }\n\n    // Split into words and handle special cases\n    const words = cleanedInput\n        .split(/(?=[A-Z])|[-_\\s]+/)\n        .filter((word) => word.length > 0)\n        .map((word) => {\n            // Fix any garbled text by splitting on number boundaries\n            return word.split(/(?<=\\d)(?=[a-zA-Z])|(?<=[a-zA-Z])(?=\\d)/).filter((w) => w.length > 0);\n        })\n        .flat();\n\n    // Process each word\n    return words\n        .map((word, index) => {\n            // If it's the first word and starts with a number, prepend \"Class\"\n            if (index === 0 && /^\\d/.test(word)) {\n                return \"Class\" + word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n            }\n            // Preserve words that are all uppercase and longer than one character\n            if (word.length > 1 && word === word.toUpperCase() && !/^\\d+$/.test(word)) {\n                return word;\n            }\n            // Capitalize first letter, lowercase rest\n            return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n        })\n        .join(\"\");\n}\n","import { Writer } from \"./core/Writer.js\";\nimport { Reference } from \"./Reference.js\";\n\n/**\n * Represents a module-level import (e.g., `import datetime`).\n * Unlike a regular Reference which produces `from X import Y`,\n * a ModuleImport produces `import X`.\n */\nexport declare namespace ModuleImport {\n    interface Args {\n        /* The module to import (e.g., \"datetime\", \"uuid\") */\n        module: string;\n    }\n}\n\nexport class ModuleImport extends Reference {\n    public constructor({ module }: ModuleImport.Args) {\n        super({ name: module, modulePath: [module] });\n    }\n\n    public write(writer: Writer): void {\n        throw new Error(\"Not intended to be written outside the context of a PythonFile.\");\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { AttrPath, ModulePath } from \"./core/types.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Reference {\n    interface Args {\n        /* The name of the reference */\n        name: string;\n        /* The module path of the reference\n            For example:\n            - \"foo.bar\" -> [\"foo\", \"bar\"]\n            - \"foo.bar.baz\" -> [\"foo\", \"bar\", \"baz\"]\n        */\n        modulePath?: ModulePath;\n        /* The generic types of the reference */\n        genericTypes?: AstNode[];\n        /* The alias of the reference */\n        alias?: string;\n        /* The path to the attribute of the reference */\n        attribute?: AttrPath;\n    }\n}\n\nexport class Reference extends AstNode {\n    public readonly name: string;\n    public readonly modulePath: ModulePath;\n    public readonly genericTypes: AstNode[];\n    public readonly alias: string | undefined;\n    public readonly attribute: AttrPath;\n\n    constructor({ name, modulePath, genericTypes, alias, attribute }: Reference.Args) {\n        super();\n        this.name = name;\n        this.modulePath = modulePath ?? [];\n        this.genericTypes = genericTypes ?? [];\n        this.alias = alias;\n        this.attribute = attribute ?? [];\n        this.references.push(this);\n\n        this.genericTypes.forEach((genericType) => {\n            this.inheritReferences(genericType);\n        });\n    }\n\n    public write(writer: Writer): void {\n        const nameOverride = writer.getRefNameOverride(this);\n        writer.write(nameOverride.name);\n\n        if (this.genericTypes.length > 0) {\n            writer.write(\"[\");\n            this.genericTypes.forEach((genericType, index) => {\n                if (index > 0) {\n                    writer.write(\", \");\n                }\n                genericType.write(writer);\n            });\n            writer.write(\"]\");\n        }\n\n        if (this.attribute.length > 0) {\n            writer.write(\".\");\n            this.attribute.forEach((attr, index) => {\n                if (index > 0) {\n                    writer.write(\".\");\n                }\n                writer.write(attr);\n            });\n        }\n    }\n\n    public getFullyQualifiedPath(): string {\n        return this.modulePath.join(\".\");\n    }\n\n    public getFullyQualifiedModulePath(): string {\n        return `${this.getFullyQualifiedPath()}.${this.name}`;\n    }\n}\n","import { Writer } from \"./core/Writer.js\";\nimport { Reference } from \"./Reference.js\";\n\nexport declare namespace StarImport {\n    interface Args extends Pick<Reference.Args, \"modulePath\"> {}\n}\n\nexport class StarImport extends Reference {\n    public readonly docs: string | undefined;\n\n    public constructor({ modulePath }: StarImport.Args) {\n        super({ name: \"*\", modulePath });\n    }\n\n    public write(writer: Writer): void {\n        throw new Error(\"Not intended to be written outside the context of a PythonFile.\");\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { python } from \"./index.js\";\nimport { Reference } from \"./Reference.js\";\n\ntype InternalType =\n    | Int\n    | Float\n    | Bool\n    | Str\n    | Bytes\n    | List\n    | Set\n    | Tuple\n    | Dict\n    | None\n    | Uuid\n    | Optional\n    | Union\n    | Any\n    | ReferenceType\n    | Datetime\n    | Literal;\n\ninterface Int {\n    type: \"int\";\n}\n\ninterface Float {\n    type: \"float\";\n}\n\ninterface Bool {\n    type: \"bool\";\n}\n\ninterface Str {\n    type: \"str\";\n}\n\ninterface Bytes {\n    type: \"bytes\";\n}\n\ninterface List {\n    type: \"list\";\n    value: Type;\n}\n\ninterface Set {\n    type: \"set\";\n    value: Type;\n}\n\ninterface Tuple {\n    type: \"tuple\";\n    values: Type[];\n}\n\ninterface Dict {\n    type: \"dict\";\n    keyType: Type;\n    valueType: Type;\n}\n\ninterface None {\n    type: \"none\";\n}\n\ninterface Uuid {\n    type: \"uuid\";\n}\n\ninterface Optional {\n    type: \"optional\";\n    value: Type;\n}\n\ninterface Union {\n    type: \"union\";\n    values: Type[];\n}\n\ninterface Datetime {\n    type: \"datetime\";\n}\n\ninterface Any {\n    type: \"any\";\n}\n\ninterface ReferenceType {\n    type: \"reference\";\n    value: Reference;\n}\n\ninterface Literal {\n    type: \"literal\";\n    value: string | number | boolean;\n}\n\nexport class Type extends AstNode {\n    private internalType: InternalType;\n\n    private constructor(internalType: InternalType) {\n        super();\n        this.internalType = internalType;\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalType.type) {\n            case \"int\":\n                writer.write(\"int\");\n                break;\n            case \"float\":\n                writer.write(\"float\");\n                break;\n            case \"bool\":\n                writer.write(\"bool\");\n                break;\n            case \"str\":\n                writer.write(\"str\");\n                break;\n            case \"bytes\":\n                writer.write(\"bytes\");\n                break;\n            case \"list\":\n                writer.write(\"List[\");\n                this.internalType.value.write(writer);\n                writer.write(\"]\");\n                break;\n            case \"set\":\n                writer.write(\"Set[\");\n                this.internalType.value.write(writer);\n                writer.write(\"]\");\n                break;\n            case \"tuple\":\n                writer.write(\"Tuple[\");\n                this.internalType.values.forEach((value, index) => {\n                    if (index > 0) {\n                        writer.write(\", \");\n                    }\n                    value.write(writer);\n                });\n                writer.write(\"]\");\n                break;\n            case \"dict\":\n                writer.write(\"Dict[\");\n                this.internalType.keyType.write(writer);\n                writer.write(\", \");\n                this.internalType.valueType.write(writer);\n                writer.write(\"]\");\n                break;\n            case \"none\":\n                writer.write(\"None\");\n                break;\n            case \"uuid\":\n                writer.write(\"UUID\");\n                break;\n            case \"optional\":\n                writer.write(\"Optional[\");\n                this.internalType.value.write(writer);\n                writer.write(\"]\");\n                break;\n            case \"union\":\n                writer.write(\"Union[\");\n                this.internalType.values.forEach((value, index) => {\n                    if (index > 0) {\n                        writer.write(\", \");\n                    }\n                    value.write(writer);\n                });\n                writer.write(\"]\");\n                break;\n            case \"any\":\n                writer.write(\"Any\");\n                break;\n            case \"reference\":\n                this.internalType.value.write(writer);\n                break;\n            case \"datetime\":\n                writer.write(\"datetime\");\n                break;\n            case \"literal\":\n                if (typeof this.internalType.value === \"string\") {\n                    writer.write(`Literal[\"${this.internalType.value}\"]`);\n                } else {\n                    writer.write(`Literal[${this.internalType.value}]`);\n                }\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    public static int(): Type {\n        return new this({ type: \"int\" });\n    }\n\n    public static float(): Type {\n        return new this({ type: \"float\" });\n    }\n\n    public static bool(): Type {\n        return new this({ type: \"bool\" });\n    }\n\n    public static str(): Type {\n        return new this({ type: \"str\" });\n    }\n\n    public static bytes(): Type {\n        return new this({ type: \"bytes\" });\n    }\n\n    public static list(value: Type): Type {\n        const listType = new this({ type: \"list\", value });\n        listType.addReference(python.reference({ name: \"List\", modulePath: [\"typing\"] }));\n        listType.inheritReferences(value);\n        return listType;\n    }\n\n    public static set(value: Type): Type {\n        const setType = new this({ type: \"set\", value });\n        setType.addReference(python.reference({ name: \"Set\", modulePath: [\"typing\"] }));\n        setType.inheritReferences(value);\n        return setType;\n    }\n\n    public static tuple(values: Type[]): Type {\n        const tupleType = new this({ type: \"tuple\", values });\n        tupleType.addReference(python.reference({ name: \"Tuple\", modulePath: [\"typing\"] }));\n        values.forEach((value) => tupleType.inheritReferences(value));\n        return tupleType;\n    }\n\n    public static dict(keyType: Type, valueType: Type): Type {\n        const dictType = new this({ type: \"dict\", keyType, valueType });\n        dictType.addReference(python.reference({ name: \"Dict\", modulePath: [\"typing\"] }));\n        dictType.inheritReferences(keyType);\n        dictType.inheritReferences(valueType);\n        return dictType;\n    }\n\n    public static none(): Type {\n        return new this({ type: \"none\" });\n    }\n\n    public static uuid(): Type {\n        const uuidType = new this({ type: \"uuid\" });\n        uuidType.addReference(python.reference({ name: \"UUID\", modulePath: [\"uuid\"] }));\n        return uuidType;\n    }\n\n    public static optional(value: Type): Type {\n        // Avoids double optional.\n        if (this.isAlreadyOptional(value)) {\n            return value;\n        }\n        const optionalType = new this({ type: \"optional\", value });\n        optionalType.addReference(python.reference({ name: \"Optional\", modulePath: [\"typing\"] }));\n        optionalType.inheritReferences(value);\n        return optionalType;\n    }\n\n    public static union(values: Type[]): Type {\n        const unionType = new this({ type: \"union\", values });\n        unionType.addReference(python.reference({ name: \"Union\", modulePath: [\"typing\"] }));\n        values.forEach((value) => unionType.inheritReferences(value));\n        return unionType;\n    }\n\n    public static any(): Type {\n        const anyType = new this({ type: \"any\" });\n        anyType.addReference(python.reference({ name: \"Any\", modulePath: [\"typing\"] }));\n        return anyType;\n    }\n\n    public static datetime(): Type {\n        const datetimeType = new this({ type: \"datetime\" });\n        datetimeType.addReference(python.reference({ name: \"datetime\", modulePath: [\"datetime\"] }));\n        return datetimeType;\n    }\n\n    public static reference(value: Reference): Type {\n        const referenceType = new this({ type: \"reference\", value });\n        referenceType.addReference(value);\n        return referenceType;\n    }\n\n    public static literal(value: string | boolean | number): Type {\n        const literalType = new this({ type: \"literal\", value });\n        literalType.addReference(python.reference({ name: \"Literal\", modulePath: [\"typing\"] }));\n        return literalType;\n    }\n\n    private static isAlreadyOptional(value: Type): boolean {\n        return value.internalType.type === \"optional\";\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { ModuleImport } from \"./ModuleImport.js\";\nimport { Type } from \"./Type.js\";\n\nexport interface NamedValue {\n    name: string;\n    value: AstNode;\n}\n\ntype InternalTypeInstantiation =\n    | Int\n    | Float\n    | Bool\n    | Str\n    | Date\n    | DateTime\n    | Bytes\n    | List\n    | Set\n    | Tuple\n    | Dict\n    | TypedDict\n    | Reference_\n    | None\n    | Unknown\n    | Uuid\n    | Nop;\n\ninterface IterableConfig {\n    endWithComma?: boolean;\n    multiline?: boolean;\n}\n\ninterface StrConfig {\n    multiline?: boolean;\n    startOnNewLine?: boolean;\n    endWithNewLine?: boolean;\n}\n\ninterface Int {\n    type: \"int\";\n    value: number;\n}\n\ninterface Float {\n    type: \"float\";\n    value: number;\n}\n\ninterface Bool {\n    type: \"bool\";\n    value: boolean;\n}\n\ninterface Str {\n    type: \"str\";\n    value: string;\n    config?: StrConfig;\n}\n\ninterface Date {\n    type: \"date\";\n    value: string;\n}\n\ninterface DateTime {\n    type: \"datetime\";\n    value: string;\n}\n\ninterface Bytes {\n    type: \"bytes\";\n    value: string;\n}\n\ninterface TypedDict {\n    type: \"typedDict\";\n    entries: NamedValue[];\n    config?: IterableConfig;\n}\n\ninterface List {\n    type: \"list\";\n    values: AstNode[];\n    config?: IterableConfig;\n}\n\ninterface Set {\n    type: \"set\";\n    values: AstNode[];\n    config?: IterableConfig;\n}\n\ninterface Tuple {\n    type: \"tuple\";\n    values: AstNode[];\n    config?: IterableConfig;\n}\n\ninterface Dict {\n    type: \"dict\";\n    entries: DictEntry[];\n    config?: IterableConfig;\n}\n\ninterface DictEntry {\n    key: AstNode;\n    value: AstNode;\n}\n\ninterface Reference_ {\n    type: \"reference\";\n    value: AstNode;\n}\n\ninterface None {\n    type: \"none\";\n}\n\ninterface Unknown {\n    type: \"unknown\";\n    value: unknown;\n}\n\ninterface Uuid {\n    type: \"uuid\";\n    value: string;\n}\n\ninterface Nop {\n    type: \"nop\";\n}\n\nexport class TypeInstantiation extends AstNode {\n    private constructor(private readonly internalType: InternalTypeInstantiation) {\n        super();\n    }\n\n    public static int(value: number): TypeInstantiation {\n        return new this({ type: \"int\", value });\n    }\n\n    public static float(value: number): TypeInstantiation {\n        return new this({ type: \"float\", value });\n    }\n\n    public static bool(value: boolean): TypeInstantiation {\n        return new this({ type: \"bool\", value });\n    }\n\n    public static str(\n        value: string,\n        config: StrConfig = {\n            multiline: false,\n            startOnNewLine: false,\n            endWithNewLine: false\n        }\n    ): TypeInstantiation {\n        return new this({ type: \"str\", value, config });\n    }\n\n    public static bytes(value: string): TypeInstantiation {\n        return new this({ type: \"bytes\", value });\n    }\n\n    public static list(values: AstNode[], config: IterableConfig = { endWithComma: false }): TypeInstantiation {\n        const list = new this({ type: \"list\", values, config });\n        values.forEach((value) => list.inheritReferences(value));\n        return list;\n    }\n\n    public static set(values: AstNode[], config: IterableConfig = { endWithComma: false }): TypeInstantiation {\n        const set = new this({ type: \"set\", values, config });\n        values.forEach((value) => set.inheritReferences(value));\n        return set;\n    }\n\n    public static tuple(values: AstNode[], config: IterableConfig = { endWithComma: false }): TypeInstantiation {\n        const tuple = new this({ type: \"tuple\", values, config });\n        values.forEach((value) => tuple.inheritReferences(value));\n        return tuple;\n    }\n\n    public static typedDict(\n        entries: NamedValue[],\n        config: IterableConfig = { endWithComma: false }\n    ): TypeInstantiation {\n        const typedDict = new this({ type: \"typedDict\", entries, config });\n        entries.forEach((entry) => typedDict.inheritReferences(entry.value));\n        return typedDict;\n    }\n\n    public static date(value: string): TypeInstantiation {\n        const date = new this({ type: \"date\", value });\n        date.addReference(new ModuleImport({ module: \"datetime\" }));\n        return date;\n    }\n\n    public static datetime(value: string): TypeInstantiation {\n        const datetime = new this({ type: \"datetime\", value });\n        datetime.addReference(new ModuleImport({ module: \"datetime\" }));\n        return datetime;\n    }\n\n    public static dict(entries: DictEntry[], config: IterableConfig = { endWithComma: false }): TypeInstantiation {\n        const dict = new this({ type: \"dict\", entries, config });\n        entries.forEach((entry) => {\n            dict.inheritReferences(entry.key);\n            dict.inheritReferences(entry.value);\n        });\n        return dict;\n    }\n\n    public static reference(value: AstNode): TypeInstantiation {\n        const ref = new this({ type: \"reference\", value });\n        ref.inheritReferences(value);\n        return ref;\n    }\n\n    public static none(): TypeInstantiation {\n        return new this({ type: \"none\" });\n    }\n\n    public static unknown(value: unknown): TypeInstantiation {\n        return new this({ type: \"unknown\", value });\n    }\n\n    public static uuid(value: string): TypeInstantiation {\n        const uuid = new this({ type: \"uuid\", value });\n        uuid.addReference(new ModuleImport({ module: \"uuid\" }));\n        return uuid;\n    }\n\n    public static nop(): TypeInstantiation {\n        return new this({ type: \"nop\" });\n    }\n\n    public static isNop(typeInstantiation: AstNode): boolean {\n        return typeInstantiation instanceof TypeInstantiation && typeInstantiation.internalType.type === \"nop\";\n    }\n\n    public isTypedDict(): this is TypedDict {\n        return (this.internalType as TypedDict).type === \"typedDict\";\n    }\n\n    public asTypedDictOrThrow(): TypedDict {\n        if (this.isTypedDict()) {\n            return this.internalType as TypedDict;\n        }\n        throw new Error(\"Internal error; python.TypeInstantiation is not a TypedDict\");\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalType.type) {\n            case \"int\":\n                writer.write(this.internalType.value.toString());\n                break;\n            case \"float\":\n                writer.write(this.internalType.value.toString());\n                break;\n            case \"bool\":\n                if (this.internalType.value) {\n                    writer.write(\"True\");\n                } else {\n                    writer.write(\"False\");\n                }\n                break;\n            case \"str\":\n                if (this.internalType.config?.multiline) {\n                    const { startOnNewLine, endWithNewLine } = this.internalType.config;\n                    this.writeStringWithTripleQuotes({\n                        writer,\n                        value: this.internalType.value,\n                        startOnNewLine,\n                        endWithNewLine\n                    });\n                } else {\n                    writer.write(`\"${this.escapeString(this.internalType.value)}\"`);\n                }\n                break;\n            case \"date\":\n                writer.write(`datetime.date.fromisoformat(\"${this.internalType.value}\")`);\n                break;\n            case \"datetime\": {\n                // Convert 'Z' suffix to '+00:00' for Python 3.8 compatibility\n                // datetime.fromisoformat() doesn't support 'Z' until Python 3.11\n                const datetimeValue = this.internalType.value.replace(/Z$/, \"+00:00\");\n                writer.write(`datetime.datetime.fromisoformat(\"${datetimeValue}\")`);\n                break;\n            }\n            case \"bytes\":\n                writer.write(`b\"${this.internalType.value}\"`);\n                break;\n            case \"list\": {\n                const internalType = this.internalType;\n                const values = filterNopValues({ values: internalType.values });\n                if (values.length === 0) {\n                    writer.write(\"[]\");\n                    break;\n                }\n                writer.write(\"[\");\n                if (internalType.config?.multiline) {\n                    writer.newLine();\n                    writer.indent();\n                }\n                values.forEach((value, index) => {\n                    if (index > 0) {\n                        writer.write(\",\");\n                        if (internalType.config?.multiline) {\n                            writer.newLine();\n                        } else {\n                            writer.write(\" \");\n                        }\n                    }\n                    value.write(writer);\n                    if (index === values.length - 1 && internalType.config?.endWithComma) {\n                        writer.write(\",\");\n                    }\n                });\n                if (internalType.config?.multiline) {\n                    writer.newLine();\n                    writer.dedent();\n                }\n                writer.write(\"]\");\n                break;\n            }\n            case \"set\": {\n                const internalType = this.internalType;\n                const values = filterNopValues({ values: internalType.values });\n                if (values.length === 0) {\n                    writer.write(\"{}\");\n                    break;\n                }\n                writer.write(\"{\");\n                if (internalType.config?.multiline) {\n                    writer.newLine();\n                    writer.indent();\n                }\n                values.forEach((value, index) => {\n                    if (index > 0) {\n                        writer.write(\",\");\n                        if (internalType.config?.multiline) {\n                            writer.newLine();\n                        } else {\n                            writer.write(\" \");\n                        }\n                    }\n                    value.write(writer);\n                    if (index === values.length - 1 && internalType.config?.endWithComma) {\n                        writer.write(\",\");\n                    }\n                });\n                if (internalType.config?.multiline) {\n                    writer.newLine();\n                    writer.dedent();\n                }\n                writer.write(\"}\");\n                break;\n            }\n            case \"tuple\": {\n                const internalType = this.internalType;\n                const values = filterNopValues({ values: internalType.values });\n                if (values.length === 0) {\n                    writer.write(\"()\");\n                    break;\n                }\n                writer.write(\"(\");\n                if (internalType.config?.multiline) {\n                    writer.newLine();\n                    writer.indent();\n                }\n                values.forEach((value, index) => {\n                    if (index > 0) {\n                        writer.write(\",\");\n                        if (internalType.config?.multiline) {\n                            writer.newLine();\n                        } else {\n                            writer.write(\" \");\n                        }\n                    }\n                    value.write(writer);\n                    if (\n                        // If the tuple is of length 1, then we must always add a trailing comma\n                        values.length === 1 ||\n                        // Otherwise, check the config that was specified\n                        (index === values.length - 1 && internalType.config?.endWithComma)\n                    ) {\n                        writer.write(\",\");\n                    }\n                });\n                if (internalType.config?.multiline) {\n                    writer.newLine();\n                    writer.dedent();\n                }\n                writer.write(\")\");\n                break;\n            }\n            case \"dict\": {\n                const internalType = this.internalType;\n                const entries = filterNopDictEntries({ entries: internalType.entries });\n                if (entries.length === 0) {\n                    writer.write(\"{}\");\n                    break;\n                }\n                writer.write(\"{\");\n                if (internalType.config?.multiline) {\n                    writer.newLine();\n                    writer.indent();\n                }\n                entries.forEach((entry, index) => {\n                    if (index > 0) {\n                        writer.write(\",\");\n                        if (internalType.config?.multiline) {\n                            writer.newLine();\n                        } else {\n                            writer.write(\" \");\n                        }\n                    }\n                    entry.key.write(writer);\n                    writer.write(\": \");\n                    entry.value.write(writer);\n                    if (index === entries.length - 1 && internalType.config?.endWithComma) {\n                        writer.write(\",\");\n                    }\n                });\n                if (internalType.config?.multiline) {\n                    writer.newLine();\n                    writer.dedent();\n                }\n                writer.write(\"}\");\n                break;\n            }\n            case \"typedDict\": {\n                const internalType = this.internalType;\n                const entries = filterNopNamedValues({ entries: internalType.entries });\n                if (entries.length === 0) {\n                    writer.write(\"{}\");\n                    break;\n                }\n                writer.write(\"{\");\n                if (internalType.config?.multiline) {\n                    writer.writeLine();\n                    writer.indent();\n                }\n                entries.forEach((entry, index) => {\n                    if (index > 0) {\n                        writer.write(\",\");\n                        if (internalType.config?.multiline) {\n                            writer.newLine();\n                        } else {\n                            writer.write(\" \");\n                        }\n                    }\n                    writer.write(`\"${entry.name}\": `);\n                    entry.value.write(writer);\n                });\n                if (internalType.config?.multiline) {\n                    writer.newLine();\n                    writer.dedent();\n                }\n                writer.write(\"}\");\n                break;\n            }\n            case \"reference\": {\n                this.internalType.value.write(writer);\n                break;\n            }\n            case \"none\":\n                writer.write(\"None\");\n                break;\n            case \"unknown\":\n                this.writeUnknown({ writer, value: this.internalType.value });\n                break;\n            case \"uuid\":\n                writer.write(`uuid.UUID(\"${this.internalType.value}\")`);\n                break;\n            case \"nop\":\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    private writeStringWithTripleQuotes({\n        writer,\n        value,\n        startOnNewLine,\n        endWithNewLine\n    }: {\n        writer: Writer;\n        value: string;\n    } & Pick<StrConfig, \"startOnNewLine\" | \"endWithNewLine\">): void {\n        writer.write('\"\"\"');\n        const lines = value.split(\"\\n\");\n\n        // If there is only one line, we can just write it as a single line string\n        if (lines.length <= 1) {\n            writer.write(this.escapeString(lines[0] ?? \"\"));\n            writer.write('\"\"\"');\n            return;\n        }\n\n        if (startOnNewLine) {\n            writer.writeNoIndent(\"\\\\\\n\");\n        }\n\n        lines.forEach((line, idx) => {\n            writer.writeNoIndent(this.escapeString(line));\n\n            // If this is the last line, add a newline escape\n            if (idx === lines.length - 1) {\n                if (endWithNewLine) {\n                    writer.writeNoIndent(\"\\\\\\n\");\n                }\n            } else {\n                writer.writeNoIndent(\"\\n\");\n            }\n        });\n\n        writer.writeNoIndent('\"\"\"');\n    }\n\n    /**\n     * Escapes special characters in a string for use in Python string literals.\n     *\n     * This function always escapes:\n     *   - \\  -> \\\\  (backslash - MUST be escaped first!)\n     *   - \"  -> \\\"\n     *   - '  -> \\'\n     *   - literal tab -> \\t\n     *   - literal newline -> \\n\n     *   - literal carriage return -> \\r\n     *\n     * Important: Backslashes must be escaped first to avoid double-escaping.\n     * For example, if we escaped quotes first:\n     *   Input: \\\"  (backslash-quote, 2 chars)\n     *   After quote escape: \\\" stays \\\" (not matched if already escaped)\n     *   After backslash escape: \\\\\" (wrong!)\n     *\n     * By escaping backslashes first:\n     *   Input: \\\"  (backslash-quote, 2 chars)\n     *   After backslash escape: \\\\\"  (4 chars: \\\\, \\, \", becomes \\\\\\\" in output)\n     *   After quote escape: \\\\\\\"  (correct: escaped backslash + escaped quote)\n     *\n     * @param input The input string to be escaped\n     */\n    private escapeString(input: string): string {\n        // Escape backslashes first, then other special characters\n        return input\n            .replace(/\\\\/g, \"\\\\\\\\\") // Escape backslashes first\n            .replace(/\"/g, '\\\\\"') // Escape double quotes\n            .replace(/'/g, \"\\\\'\") // Escape single quotes\n            .replace(/\\t/g, \"\\\\t\") // Escape tabs\n            .replace(/\\n/g, \"\\\\n\") // Escape newlines\n            .replace(/\\r/g, \"\\\\r\"); // Escape carriage returns\n    }\n\n    private writeUnknown({ writer, value }: { writer: Writer; value: unknown }): void {\n        switch (typeof value) {\n            case \"boolean\":\n                writer.write(value ? \"True\" : \"False\");\n                return;\n            case \"string\":\n                writer.write(`\"${this.escapeString(value)}\"`);\n                return;\n            case \"number\":\n                writer.write(value.toString());\n                return;\n            case \"object\":\n                if (value == null) {\n                    writer.write(\"None\");\n                    return;\n                }\n                if (Array.isArray(value)) {\n                    this.writeUnknownArray({ writer, value });\n                    return;\n                }\n                this.writeUnknownObject({ writer, value });\n                return;\n            default:\n                throw new Error(`Internal error; unsupported unknown type: ${typeof value}`);\n        }\n    }\n\n    private writeUnknownArray({\n        writer,\n        value\n    }: {\n        writer: Writer;\n        // biome-ignore lint/suspicious/noExplicitAny: allow\n        value: any[];\n    }): void {\n        if (value.length === 0) {\n            writer.write(\"[]\");\n            return;\n        }\n        writer.write(\"[\");\n        value.forEach((element, index) => {\n            if (index > 0) {\n                writer.write(\", \");\n            }\n            writer.writeNode(TypeInstantiation.unknown(element));\n        });\n        writer.write(\"]\");\n    }\n\n    private writeUnknownObject({ writer, value }: { writer: Writer; value: object }): void {\n        const entries = Object.entries(value);\n        if (entries.length === 0) {\n            writer.write(\"{}\");\n            return;\n        }\n        writer.write(\"{\");\n        entries.forEach(([key, val], index) => {\n            if (index > 0) {\n                writer.write(\", \");\n            }\n            writer.write(`\"${key}\": `);\n            writer.writeNode(TypeInstantiation.unknown(val));\n        });\n        writer.write(\"}\");\n    }\n}\n\nfunction filterNopDictEntries({ entries }: { entries: DictEntry[] }): DictEntry[] {\n    return entries.filter((entry) => !TypeInstantiation.isNop(entry.key) && !TypeInstantiation.isNop(entry.value));\n}\n\nfunction filterNopNamedValues({ entries }: { entries: NamedValue[] }): NamedValue[] {\n    return entries.filter((entry) => !TypeInstantiation.isNop(entry.value));\n}\n\nfunction filterNopValues({ values }: { values: AstNode[] }): AstNode[] {\n    return values.filter((value) => !TypeInstantiation.isNop(value));\n}\n\nexport { Type };\n","import { DiscriminatedUnionTypeInstance, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { python } from \"@fern-api/python-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nconst UNION_VALUE_KEY = \"value\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n    interface Args {\n        typeReference: FernIr.dynamic.TypeReference;\n        value: unknown;\n        as?: ConvertedAs;\n    }\n\n    // Identifies what the type is being converted as, which sometimes influences how\n    // the type is instantiated.\n    type ConvertedAs = \"key\";\n}\n\nexport class DynamicTypeLiteralMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public convert(args: DynamicTypeLiteralMapper.Args): python.TypeInstantiation {\n        // eslint-disable-next-line eqeqeq\n        if (args.value === null) {\n            if (this.context.isNullable(args.typeReference)) {\n                return python.TypeInstantiation.none();\n            }\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Expected non-null value, but got null\"\n            });\n            return python.TypeInstantiation.nop();\n        }\n        if (args.value === undefined) {\n            return python.TypeInstantiation.nop();\n        }\n        switch (args.typeReference.type) {\n            case \"list\":\n                return this.convertList({ list: args.typeReference.value, value: args.value });\n            case \"literal\":\n                return this.convertLiteral({ literalType: args.typeReference.value, value: args.value });\n            case \"map\":\n                return this.convertMap({ map: args.typeReference, value: args.value });\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return this.convertNamed({ named, value: args.value, as: args.as });\n            }\n            case \"optional\":\n                return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n            case \"nullable\":\n                return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n            case \"primitive\":\n                return this.convertPrimitive({ primitive: args.typeReference.value, value: args.value, as: args.as });\n            case \"set\":\n                return this.convertSet({ set: args.typeReference.value, value: args.value });\n            case \"unknown\":\n                return python.TypeInstantiation.unknown(args.value);\n            default:\n                assertNever(args.typeReference);\n        }\n    }\n\n    private convertLiteral({\n        literalType,\n        value\n    }: {\n        literalType: FernIr.dynamic.LiteralType;\n        value: unknown;\n    }): python.TypeInstantiation {\n        switch (literalType.type) {\n            case \"boolean\": {\n                const bool = this.context.getValueAsBoolean({ value });\n                if (bool == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return python.TypeInstantiation.bool(bool);\n            }\n            case \"string\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return python.TypeInstantiation.str(str);\n            }\n            default:\n                assertNever(literalType);\n        }\n    }\n\n    private convertList({\n        list,\n        value\n    }: {\n        list: FernIr.dynamic.TypeReference;\n        value: unknown;\n    }): python.TypeInstantiation {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return python.TypeInstantiation.nop();\n        }\n        return python.TypeInstantiation.list(\n            value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: list, value: v });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }),\n            { multiline: true }\n        );\n    }\n\n    private convertSet({\n        set,\n        value\n    }: {\n        set: FernIr.dynamic.TypeReference;\n        value: unknown;\n    }): python.TypeInstantiation {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return python.TypeInstantiation.nop();\n        }\n        // Use list syntax instead of set literals because:\n        // 1. SDK request parameters use typing.Sequence which expects lists\n        // 2. Sets can't contain unhashable types like dicts in Python\n        return python.TypeInstantiation.list(\n            value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: set, value: v });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }),\n            { multiline: true }\n        );\n    }\n\n    private convertMap({ map, value }: { map: FernIr.dynamic.MapType; value: unknown }): python.TypeInstantiation {\n        if (typeof value !== \"object\" || value == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n            });\n            return python.TypeInstantiation.nop();\n        }\n        return python.TypeInstantiation.dict(\n            Object.entries(value).map(([key, value]) => {\n                this.context.errors.scope(key);\n                try {\n                    return {\n                        key: this.convert({ typeReference: map.key, value: key, as: \"key\" }),\n                        value: this.convert({ typeReference: map.value, value })\n                    };\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }),\n            { multiline: true }\n        );\n    }\n\n    private convertNamed({\n        named,\n        value,\n        as\n    }: {\n        named: FernIr.dynamic.NamedType;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): python.TypeInstantiation {\n        switch (named.type) {\n            case \"alias\": {\n                return this.convert({ typeReference: named.typeReference, value, as });\n            }\n            case \"discriminatedUnion\":\n                return this.convertDiscriminatedUnion({ discriminatedUnion: named, value });\n            case \"enum\":\n                return this.convertEnum({ enum_: named, value });\n            case \"object\":\n                return this.convertObject({ object_: named, value });\n            case \"undiscriminatedUnion\":\n                return this.convertUndiscriminatedUnion({ undiscriminatedUnion: named, value });\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertDiscriminatedUnion({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): python.TypeInstantiation {\n        const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n            discriminatedUnion,\n            value\n        });\n        if (discriminatedUnionTypeInstance == null) {\n            return python.TypeInstantiation.nop();\n        }\n        const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n        const unionProperties = this.convertDiscriminatedUnionProperties({\n            discriminatedUnionTypeInstance,\n            unionVariant\n        });\n        if (unionProperties == null) {\n            return python.TypeInstantiation.nop();\n        }\n        const discriminantProperty = {\n            name: this.context.getPropertyName(discriminatedUnion.discriminant.name),\n            value: python.TypeInstantiation.str(unionVariant.discriminantValue.wireValue)\n        };\n        return python.TypeInstantiation.typedDict([discriminantProperty, ...unionProperties], { multiline: true });\n    }\n\n    private convertDiscriminatedUnionProperties({\n        discriminatedUnionTypeInstance,\n        unionVariant\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        unionVariant: FernIr.dynamic.SingleDiscriminatedUnionType;\n    }): python.NamedValue[] | undefined {\n        const baseFields = this.getBaseFields({\n            discriminatedUnionTypeInstance,\n            singleDiscriminatedUnionType: unionVariant\n        });\n        switch (unionVariant.type) {\n            case \"samePropertiesAsObject\": {\n                const named = this.context.resolveNamedType({\n                    typeId: unionVariant.typeId\n                });\n                if (named == null) {\n                    return undefined;\n                }\n                if (named.type !== \"object\") {\n                    this.context.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Internal error; expected union value to be an object\"\n                    });\n                    return undefined;\n                }\n                const objectEntries = this.convertObjectEntries({\n                    object_: named,\n                    value: discriminatedUnionTypeInstance.value\n                });\n                return [...baseFields, ...objectEntries];\n            }\n            case \"singleProperty\": {\n                try {\n                    this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n                    const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n                    if (record == null) {\n                        return [\n                            ...baseFields,\n                            {\n                                name: UNION_VALUE_KEY,\n                                value: this.convert({\n                                    typeReference: unionVariant.typeReference,\n                                    value: discriminatedUnionTypeInstance.value\n                                })\n                            }\n                        ];\n                    }\n                    return [\n                        ...baseFields,\n                        {\n                            name: this.context.getPropertyName(unionVariant.discriminantValue.name),\n                            value: this.convert({\n                                typeReference: unionVariant.typeReference,\n                                value: record[unionVariant.discriminantValue.wireValue]\n                            })\n                        }\n                    ];\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }\n            case \"noProperties\":\n                return baseFields;\n            default:\n                assertNever(unionVariant);\n        }\n    }\n\n    private getBaseFields({\n        discriminatedUnionTypeInstance,\n        singleDiscriminatedUnionType\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        singleDiscriminatedUnionType: FernIr.dynamic.SingleDiscriminatedUnionType;\n    }): python.NamedValue[] {\n        const properties = this.context.associateByWireValue({\n            parameters: singleDiscriminatedUnionType.properties ?? [],\n            values: this.context.getRecord(discriminatedUnionTypeInstance.value) ?? {},\n\n            // We're only selecting the base properties here. The rest of the properties\n            // are handled by the union variant.\n            ignoreMissingParameters: true\n        });\n        return properties.map((property) => {\n            this.context.errors.scope(property.name.wireValue);\n            try {\n                return {\n                    name: this.context.getPropertyName(property.name.name),\n                    value: this.convert(property)\n                };\n            } finally {\n                this.context.errors.unscope();\n            }\n        });\n    }\n\n    private convertObjectEntries({\n        object_,\n        value\n    }: {\n        object_: FernIr.dynamic.ObjectType;\n        value: unknown;\n    }): python.NamedValue[] {\n        const record = this.context.getRecord(value) ?? {};\n        const properties = this.context.associateByWireValue({\n            parameters: object_.properties,\n            values: record\n        });\n\n        // Track which wire values have been provided in the example\n        const providedWireValues = new Set<string>(Object.keys(record));\n\n        const result = properties.map((property) => {\n            this.context.errors.scope(property.name.wireValue);\n            try {\n                return {\n                    name: this.context.getPropertyName(property.name.name),\n                    value: this.convert(property)\n                };\n            } finally {\n                this.context.errors.unscope();\n            }\n        });\n\n        // Synthesize default values for required properties missing from the example.\n        // This prevents generating invalid code like ClassName() when required fields are omitted.\n        for (const property of object_.properties) {\n            if (providedWireValues.has(property.name.wireValue)) {\n                continue;\n            }\n            if (this.context.isOptional(property.typeReference) || this.context.isNullable(property.typeReference)) {\n                continue;\n            }\n            const defaultValue = this.synthesizeDefaultValue(property.typeReference);\n            if (!python.TypeInstantiation.isNop(defaultValue)) {\n                result.push({\n                    name: this.context.getPropertyName(property.name.name),\n                    value: defaultValue\n                });\n            }\n        }\n\n        return result;\n    }\n\n    private convertObject({\n        object_,\n        value\n    }: {\n        object_: FernIr.dynamic.ObjectType;\n        value: unknown;\n    }): python.TypeInstantiation {\n        const entries = this.convertObjectEntries({ object_, value });\n\n        // biome-ignore lint/correctness/useHookAtTopLevel: not a React hook\n        if (this.context.useTypedDictRequests()) {\n            return python.TypeInstantiation.typedDict(entries, { multiline: true });\n        }\n\n        // Pydantic model style: ClassName(key=value)\n        const classReference = this.context.getTypeClassReference(object_.declaration);\n        return python.TypeInstantiation.reference(\n            python.instantiateClass({\n                classReference,\n                arguments_: entries.map((entry) => python.methodArgument({ name: entry.name, value: entry.value })),\n                multiline: true\n            })\n        );\n    }\n\n    private convertEnum({\n        enum_,\n        value\n    }: {\n        enum_: FernIr.dynamic.EnumType;\n        value: unknown;\n    }): python.TypeInstantiation {\n        const enumValue = this.getEnumValue({ enum_, value });\n        if (enumValue == null) {\n            return python.TypeInstantiation.nop();\n        }\n        return python.TypeInstantiation.str(enumValue);\n    }\n\n    private getEnumValue({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected enum value string, got: ${typeof value}`\n            });\n            return undefined;\n        }\n        const enumValue = enum_.values.find((v) => v.wireValue === value);\n        if (enumValue == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `An enum value named \"${value}\" does not exist in this context`\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    private convertUndiscriminatedUnion({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): python.TypeInstantiation {\n        const result = this.findMatchingUndiscriminatedUnionType({\n            undiscriminatedUnion,\n            value\n        });\n        if (result == null) {\n            return python.TypeInstantiation.nop();\n        }\n        return result;\n    }\n\n    private findMatchingUndiscriminatedUnionType({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): python.TypeInstantiation | undefined {\n        for (const typeReference of undiscriminatedUnion.types) {\n            const errorsBefore = this.context.errors.size();\n            try {\n                const instantiation = this.convert({ typeReference, value });\n                if (python.TypeInstantiation.isNop(instantiation)) {\n                    this.context.errors.truncate(errorsBefore);\n                    continue;\n                }\n                return instantiation;\n            } catch {\n                this.context.errors.truncate(errorsBefore);\n                continue;\n            }\n        }\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value`\n        });\n        return undefined;\n    }\n\n    // =============================================================================\n    // DEFAULT VALUE SYNTHESIS\n    // =============================================================================\n\n    /**\n     * Synthesizes a reasonable default value for a given type reference.\n     * Used to populate required fields that are missing from examples,\n     * preventing invalid code generation (e.g. empty constructors for\n     * types with required fields).\n     */\n    private synthesizeDefaultValue(\n        typeReference: FernIr.dynamic.TypeReference,\n        seen: Set<string> = new Set()\n    ): python.TypeInstantiation {\n        switch (typeReference.type) {\n            case \"optional\":\n            case \"nullable\":\n                return python.TypeInstantiation.nop();\n            case \"primitive\":\n                return this.synthesizeDefaultPrimitive(typeReference.value);\n            case \"literal\":\n                return this.synthesizeDefaultLiteral(typeReference.value);\n            case \"list\":\n                return python.TypeInstantiation.list([]);\n            case \"set\":\n                return python.TypeInstantiation.list([]);\n            case \"map\":\n                return python.TypeInstantiation.dict([]);\n            case \"named\": {\n                if (seen.has(typeReference.value)) {\n                    return python.TypeInstantiation.nop();\n                }\n                const named = this.context.resolveNamedType({ typeId: typeReference.value });\n                if (named == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return this.synthesizeDefaultNamed({ named, typeId: typeReference.value, seen });\n            }\n            case \"unknown\":\n                return python.TypeInstantiation.nop();\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    private synthesizeDefaultPrimitive(primitive: FernIr.dynamic.PrimitiveTypeV1): python.TypeInstantiation {\n        switch (primitive) {\n            case \"STRING\":\n            case \"BASE_64\":\n            case \"BIG_INTEGER\":\n                return python.TypeInstantiation.str(\"string\");\n            case \"INTEGER\":\n            case \"LONG\":\n            case \"UINT\":\n            case \"UINT_64\":\n                return python.TypeInstantiation.int(1);\n            case \"FLOAT\":\n            case \"DOUBLE\":\n                return python.TypeInstantiation.float(1.1);\n            case \"BOOLEAN\":\n                return python.TypeInstantiation.bool(true);\n            case \"DATE\":\n                return python.TypeInstantiation.date(\"2024-01-15\");\n            case \"DATE_TIME\":\n                return python.TypeInstantiation.datetime(\"2024-01-15T09:30:00Z\");\n            case \"UUID\":\n                return python.TypeInstantiation.uuid(\"d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32\");\n            default:\n                assertNever(primitive);\n        }\n    }\n\n    private synthesizeDefaultLiteral(literalType: FernIr.dynamic.LiteralType): python.TypeInstantiation {\n        switch (literalType.type) {\n            case \"boolean\":\n                return python.TypeInstantiation.bool(literalType.value);\n            case \"string\":\n                return python.TypeInstantiation.str(literalType.value);\n            default:\n                assertNever(literalType);\n        }\n    }\n\n    private synthesizeDefaultNamed({\n        named,\n        typeId,\n        seen\n    }: {\n        named: FernIr.dynamic.NamedType;\n        typeId: string;\n        seen: Set<string>;\n    }): python.TypeInstantiation {\n        const newSeen = new Set(seen);\n        newSeen.add(typeId);\n\n        switch (named.type) {\n            case \"alias\":\n                return this.synthesizeDefaultValue(named.typeReference, newSeen);\n            case \"enum\": {\n                const firstValue = named.values[0];\n                if (firstValue == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return python.TypeInstantiation.str(firstValue.wireValue);\n            }\n            case \"object\": {\n                const entries: python.NamedValue[] = [];\n                for (const property of named.properties) {\n                    if (\n                        this.context.isOptional(property.typeReference) ||\n                        this.context.isNullable(property.typeReference)\n                    ) {\n                        continue;\n                    }\n                    const defaultValue = this.synthesizeDefaultValue(property.typeReference, newSeen);\n                    if (!python.TypeInstantiation.isNop(defaultValue)) {\n                        entries.push({\n                            name: this.context.getPropertyName(property.name.name),\n                            value: defaultValue\n                        });\n                    }\n                }\n                // biome-ignore lint/correctness/useHookAtTopLevel: not a React hook\n                if (this.context.useTypedDictRequests()) {\n                    return python.TypeInstantiation.typedDict(entries, { multiline: true });\n                }\n                const classReference = this.context.getTypeClassReference(named.declaration);\n                return python.TypeInstantiation.reference(\n                    python.instantiateClass({\n                        classReference,\n                        arguments_: entries.map((entry) =>\n                            python.methodArgument({ name: entry.name, value: entry.value })\n                        ),\n                        multiline: true\n                    })\n                );\n            }\n            case \"discriminatedUnion\":\n            case \"undiscriminatedUnion\":\n                return python.TypeInstantiation.nop();\n            default:\n                assertNever(named);\n        }\n    }\n\n    // =============================================================================\n    // PRIMITIVE CONVERSION\n    // =============================================================================\n\n    private convertPrimitive({\n        primitive,\n        value,\n        as\n    }: {\n        primitive: FernIr.dynamic.PrimitiveTypeV1;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): python.TypeInstantiation {\n        switch (primitive) {\n            case \"INTEGER\":\n            case \"LONG\":\n            case \"UINT\":\n            case \"UINT_64\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return python.TypeInstantiation.int(num);\n            }\n            case \"FLOAT\":\n            case \"DOUBLE\": {\n                const num = this.getValueAsNumber({ value });\n                if (num == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return python.TypeInstantiation.float(num);\n            }\n            case \"BOOLEAN\": {\n                const bool = this.getValueAsBoolean({ value, as });\n                if (bool == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return python.TypeInstantiation.bool(bool);\n            }\n            case \"BASE_64\":\n            case \"BIG_INTEGER\":\n            case \"STRING\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return python.TypeInstantiation.str(str);\n            }\n            case \"UUID\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return python.TypeInstantiation.uuid(str);\n            }\n            case \"DATE\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return python.TypeInstantiation.date(str);\n            }\n            case \"DATE_TIME\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return python.TypeInstantiation.nop();\n                }\n                return python.TypeInstantiation.datetime(str);\n            }\n            default:\n                assertNever(primitive);\n        }\n    }\n\n    private getValueAsNumber({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): number | undefined {\n        const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n        return this.context.getValueAsNumber({ value: num });\n    }\n\n    private getValueAsBoolean({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): boolean | undefined {\n        const bool =\n            as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : value === \"false\" ? false : value) : value;\n        return this.context.getValueAsBoolean({ value: bool });\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { python } from \"@fern-api/python-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport interface FilePropertyInfo {\n    fileFields: python.NamedValue[];\n    bodyPropertyFields: python.NamedValue[];\n}\n\nexport class FilePropertyMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public getFilePropertyInfo({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.FileUploadRequestBody;\n        value: unknown;\n    }): FilePropertyInfo {\n        const result: FilePropertyInfo = {\n            fileFields: [],\n            bodyPropertyFields: []\n        };\n        const record = this.context.getRecord(value) ?? {};\n        for (const property of body.properties) {\n            switch (property.type) {\n                case \"file\": {\n                    const value = this.getSingleFileProperty({ property, record });\n                    if (python.TypeInstantiation.isNop(value)) {\n                        break;\n                    }\n                    result.fileFields.push({\n                        name: this.context.getPropertyName(property.name),\n                        value\n                    });\n                    break;\n                }\n                case \"fileArray\": {\n                    const value = this.getArrayFileProperty({ property, record });\n                    if (python.TypeInstantiation.isNop(value)) {\n                        break;\n                    }\n                    result.fileFields.push({\n                        name: this.context.getPropertyName(property.name),\n                        value\n                    });\n                    break;\n                }\n                case \"bodyProperty\": {\n                    const value = this.getBodyProperty({ property, record });\n                    if (python.TypeInstantiation.isNop(value)) {\n                        break;\n                    }\n                    result.bodyPropertyFields.push({\n                        name: this.context.getPropertyName(property.name.name),\n                        value\n                    });\n                    break;\n                }\n                default:\n                    assertNever(property);\n            }\n        }\n        return result;\n    }\n\n    private getSingleFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): python.TypeInstantiation {\n        let fileValue = this.context.getSingleFileValue({ property, record });\n\n        if (fileValue == null) {\n            fileValue = `example_${property.wireValue ?? \"file\"}`;\n        }\n\n        return this.context.getFileFromString(fileValue);\n    }\n\n    private getArrayFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): python.TypeInstantiation {\n        const fileValues = this.context.getFileArrayValues({ property, record });\n        if (fileValues == null) {\n            const fallback = `example_${property.wireValue ?? \"files\"}`;\n            return python.TypeInstantiation.list([this.context.getFileFromString(fallback)]);\n        }\n        return python.TypeInstantiation.list(fileValues.map((value) => this.context.getFileFromString(value)));\n    }\n\n    private getBodyProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.NamedParameter;\n        record: Record<string, unknown>;\n    }): python.TypeInstantiation {\n        const bodyPropertyValue = record[property.name.wireValue];\n        if (bodyPropertyValue == null) {\n            return python.TypeInstantiation.nop();\n        }\n        return this.context.dynamicTypeLiteralMapper.convert({\n            typeReference: property.typeReference,\n            value: bodyPropertyValue\n        });\n    }\n}\n","import { AbstractAstNode, Scope, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { python } from \"@fern-api/python-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper.js\";\n\nconst STRING_TYPE_REFERENCE: FernIr.dynamic.TypeReference = {\n    type: \"primitive\",\n    value: \"STRING\"\n};\nconst SNIPPET_MODULE_PATH = [\"example\"];\nconst CLIENT_VAR_NAME = \"client\";\nconst REQUEST_BODY_ARG_NAME = \"request\";\n\nexport class EndpointSnippetGenerator {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public async generateSnippet({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): Promise<string> {\n        const file = this.buildPythonFile({ endpoint, snippet: request });\n        return file.toString();\n    }\n\n    public generateSnippetSync({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): string {\n        const file = this.buildPythonFile({ endpoint, snippet: request });\n        return file.toString();\n    }\n\n    public async generateSnippetAst({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): Promise<AbstractAstNode> {\n        return this.buildPythonFile({ endpoint, snippet: request });\n    }\n\n    /**\n     * Generates just the method call AST without the client instantiation.\n     * This is useful for wire tests where the client is created separately\n     * with test-specific configuration.\n     */\n    public generateMethodCallSnippetAst({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): python.AstNode {\n        return this.callMethod({ endpoint, snippet: request });\n    }\n\n    private buildPythonFile({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): python.PythonFile {\n        return python.file({\n            path: SNIPPET_MODULE_PATH,\n            statements: [this.constructClient({ endpoint, snippet }), this.callMethod({ endpoint, snippet })]\n        });\n    }\n\n    private constructClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): python.AstNode {\n        return python.assign({\n            lhs: python.reference({ name: CLIENT_VAR_NAME }),\n            rhs: python.instantiateClass({\n                classReference: this.context.getRootClientClassReference(),\n                arguments_: this.getConstructorArgs({ endpoint, snippet }).map((arg) =>\n                    python.methodArgument({\n                        name: arg.name,\n                        value: arg.value\n                    })\n                ),\n                multiline: true\n            })\n        });\n    }\n\n    private getConstructorArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): python.NamedValue[] {\n        const fields: python.NamedValue[] = [];\n        const environmentArgs = this.getConstructorEnvironmentArgs({\n            baseUrl: snippet.baseURL,\n            environment: snippet.environment\n        });\n        if (environmentArgs.length > 0) {\n            fields.push(...environmentArgs);\n        }\n        if (endpoint.auth != null) {\n            if (snippet.auth != null) {\n                fields.push(...this.getConstructorAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n            } else {\n                this.context.errors.add({\n                    severity: Severity.Warning,\n                    message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n                });\n            }\n        }\n\n        this.context.errors.scope(Scope.PathParameters);\n        if (this.context.ir.pathParameters != null) {\n            fields.push(...this.getPathParameters({ namedParameters: this.context.ir.pathParameters, snippet }));\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.Headers);\n        if (this.context.ir.headers != null && snippet.headers != null) {\n            fields.push(\n                ...this.getConstructorHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n            );\n        }\n        this.context.errors.unscope();\n        return fields;\n    }\n\n    private getConstructorEnvironmentArgs({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): python.NamedValue[] {\n        const environmentValue = this.getEnvironmentValue({ baseUrl, environment });\n        if (environmentValue == null) {\n            return [];\n        }\n\n        if (environment != null && this.context.isMultiEnvironmentValues(environment)) {\n            return [\n                {\n                    name: \"environment\",\n                    value: environmentValue\n                }\n            ];\n        }\n\n        return [\n            {\n                name: this.getEnvironmentOptionName({ environment }),\n                value: environmentValue\n            }\n        ];\n    }\n\n    private getEnvironmentValue({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): python.TypeInstantiation | undefined {\n        if (baseUrl != null && environment != null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Cannot specify both baseUrl and environment options\"\n            });\n            return undefined;\n        }\n        if (baseUrl != null) {\n            return python.TypeInstantiation.str(baseUrl);\n        }\n        if (environment != null) {\n            if (this.context.isSingleEnvironmentID(environment)) {\n                const environmentTypeReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n                if (environmentTypeReference == null) {\n                    this.context.errors.add({\n                        severity: Severity.Warning,\n                        message: `Environment ${JSON.stringify(environment)} was not found`\n                    });\n                    return undefined;\n                }\n                return python.TypeInstantiation.reference(environmentTypeReference);\n            }\n            if (this.context.isMultiEnvironmentValues(environment)) {\n                if (!this.context.validateMultiEnvironmentUrlValues(environment)) {\n                    return undefined;\n                }\n                return python.TypeInstantiation.reference(\n                    python.instantiateClass({\n                        classReference: this.context.getEnvironmentClassReference(),\n                        arguments_: Object.entries(environment)\n                            .map(([key, value]) => ({\n                                name: key,\n                                value: this.context.dynamicTypeLiteralMapper.convert({\n                                    typeReference: STRING_TYPE_REFERENCE,\n                                    value\n                                })\n                            }))\n                            .map((arg) =>\n                                python.methodArgument({\n                                    name: arg.name,\n                                    value: arg.value\n                                })\n                            ),\n                        multiline: true\n                    })\n                );\n            }\n        }\n        return undefined;\n    }\n\n    private getConstructorAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): python.NamedValue[] {\n        switch (auth.type) {\n            case \"basic\":\n                if (values.type !== \"basic\") {\n                    this.addAuthMismatchError(auth, values);\n                    return [];\n                }\n                return this.getConstructorBasicAuthArg({ auth, values });\n            case \"bearer\":\n                if (values.type !== \"bearer\") {\n                    this.addAuthMismatchError(auth, values);\n                    return [];\n                }\n                return this.getConstructorBearerAuthArgs({ auth, values });\n            case \"header\":\n                if (values.type !== \"header\") {\n                    this.addAuthMismatchError(auth, values);\n                    return [];\n                }\n                return this.getConstructorHeaderAuthArgs({ auth, values });\n            case \"oauth\":\n                if (values.type !== \"oauth\") {\n                    this.addAuthMismatchError(auth, values);\n                    return [];\n                }\n                return this.getConstructorOAuthArgs({ auth, values });\n            case \"inferred\":\n                if (values.type !== \"inferred\") {\n                    this.addAuthMismatchError(auth, values);\n                    return [];\n                }\n                return this.getConstructorInferredAuthArgs({ auth, values });\n            default:\n                assertNever(auth);\n        }\n    }\n\n    private addAuthMismatchError(auth: FernIr.dynamic.Auth, values: FernIr.dynamic.AuthValues): void {\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: this.context.newAuthMismatchError({ auth, values }).message\n        });\n    }\n\n    private addWarning(message: string): void {\n        this.context.errors.add({ severity: Severity.Warning, message });\n    }\n\n    private getConstructorBasicAuthArg({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BasicAuth;\n        values: FernIr.dynamic.BasicAuthValues;\n    }): python.NamedValue[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.username),\n                value: python.TypeInstantiation.str(values.username)\n            },\n            {\n                name: this.context.getPropertyName(auth.password),\n                value: python.TypeInstantiation.str(values.password)\n            }\n        ];\n    }\n\n    private getConstructorBearerAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BearerAuth;\n        values: FernIr.dynamic.BearerAuthValues;\n    }): python.NamedValue[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.token),\n                value: python.TypeInstantiation.str(values.token)\n            }\n        ];\n    }\n\n    private getConstructorHeaderAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.HeaderAuth;\n        values: FernIr.dynamic.HeaderAuthValues;\n    }): python.NamedValue[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.header.name.name),\n                value: this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: auth.header.typeReference,\n                    value: values.value\n                })\n            }\n        ];\n    }\n\n    private getConstructorOAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.OAuth;\n        values: FernIr.dynamic.OAuthValues;\n    }): python.NamedValue[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.clientId),\n                value: python.TypeInstantiation.str(values.clientId)\n            },\n            {\n                name: this.context.getPropertyName(auth.clientSecret),\n                value: python.TypeInstantiation.str(values.clientSecret)\n            }\n        ];\n    }\n\n    private getConstructorInferredAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.InferredAuth;\n        values: FernIr.dynamic.InferredAuthValues;\n    }): python.NamedValue[] {\n        const parameters = auth.parameters ?? [];\n        if (parameters.length === 0) {\n            this.addWarning(\"Inferred auth scheme is missing parameters; cannot generate constructor arguments.\");\n            return [];\n        }\n\n        const authValues = values.values;\n        if (authValues == null) {\n            this.addWarning(\"Inferred auth values were not provided; cannot generate constructor arguments.\");\n            return [];\n        }\n\n        const fields: python.NamedValue[] = [];\n        for (const parameter of parameters) {\n            const wireValue = parameter.name.wireValue;\n            if (!Object.hasOwn(authValues, wireValue)) {\n                this.addWarning(`Missing inferred auth value for ${wireValue}`);\n                continue;\n            }\n            const value = authValues[wireValue];\n            const typeLiteral = this.context.dynamicTypeLiteralMapper.convert({\n                typeReference: parameter.typeReference,\n                value\n            });\n            if (python.TypeInstantiation.isNop(typeLiteral)) {\n                continue;\n            }\n            fields.push({\n                name: this.context.getPropertyName(parameter.name.name),\n                value: typeLiteral\n            });\n        }\n        return fields;\n    }\n\n    private getConstructorHeaderArgs({\n        headers,\n        values\n    }: {\n        headers: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): python.NamedValue[] {\n        const fields: python.NamedValue[] = [];\n        for (const header of headers) {\n            const value = values[header.name.wireValue];\n            const field = this.getConstructorHeaderArg({ header, value });\n            if (field != null) {\n                fields.push(field);\n            }\n        }\n        return fields;\n    }\n\n    private getConstructorHeaderArg({\n        header,\n        value\n    }: {\n        header: FernIr.dynamic.NamedParameter;\n        value: unknown;\n    }): python.NamedValue | undefined {\n        const typeLiteral = this.context.dynamicTypeLiteralMapper.convert({\n            typeReference: header.typeReference,\n            value\n        });\n        if (python.TypeInstantiation.isNop(typeLiteral)) {\n            // Literal header values (e.g. \"X-API-Version\") should not be included in the\n            // client constructor.\n            return undefined;\n        }\n        return {\n            name: this.context.getPropertyName(header.name.name),\n            value: typeLiteral\n        };\n    }\n\n    private callMethod({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): python.AstNode {\n        return python.invokeMethod({\n            on: python.reference({ name: CLIENT_VAR_NAME }),\n            method: this.getMethod({ endpoint }),\n            arguments_: this.getMethodArgs({ endpoint, snippet })\n                .filter((arg) => !python.TypeInstantiation.isNop(arg.value))\n                .map((arg) =>\n                    python.methodArgument({\n                        name: arg.name,\n                        value: arg.value\n                    })\n                ),\n            multiline: true\n        });\n    }\n\n    private getMethodArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): python.NamedValue[] {\n        switch (endpoint.request.type) {\n            case \"inlined\":\n                return this.getMethodArgsForInlinedRequest({ request: endpoint.request, snippet });\n            case \"body\":\n                return this.getMethodArgsForBodyRequest({ request: endpoint.request, snippet });\n            default:\n                assertNever(endpoint.request);\n        }\n    }\n\n    private getMethodArgsForBodyRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.BodyRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): python.NamedValue[] {\n        const args: python.NamedValue[] = [];\n\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n\n        // Get body property names to check for collisions\n        let bodyPropertyNames: Set<string> = new Set();\n        if (request.body != null) {\n            const bodyArgs = this.getBodyRequestArgs({ body: request.body, value: snippet.requestBody });\n            bodyPropertyNames = new Set(bodyArgs.map((arg) => arg.name));\n\n            // Also include schema-level property names from the body type so that we\n            // catch collisions even when the example omits a particular field.\n            if (request.body.type === \"typeReference\") {\n                const typeReference = request.body.value;\n                if (typeReference.type === \"named\") {\n                    const named = this.context.resolveNamedType({ typeId: typeReference.value });\n                    if (named != null && named.type === \"object\") {\n                        for (const property of named.properties) {\n                            if (this.resolvesToLiteralType(property.typeReference)) {\n                                continue;\n                            }\n                            bodyPropertyNames.add(this.context.getPropertyName(property.name.name));\n                        }\n                    }\n                }\n            }\n        }\n\n        // Add path parameters, adding underscore suffix if they collide with body properties\n        if (pathParameters.length > 0) {\n            const pathArgs = this.getPathParameters({ namedParameters: pathParameters, snippet });\n            const disambiguatedPathArgs = pathArgs.map((arg) => {\n                // If this path parameter name collides with a body property, add underscore suffix\n                if (bodyPropertyNames.has(arg.name)) {\n                    return { ...arg, name: arg.name + \"_\" };\n                }\n                return arg;\n            });\n            args.push(...disambiguatedPathArgs);\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        if (request.body != null) {\n            args.push(...this.getBodyRequestArgs({ body: request.body, value: snippet.requestBody }));\n        }\n        this.context.errors.unscope();\n\n        return args;\n    }\n\n    private getBodyRequestArgs({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): python.NamedValue[] {\n        switch (body.type) {\n            case \"bytes\":\n                return [\n                    {\n                        name: REQUEST_BODY_ARG_NAME,\n                        value: this.getBytesBodyRequestTypeInstantiation({ value })\n                    }\n                ];\n            case \"typeReference\":\n                return this.getBodyRequestArgsForTypeReference({ typeReference: body.value, value });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getBodyRequestArgsForTypeReference({\n        typeReference,\n        value\n    }: {\n        typeReference: FernIr.dynamic.TypeReference;\n        value: unknown;\n    }): python.NamedValue[] {\n        switch (typeReference.type) {\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: typeReference.value });\n                if (named == null) {\n                    return [];\n                }\n                return this.getBodyRequestArgsForNamedTypeReference({ typeReference, named, value });\n            }\n            case \"nullable\":\n            case \"optional\": {\n                // Check if the inner type is an object - if so, don't flatten it\n                const innerType = typeReference.value;\n                if (innerType.type === \"named\") {\n                    const named = this.context.resolveNamedType({ typeId: innerType.value });\n                    if (named?.type === \"object\") {\n                        // Optional objects should NOT be flattened - use as single 'request' parameter\n                        return [\n                            {\n                                name: REQUEST_BODY_ARG_NAME,\n                                value: this.context.dynamicTypeLiteralMapper.convert({\n                                    typeReference: innerType,\n                                    value\n                                })\n                            }\n                        ];\n                    }\n                }\n                // For non-object types, continue unwrapping\n                return this.getBodyRequestArgsForTypeReference({ typeReference: typeReference.value, value });\n            }\n            case \"list\":\n            case \"map\":\n            case \"set\":\n            case \"literal\":\n            case \"primitive\":\n            case \"unknown\":\n                return [\n                    {\n                        name: REQUEST_BODY_ARG_NAME,\n                        value: this.context.dynamicTypeLiteralMapper.convert({ typeReference, value })\n                    }\n                ];\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    private getBodyRequestArgsForNamedTypeReference({\n        typeReference,\n        named,\n        value\n    }: {\n        typeReference: FernIr.dynamic.TypeReference;\n        named: FernIr.dynamic.NamedType;\n        value: unknown;\n    }): python.NamedValue[] {\n        switch (named.type) {\n            case \"alias\":\n                return this.getBodyRequestArgsForTypeReference({ typeReference: named.typeReference, value });\n            case \"enum\":\n            case \"discriminatedUnion\":\n            case \"undiscriminatedUnion\":\n                return [\n                    {\n                        name: REQUEST_BODY_ARG_NAME,\n                        value: this.context.dynamicTypeLiteralMapper.convert({ typeReference, value })\n                    }\n                ];\n            case \"object\": {\n                if (this.context.customConfig.inline_request_params === false) {\n                    return [\n                        {\n                            name: REQUEST_BODY_ARG_NAME,\n                            value: this.context.dynamicTypeLiteralMapper.convert({ typeReference, value })\n                        }\n                    ];\n                }\n                const bodyProperties = this.context.associateByWireValue({\n                    parameters: named.properties,\n                    values: this.context.getRecord(value) ?? {}\n                });\n\n                const nonLiteralBodyProperties = bodyProperties.filter(\n                    (property) => !this.resolvesToLiteralType(property.typeReference)\n                );\n\n                return nonLiteralBodyProperties.map((property) => ({\n                    name: this.context.getPropertyName(property.name.name),\n                    value: this.context.dynamicTypeLiteralMapper.convert(property)\n                }));\n            }\n            default:\n                assertNever(named);\n        }\n    }\n\n    private resolvesToLiteralType(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"literal\":\n                return true;\n            case \"optional\":\n            case \"nullable\":\n                return this.resolvesToLiteralType(typeReference.value);\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: typeReference.value });\n                if (named == null) {\n                    return false;\n                }\n                if (named.type === \"alias\") {\n                    return this.resolvesToLiteralType(named.typeReference);\n                }\n                return false;\n            }\n            case \"list\":\n            case \"map\":\n            case \"set\":\n            case \"primitive\":\n            case \"unknown\":\n                return false;\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    private getBodyRequestArgsForBytes({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBody;\n        value: unknown;\n    }): python.NamedValue[] {\n        const typeInstantiation = this.getBytesBodyRequestTypeInstantiation({ value });\n        if (python.TypeInstantiation.isNop(typeInstantiation)) {\n            return [];\n        }\n        return [\n            {\n                name: REQUEST_BODY_ARG_NAME,\n                value: typeInstantiation\n            }\n        ];\n    }\n\n    private getBytesBodyRequestTypeInstantiation({ value }: { value: unknown }): python.TypeInstantiation {\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected bytes value to be a string, got ${typeof value}`\n            });\n            return python.TypeInstantiation.nop();\n        }\n        return python.TypeInstantiation.bytes(value);\n    }\n\n    private getBodyPropertyNamesForInlinedRequest(request: FernIr.dynamic.InlinedRequest): Set<string> {\n        if (request.body == null) {\n            return new Set();\n        }\n\n        switch (request.body.type) {\n            case \"referenced\": {\n                const bodyType = request.body.bodyType;\n                if (bodyType.type !== \"typeReference\") {\n                    return new Set();\n                }\n                const typeReference = bodyType.value;\n                if (typeReference.type !== \"named\") {\n                    return new Set();\n                }\n                const named = this.context.resolveNamedType({ typeId: typeReference.value });\n                if (named == null || named.type !== \"object\") {\n                    return new Set();\n                }\n                const result = new Set<string>();\n                for (const property of named.properties) {\n                    if (this.resolvesToLiteralType(property.typeReference)) {\n                        continue;\n                    }\n                    result.add(this.context.getPropertyName(property.name.name));\n                }\n                return result;\n            }\n            case \"properties\":\n                return new Set(\n                    request.body.value\n                        .filter((parameter) => !this.resolvesToLiteralType(parameter.typeReference))\n                        .map((parameter) => this.context.getPropertyName(parameter.name.name))\n                );\n            case \"fileUpload\":\n                return new Set(\n                    request.body.properties\n                        .filter((property) => property.type === \"bodyProperty\")\n                        .map((property) => this.context.getPropertyName(property.name.name))\n                );\n            default:\n                assertNever(request.body);\n        }\n    }\n\n    private getMethodArgsForInlinedRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): python.NamedValue[] {\n        const args: python.NamedValue[] = [];\n\n        const inlinePathParameters = this.context.shouldInlinePathParameters();\n\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameterFields: python.NamedValue[] = [];\n        if (request.pathParameters != null) {\n            pathParameterFields.push(...this.getPathParameters({ namedParameters: request.pathParameters, snippet }));\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const filePropertyInfo = this.getFilePropertyInfo({ request, snippet });\n        this.context.errors.unscope();\n\n        const bodyPropertyNames = this.getBodyPropertyNamesForInlinedRequest(request);\n        const disambiguatedPathParamFields = pathParameterFields.map((field) =>\n            bodyPropertyNames.has(field.name) ? { ...field, name: `${field.name}_` } : field\n        );\n\n        if (\n            !this.context.includePathParametersInWrappedRequest({\n                request,\n                inlinePathParameters\n            })\n        ) {\n            args.push(...disambiguatedPathParamFields);\n        }\n\n        if (\n            this.context.needsRequestParameter({\n                request,\n                inlinePathParameters,\n                inlineFileProperties: true\n            })\n        ) {\n            args.push(\n                ...this.getInlinedRequestArgs({\n                    request,\n                    snippet,\n                    pathParameterFields: this.context.includePathParametersInWrappedRequest({\n                        request,\n                        inlinePathParameters\n                    })\n                        ? disambiguatedPathParamFields\n                        : [],\n                    filePropertyInfo\n                })\n            );\n        }\n        return args;\n    }\n\n    private getFilePropertyInfo({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): FilePropertyInfo {\n        if (request.body == null || !this.context.isFileUploadRequestBody(request.body)) {\n            return {\n                fileFields: [],\n                bodyPropertyFields: []\n            };\n        }\n        return this.context.filePropertyMapper.getFilePropertyInfo({\n            body: request.body,\n            value: snippet.requestBody\n        });\n    }\n\n    private getInlinedRequestArgs({\n        request,\n        snippet,\n        pathParameterFields,\n        filePropertyInfo\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        pathParameterFields: python.NamedValue[];\n        filePropertyInfo: FilePropertyInfo;\n    }): python.NamedValue[] {\n        this.context.errors.scope(Scope.QueryParameters);\n        const queryParameters = this.context.associateQueryParametersByWireValue({\n            parameters: request.queryParameters ?? [],\n            values: snippet.queryParameters ?? {}\n        });\n        const queryParameterFields = queryParameters.map((queryParameter) => ({\n            name: this.context.getPropertyName(queryParameter.name.name),\n            value: this.context.dynamicTypeLiteralMapper.convert(queryParameter)\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.Headers);\n        const headers = this.context.associateByWireValue({\n            parameters: request.headers ?? [],\n            values: snippet.headers ?? {}\n        });\n        const headerFields = headers.map((header) => ({\n            name: this.context.getPropertyName(header.name.name),\n            value: this.context.dynamicTypeLiteralMapper.convert(header)\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const requestBodyFields =\n            request.body != null\n                ? this.getInlinedRequestBodyObjectFields({\n                      body: request.body,\n                      value: snippet.requestBody,\n                      filePropertyInfo\n                  })\n                : [];\n        this.context.errors.unscope();\n\n        return [...pathParameterFields, ...queryParameterFields, ...headerFields, ...requestBodyFields];\n    }\n\n    private getInlinedRequestBodyObjectFields({\n        body,\n        value,\n        filePropertyInfo\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        value: unknown;\n        filePropertyInfo: FilePropertyInfo;\n    }): python.NamedValue[] {\n        switch (body.type) {\n            case \"properties\":\n                return this.getInlinedRequestBodyPropertyObjectFields({ parameters: body.value, value });\n            case \"referenced\":\n                return this.getReferencedRequestBodyPropertyTypeInstantiation({ body, value });\n            case \"fileUpload\":\n                return this.getFileUploadRequestBodyObjectFields({ filePropertyInfo });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getFileUploadRequestBodyObjectFields({\n        filePropertyInfo\n    }: {\n        filePropertyInfo: FilePropertyInfo;\n    }): python.NamedValue[] {\n        return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n    }\n\n    private getReferencedRequestBodyPropertyTypeInstantiation({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBody;\n        value: unknown;\n    }): python.NamedValue[] {\n        const bodyType = body.bodyType;\n        switch (bodyType.type) {\n            case \"bytes\":\n                return this.getBodyRequestArgsForBytes({ body, value });\n            case \"typeReference\":\n                return this.getBodyRequestArgsForTypeReference({ typeReference: bodyType.value, value });\n            default:\n                assertNever(bodyType);\n        }\n    }\n\n    private getInlinedRequestBodyPropertyObjectFields({\n        parameters,\n        value\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        value: unknown;\n    }): python.NamedValue[] {\n        const fields: python.NamedValue[] = [];\n\n        const bodyProperties = this.context.associateByWireValue({\n            parameters,\n            values: this.context.getRecord(value) ?? {}\n        });\n\n        const nonLiteralBodyProperties = bodyProperties.filter(\n            (parameter) => !this.resolvesToLiteralType(parameter.typeReference)\n        );\n\n        for (const parameter of nonLiteralBodyProperties) {\n            fields.push({\n                name: this.context.getPropertyName(parameter.name.name),\n                value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n            });\n        }\n\n        return fields;\n    }\n\n    private getPathParameters({\n        namedParameters,\n        snippet\n    }: {\n        namedParameters: FernIr.dynamic.NamedParameter[];\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): python.NamedValue[] {\n        const args: python.NamedValue[] = [];\n\n        const nonLiteralPathParameters = namedParameters.filter(\n            (parameter) => !this.resolvesToLiteralType(parameter.typeReference)\n        );\n\n        const pathParameters = this.context.associateByWireValue({\n            parameters: nonLiteralPathParameters,\n            values: snippet.pathParameters ?? {},\n\n            // Path parameters are distributed across the client constructor\n            // and the request method, so we ignore missing parameters here.\n            ignoreMissingParameters: true\n        });\n        for (const parameter of pathParameters) {\n            args.push({\n                name: this.context.getPropertyName(parameter.name.name),\n                value: this.context.dynamicTypeLiteralMapper.convert(parameter)\n            });\n        }\n\n        return args;\n    }\n\n    private getMethod({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n        if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n            return `${endpoint.declaration.fernFilepath.allParts\n                .map((val) => this.context.getMethodName(val))\n                .join(\".\")}.${this.context.getMethodName(endpoint.declaration.name)}`;\n        }\n        return this.context.getMethodName(endpoint.declaration.name);\n    }\n\n    private getEnvironmentOptionName({\n        environment\n    }: {\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): string {\n        if (environment != null) {\n            return \"environment\";\n        }\n        return \"base_url\";\n    }\n}\n","export const __dirname = \"/\";\n","function unimplemented(name) {\r\n  throw new Error('Node.js process ' + name + ' is not supported by JSPM core outside of Node.js');\r\n}\r\n\r\nvar queue = [];\r\nvar draining = false;\r\nvar currentQueue;\r\nvar queueIndex = -1;\r\n\r\nfunction cleanUpNextTick() {\r\n  if (!draining || !currentQueue)\r\n    return;\r\n  draining = false;\r\n  if (currentQueue.length) {\r\n    queue = currentQueue.concat(queue);\r\n  }\r\n  else {\r\n    queueIndex = -1;\r\n  }\r\n  if (queue.length)\r\n    drainQueue();\r\n}\r\n\r\nfunction drainQueue() {\r\n  if (draining)\r\n    return;\r\n  var timeout = setTimeout(cleanUpNextTick, 0);\r\n  draining = true;\r\n\r\n  var len = queue.length;\r\n  while(len) {\r\n    currentQueue = queue;\r\n    queue = [];\r\n    while (++queueIndex < len) {\r\n      if (currentQueue)\r\n        currentQueue[queueIndex].run();\r\n    }\r\n    queueIndex = -1;\r\n    len = queue.length;\r\n  }\r\n  currentQueue = null;\r\n  draining = false;\r\n  clearTimeout(timeout);\r\n}\r\n\r\nfunction nextTick (fun) {\r\n  var args = new Array(arguments.length - 1);\r\n  if (arguments.length > 1) {\r\n    for (var i = 1; i < arguments.length; i++)\r\n      args[i - 1] = arguments[i];\r\n  }\r\n  queue.push(new Item(fun, args));\r\n  if (queue.length === 1 && !draining)\r\n    setTimeout(drainQueue, 0);\r\n}\r\n// v8 likes predictible objects\r\nfunction Item(fun, array) {\r\n  this.fun = fun;\r\n  this.array = array;\r\n}\r\nItem.prototype.run = function () {\r\n  this.fun.apply(null, this.array);\r\n};\r\n\r\nvar title = 'browser';\r\nvar arch = 'x64';\r\nvar platform = 'browser';\r\nvar env = {\r\n  PATH: '/usr/bin',\r\n  LANG: typeof navigator !== 'undefined' ? navigator.language + '.UTF-8' : undefined,\r\n  PWD: '/',\r\n  HOME: '/home',\r\n  TMP: '/tmp',\r\n};\r\nvar argv = ['/usr/bin/node'];\r\nvar execArgv = [];\r\nvar version = 'v16.8.0';\r\nvar versions = {};\r\n\r\nvar emitWarning = function(message, type) {\r\n  console.warn((type ? (type + ': ') : '') + message);\r\n};\r\n\r\nvar binding = function(name) { unimplemented('binding'); };\r\n\r\nvar umask = function(mask) { return 0; };\r\n\r\nvar cwd = function() { return '/'; };\r\nvar chdir = function(dir) {};\r\n\r\nvar release = {\r\n  name: 'node',\r\n  sourceUrl: '',\r\n  headersUrl: '',\r\n  libUrl: '',\r\n};\r\n\r\nfunction noop() {}\r\n\r\nvar browser = true;\r\nvar _rawDebug = noop;\r\nvar moduleLoadList = [];\r\nfunction _linkedBinding(name) { unimplemented('_linkedBinding'); }\r\nvar domain = {};\r\nvar _exiting = false;\r\nvar config = {};\r\nfunction dlopen(name) { unimplemented('dlopen'); }\r\nfunction _getActiveRequests() { return []; }\r\nfunction _getActiveHandles() { return []; }\r\nvar reallyExit = noop;\r\nvar _kill = noop;\r\nvar cpuUsage = function() { return {}; };\r\nvar resourceUsage = cpuUsage;\r\nvar memoryUsage = cpuUsage;\r\nvar kill = noop;\r\nvar exit = noop;\r\nvar openStdin = noop;\r\nvar allowedNodeEnvironmentFlags = {};\r\nfunction assert(condition, message) {\r\n  if (!condition) throw new Error(message || 'assertion error');\r\n}\r\nvar features = {\r\n  inspector: false,\r\n  debug: false,\r\n  uv: false,\r\n  ipv6: false,\r\n  tls_alpn: false,\r\n  tls_sni: false,\r\n  tls_ocsp: false,\r\n  tls: false,\r\n  cached_builtins: true,\r\n};\r\nvar _fatalExceptions = noop;\r\nvar setUncaughtExceptionCaptureCallback = noop;\r\nfunction hasUncaughtExceptionCaptureCallback() { return false; }var _tickCallback = noop;\r\nvar _debugProcess = noop;\r\nvar _debugEnd = noop;\r\nvar _startProfilerIdleNotifier = noop;\r\nvar _stopProfilerIdleNotifier = noop;\r\nvar stdout = undefined;\r\nvar stderr = undefined;\r\nvar stdin = undefined;\r\nvar abort = noop;\r\nvar pid = 2;\r\nvar ppid = 1;\r\nvar execPath = '/bin/usr/node';\r\nvar debugPort = 9229;\r\nvar argv0 = 'node';\r\nvar _preload_modules = [];\r\nvar setSourceMapsEnabled = noop;\r\n\r\nvar _performance = {\r\n  now: typeof performance !== 'undefined' ? performance.now.bind(performance) : undefined,\r\n  timing: typeof performance !== 'undefined' ? performance.timing : undefined,\r\n};\r\nif (_performance.now === undefined) {\r\n  var nowOffset = Date.now();\r\n\r\n  if (_performance.timing && _performance.timing.navigationStart) {\r\n    nowOffset = _performance.timing.navigationStart;\r\n  }\r\n  _performance.now = () => Date.now() - nowOffset;\r\n}\r\n\r\nfunction uptime() {\r\n  return _performance.now() / 1000;\r\n}\r\n\r\nvar nanoPerSec = 1000000000;\r\nfunction hrtime(previousTimestamp) {\r\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\r\n  var clocktime = _performance.now() * 1e-3;\r\n  var seconds = Math.floor(clocktime) + baseNow;\r\n  var nanoseconds = Math.floor((clocktime % 1) * 1e9);\r\n  if (previousTimestamp) {\r\n    seconds = seconds - previousTimestamp[0];\r\n    nanoseconds = nanoseconds - previousTimestamp[1];\r\n    if (nanoseconds < 0) {\r\n      seconds--;\r\n      nanoseconds += nanoPerSec;\r\n    }\r\n  }\r\n  return [seconds, nanoseconds];\r\n}hrtime.bigint = function(time) {\r\n  var diff = hrtime(time);\r\n  if (typeof BigInt === 'undefined') {\r\n    return diff[0] * nanoPerSec + diff[1];\r\n  }\r\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\r\n};\r\n\r\nvar _maxListeners = 10;\r\nvar _events = {};\r\nvar _eventsCount = 0;\r\nfunction on () { return process }var addListener = on;\r\nvar once = on;\r\nvar off = on;\r\nvar removeListener = on;\r\nvar removeAllListeners = on;\r\nvar emit = noop;\r\nvar prependListener = on;\r\nvar prependOnceListener = on;\r\nfunction listeners (name) { return []; }\r\nvar process = {\r\n  version,\r\n  versions,\r\n  arch,\r\n  platform,\r\n  browser,\r\n  release,\r\n  _rawDebug,\r\n  moduleLoadList,\r\n  binding,\r\n  _linkedBinding,\r\n  _events,\r\n  _eventsCount,\r\n  _maxListeners,\r\n  on,\r\n  addListener,\r\n  once,\r\n  off,\r\n  removeListener,\r\n  removeAllListeners,\r\n  emit,\r\n  prependListener,\r\n  prependOnceListener,\r\n  listeners,\r\n  domain,\r\n  _exiting,\r\n  config,\r\n  dlopen,\r\n  uptime,\r\n  _getActiveRequests,\r\n  _getActiveHandles,\r\n  reallyExit,\r\n  _kill,\r\n  cpuUsage,\r\n  resourceUsage,\r\n  memoryUsage,\r\n  kill,\r\n  exit,\r\n  openStdin,\r\n  allowedNodeEnvironmentFlags,\r\n  assert,\r\n  features,\r\n  _fatalExceptions,\r\n  setUncaughtExceptionCaptureCallback,\r\n  hasUncaughtExceptionCaptureCallback,\r\n  emitWarning,\r\n  nextTick,\r\n  _tickCallback,\r\n  _debugProcess,\r\n  _debugEnd,\r\n  _startProfilerIdleNotifier,\r\n  _stopProfilerIdleNotifier,\r\n  stdout,\r\n  stdin,\r\n  stderr,\r\n  abort,\r\n  umask,\r\n  chdir,\r\n  cwd,\r\n  env,\r\n  title,\r\n  argv,\r\n  execArgv,\r\n  pid,\r\n  ppid,\r\n  execPath,\r\n  debugPort,\r\n  hrtime,\r\n  argv0,\r\n  _preload_modules,\r\n  setSourceMapsEnabled,\r\n};\n\nexport { _debugEnd, _debugProcess, _events, _eventsCount, _exiting, _fatalExceptions, _getActiveHandles, _getActiveRequests, _kill, _linkedBinding, _maxListeners, _preload_modules, _rawDebug, _startProfilerIdleNotifier, _stopProfilerIdleNotifier, _tickCallback, abort, addListener, allowedNodeEnvironmentFlags, arch, argv, argv0, assert, binding, browser, chdir, config, cpuUsage, cwd, debugPort, process as default, dlopen, domain, emit, emitWarning, env, execArgv, execPath, exit, features, hasUncaughtExceptionCaptureCallback, hrtime, kill, listeners, memoryUsage, moduleLoadList, nextTick, off, on, once, openStdin, pid, platform, ppid, prependListener, prependOnceListener, reallyExit, release, removeAllListeners, removeListener, resourceUsage, setSourceMapsEnabled, setUncaughtExceptionCaptureCallback, stderr, stdin, stdout, title, umask, uptime, version, versions };\n","export * as process from \"process\";\n","var exports$2 = {},\n  _dewExec$2 = false;\nfunction dew$2() {\n  if (_dewExec$2) return exports$2;\n  _dewExec$2 = true;\n  exports$2.byteLength = byteLength;\n  exports$2.toByteArray = toByteArray;\n  exports$2.fromByteArray = fromByteArray;\n  var lookup = [];\n  var revLookup = [];\n  var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i = 0, len = code.length; i < len; ++i) {\n    lookup[i] = code[i];\n    revLookup[code.charCodeAt(i)] = i;\n  }\n\n  // Support decoding URL-safe base64 strings, as Node.js does.\n  // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n  function getLens(b64) {\n    var len = b64.length;\n    if (len % 4 > 0) {\n      throw new Error(\"Invalid string. Length must be a multiple of 4\");\n    }\n\n    // Trim off extra bytes after placeholder bytes are found\n    // See: https://github.com/beatgammit/base64-js/issues/42\n    var validLen = b64.indexOf(\"=\");\n    if (validLen === -1) validLen = len;\n    var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n    return [validLen, placeHoldersLen];\n  }\n\n  // base64 is 4/3 + up to two characters of the original data\n  function byteLength(b64) {\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function _byteLength(b64, validLen, placeHoldersLen) {\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function toByteArray(b64) {\n    var tmp;\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n    var curByte = 0;\n\n    // if there are placeholders, only get up to the last complete 4 chars\n    var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n    var i;\n    for (i = 0; i < len; i += 4) {\n      tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n      arr[curByte++] = tmp >> 16 & 255;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 2) {\n      tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 1) {\n      tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    return arr;\n  }\n  function tripletToBase64(num) {\n    return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n  }\n  function encodeChunk(uint8, start, end) {\n    var tmp;\n    var output = [];\n    for (var i = start; i < end; i += 3) {\n      tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n      output.push(tripletToBase64(tmp));\n    }\n    return output.join(\"\");\n  }\n  function fromByteArray(uint8) {\n    var tmp;\n    var len = uint8.length;\n    var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n    var parts = [];\n    var maxChunkLength = 16383; // must be multiple of 3\n\n    // go through the array every three bytes, we'll deal with trailing stuff later\n    for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n      parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n    }\n\n    // pad the end with zeros, but make sure to not forget the extra bytes\n    if (extraBytes === 1) {\n      tmp = uint8[len - 1];\n      parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n    } else if (extraBytes === 2) {\n      tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n      parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n    }\n    return parts.join(\"\");\n  }\n  return exports$2;\n}\n\nvar exports$1 = {},\n  _dewExec$1 = false;\nfunction dew$1() {\n  if (_dewExec$1) return exports$1;\n  _dewExec$1 = true;\n  /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n  exports$1.read = function (buffer, offset, isLE, mLen, nBytes) {\n    var e, m;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i = isLE ? nBytes - 1 : 0;\n    var d = isLE ? -1 : 1;\n    var s = buffer[offset + i];\n    i += d;\n    e = s & (1 << -nBits) - 1;\n    s >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    m = e & (1 << -nBits) - 1;\n    e >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    if (e === 0) {\n      e = 1 - eBias;\n    } else if (e === eMax) {\n      return m ? NaN : (s ? -1 : 1) * Infinity;\n    } else {\n      m = m + Math.pow(2, mLen);\n      e = e - eBias;\n    }\n    return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n  };\n  exports$1.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n    var e, m, c;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n    var i = isLE ? 0 : nBytes - 1;\n    var d = isLE ? 1 : -1;\n    var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n      m = isNaN(value) ? 1 : 0;\n      e = eMax;\n    } else {\n      e = Math.floor(Math.log(value) / Math.LN2);\n      if (value * (c = Math.pow(2, -e)) < 1) {\n        e--;\n        c *= 2;\n      }\n      if (e + eBias >= 1) {\n        value += rt / c;\n      } else {\n        value += rt * Math.pow(2, 1 - eBias);\n      }\n      if (value * c >= 2) {\n        e++;\n        c /= 2;\n      }\n      if (e + eBias >= eMax) {\n        m = 0;\n        e = eMax;\n      } else if (e + eBias >= 1) {\n        m = (value * c - 1) * Math.pow(2, mLen);\n        e = e + eBias;\n      } else {\n        m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n        e = 0;\n      }\n    }\n    for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n    e = e << mLen | m;\n    eLen += mLen;\n    for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n    buffer[offset + i - d] |= s * 128;\n  };\n  return exports$1;\n}\n\nvar exports = {},\n  _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports;\n  _dewExec = true;\n  const base64 = dew$2();\n  const ieee754 = dew$1();\n  const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" // eslint-disable-line dot-notation\n  ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n  : null;\n  exports.Buffer = Buffer;\n  exports.SlowBuffer = SlowBuffer;\n  exports.INSPECT_MAX_BYTES = 50;\n  const K_MAX_LENGTH = 2147483647;\n  exports.kMaxLength = K_MAX_LENGTH;\n\n  /**\n   * If `Buffer.TYPED_ARRAY_SUPPORT`:\n   *   === true    Use Uint8Array implementation (fastest)\n   *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n   *               implementation (most compatible, even IE6)\n   *\n   * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n   * Opera 11.6+, iOS 4.2+.\n   *\n   * We report that the browser does not support typed arrays if the are not subclassable\n   * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n   * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n   * for __proto__ and has a buggy typed array implementation.\n   */\n  Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n  if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n  }\n  function typedArraySupport() {\n    // Can typed array instances can be augmented?\n    try {\n      const arr = new Uint8Array(1);\n      const proto = {\n        foo: function () {\n          return 42;\n        }\n      };\n      Object.setPrototypeOf(proto, Uint8Array.prototype);\n      Object.setPrototypeOf(arr, proto);\n      return arr.foo() === 42;\n    } catch (e) {\n      return false;\n    }\n  }\n  Object.defineProperty(Buffer.prototype, \"parent\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.buffer;\n    }\n  });\n  Object.defineProperty(Buffer.prototype, \"offset\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.byteOffset;\n    }\n  });\n  function createBuffer(length) {\n    if (length > K_MAX_LENGTH) {\n      throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n    // Return an augmented `Uint8Array` instance\n    const buf = new Uint8Array(length);\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n\n  /**\n   * The Buffer constructor returns instances of `Uint8Array` that have their\n   * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n   * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n   * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n   * returns a single octet.\n   *\n   * The `Uint8Array` prototype remains unmodified.\n   */\n\n  function Buffer(arg, encodingOrOffset, length) {\n    // Common case.\n    if (typeof arg === \"number\") {\n      if (typeof encodingOrOffset === \"string\") {\n        throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n      }\n      return allocUnsafe(arg);\n    }\n    return from(arg, encodingOrOffset, length);\n  }\n  Buffer.poolSize = 8192; // not used by this implementation\n\n  function from(value, encodingOrOffset, length) {\n    if (typeof value === \"string\") {\n      return fromString(value, encodingOrOffset);\n    }\n    if (ArrayBuffer.isView(value)) {\n      return fromArrayView(value);\n    }\n    if (value == null) {\n      throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n    }\n    if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof value === \"number\") {\n      throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n    }\n    const valueOf = value.valueOf && value.valueOf();\n    if (valueOf != null && valueOf !== value) {\n      return Buffer.from(valueOf, encodingOrOffset, length);\n    }\n    const b = fromObject(value);\n    if (b) return b;\n    if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n      return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n    }\n    throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n  }\n\n  /**\n   * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n   * if value is a number.\n   * Buffer.from(str[, encoding])\n   * Buffer.from(array)\n   * Buffer.from(buffer)\n   * Buffer.from(arrayBuffer[, byteOffset[, length]])\n   **/\n  Buffer.from = function (value, encodingOrOffset, length) {\n    return from(value, encodingOrOffset, length);\n  };\n\n  // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n  // https://github.com/feross/buffer/pull/148\n  Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n  Object.setPrototypeOf(Buffer, Uint8Array);\n  function assertSize(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n    } else if (size < 0) {\n      throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n  }\n  function alloc(size, fill, encoding) {\n    assertSize(size);\n    if (size <= 0) {\n      return createBuffer(size);\n    }\n    if (fill !== undefined) {\n      // Only pay attention to encoding if it's a string. This\n      // prevents accidentally sending in a number that would\n      // be interpreted as a start offset.\n      return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n    }\n    return createBuffer(size);\n  }\n\n  /**\n   * Creates a new filled Buffer instance.\n   * alloc(size[, fill[, encoding]])\n   **/\n  Buffer.alloc = function (size, fill, encoding) {\n    return alloc(size, fill, encoding);\n  };\n  function allocUnsafe(size) {\n    assertSize(size);\n    return createBuffer(size < 0 ? 0 : checked(size) | 0);\n  }\n\n  /**\n   * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n   * */\n  Buffer.allocUnsafe = function (size) {\n    return allocUnsafe(size);\n  };\n  /**\n   * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n   */\n  Buffer.allocUnsafeSlow = function (size) {\n    return allocUnsafe(size);\n  };\n  function fromString(string, encoding) {\n    if (typeof encoding !== \"string\" || encoding === \"\") {\n      encoding = \"utf8\";\n    }\n    if (!Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n    const length = byteLength(string, encoding) | 0;\n    let buf = createBuffer(length);\n    const actual = buf.write(string, encoding);\n    if (actual !== length) {\n      // Writing a hex string, for example, that contains invalid characters will\n      // cause everything after the first invalid character to be ignored. (e.g.\n      // 'abxxcd' will be treated as 'ab')\n      buf = buf.slice(0, actual);\n    }\n    return buf;\n  }\n  function fromArrayLike(array) {\n    const length = array.length < 0 ? 0 : checked(array.length) | 0;\n    const buf = createBuffer(length);\n    for (let i = 0; i < length; i += 1) {\n      buf[i] = array[i] & 255;\n    }\n    return buf;\n  }\n  function fromArrayView(arrayView) {\n    if (isInstance(arrayView, Uint8Array)) {\n      const copy = new Uint8Array(arrayView);\n      return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n    }\n    return fromArrayLike(arrayView);\n  }\n  function fromArrayBuffer(array, byteOffset, length) {\n    if (byteOffset < 0 || array.byteLength < byteOffset) {\n      throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n    }\n    if (array.byteLength < byteOffset + (length || 0)) {\n      throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n    }\n    let buf;\n    if (byteOffset === undefined && length === undefined) {\n      buf = new Uint8Array(array);\n    } else if (length === undefined) {\n      buf = new Uint8Array(array, byteOffset);\n    } else {\n      buf = new Uint8Array(array, byteOffset, length);\n    }\n\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function fromObject(obj) {\n    if (Buffer.isBuffer(obj)) {\n      const len = checked(obj.length) | 0;\n      const buf = createBuffer(len);\n      if (buf.length === 0) {\n        return buf;\n      }\n      obj.copy(buf, 0, 0, len);\n      return buf;\n    }\n    if (obj.length !== undefined) {\n      if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n        return createBuffer(0);\n      }\n      return fromArrayLike(obj);\n    }\n    if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n      return fromArrayLike(obj.data);\n    }\n  }\n  function checked(length) {\n    // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n    // length is NaN (which is otherwise coerced to zero.)\n    if (length >= K_MAX_LENGTH) {\n      throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n    }\n    return length | 0;\n  }\n  function SlowBuffer(length) {\n    if (+length != length) {\n      // eslint-disable-line eqeqeq\n      length = 0;\n    }\n    return Buffer.alloc(+length);\n  }\n  Buffer.isBuffer = function isBuffer(b) {\n    return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n  };\n  Buffer.compare = function compare(a, b) {\n    if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n    if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n    if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n      throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n    }\n    if (a === b) return 0;\n    let x = a.length;\n    let y = b.length;\n    for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n      if (a[i] !== b[i]) {\n        x = a[i];\n        y = b[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n  Buffer.isEncoding = function isEncoding(encoding) {\n    switch (String(encoding).toLowerCase()) {\n      case \"hex\":\n      case \"utf8\":\n      case \"utf-8\":\n      case \"ascii\":\n      case \"latin1\":\n      case \"binary\":\n      case \"base64\":\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return true;\n      default:\n        return false;\n    }\n  };\n  Buffer.concat = function concat(list, length) {\n    if (!Array.isArray(list)) {\n      throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n    }\n    if (list.length === 0) {\n      return Buffer.alloc(0);\n    }\n    let i;\n    if (length === undefined) {\n      length = 0;\n      for (i = 0; i < list.length; ++i) {\n        length += list[i].length;\n      }\n    }\n    const buffer = Buffer.allocUnsafe(length);\n    let pos = 0;\n    for (i = 0; i < list.length; ++i) {\n      let buf = list[i];\n      if (isInstance(buf, Uint8Array)) {\n        if (pos + buf.length > buffer.length) {\n          if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n          buf.copy(buffer, pos);\n        } else {\n          Uint8Array.prototype.set.call(buffer, buf, pos);\n        }\n      } else if (!Buffer.isBuffer(buf)) {\n        throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n      } else {\n        buf.copy(buffer, pos);\n      }\n      pos += buf.length;\n    }\n    return buffer;\n  };\n  function byteLength(string, encoding) {\n    if (Buffer.isBuffer(string)) {\n      return string.length;\n    }\n    if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n      return string.byteLength;\n    }\n    if (typeof string !== \"string\") {\n      throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n    }\n    const len = string.length;\n    const mustMatch = arguments.length > 2 && arguments[2] === true;\n    if (!mustMatch && len === 0) return 0;\n\n    // Use a for loop to avoid recursion\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return len;\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8ToBytes(string).length;\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return len * 2;\n        case \"hex\":\n          return len >>> 1;\n        case \"base64\":\n          return base64ToBytes(string).length;\n        default:\n          if (loweredCase) {\n            return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n          }\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.byteLength = byteLength;\n  function slowToString(encoding, start, end) {\n    let loweredCase = false;\n\n    // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n    // property of a typed array.\n\n    // This behaves neither like String nor Uint8Array in that we set start/end\n    // to their upper/lower bounds if the value passed is out of range.\n    // undefined is handled specially as per ECMA-262 6th Edition,\n    // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n    if (start === undefined || start < 0) {\n      start = 0;\n    }\n    // Return early if start > this.length. Done here to prevent potential uint32\n    // coercion fail below.\n    if (start > this.length) {\n      return \"\";\n    }\n    if (end === undefined || end > this.length) {\n      end = this.length;\n    }\n    if (end <= 0) {\n      return \"\";\n    }\n\n    // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n    end >>>= 0;\n    start >>>= 0;\n    if (end <= start) {\n      return \"\";\n    }\n    if (!encoding) encoding = \"utf8\";\n    while (true) {\n      switch (encoding) {\n        case \"hex\":\n          return hexSlice(this, start, end);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Slice(this, start, end);\n        case \"ascii\":\n          return asciiSlice(this, start, end);\n        case \"latin1\":\n        case \"binary\":\n          return latin1Slice(this, start, end);\n        case \"base64\":\n          return base64Slice(this, start, end);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return utf16leSlice(this, start, end);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (encoding + \"\").toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n\n  // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n  // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n  // reliably in a browserify context because there could be multiple different\n  // copies of the 'buffer' package in use. This method works even for Buffer\n  // instances that were created from another copy of the `buffer` package.\n  // See: https://github.com/feross/buffer/issues/154\n  Buffer.prototype._isBuffer = true;\n  function swap(b, n, m) {\n    const i = b[n];\n    b[n] = b[m];\n    b[m] = i;\n  }\n  Buffer.prototype.swap16 = function swap16() {\n    const len = this.length;\n    if (len % 2 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n    }\n    for (let i = 0; i < len; i += 2) {\n      swap(this, i, i + 1);\n    }\n    return this;\n  };\n  Buffer.prototype.swap32 = function swap32() {\n    const len = this.length;\n    if (len % 4 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n    }\n    for (let i = 0; i < len; i += 4) {\n      swap(this, i, i + 3);\n      swap(this, i + 1, i + 2);\n    }\n    return this;\n  };\n  Buffer.prototype.swap64 = function swap64() {\n    const len = this.length;\n    if (len % 8 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n    }\n    for (let i = 0; i < len; i += 8) {\n      swap(this, i, i + 7);\n      swap(this, i + 1, i + 6);\n      swap(this, i + 2, i + 5);\n      swap(this, i + 3, i + 4);\n    }\n    return this;\n  };\n  Buffer.prototype.toString = function toString() {\n    const length = this.length;\n    if (length === 0) return \"\";\n    if (arguments.length === 0) return utf8Slice(this, 0, length);\n    return slowToString.apply(this, arguments);\n  };\n  Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n  Buffer.prototype.equals = function equals(b) {\n    if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n    if (this === b) return true;\n    return Buffer.compare(this, b) === 0;\n  };\n  Buffer.prototype.inspect = function inspect() {\n    let str = \"\";\n    const max = exports.INSPECT_MAX_BYTES;\n    str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n    if (this.length > max) str += \" ... \";\n    return \"<Buffer \" + str + \">\";\n  };\n  if (customInspectSymbol) {\n    Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n  }\n  Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n    if (isInstance(target, Uint8Array)) {\n      target = Buffer.from(target, target.offset, target.byteLength);\n    }\n    if (!Buffer.isBuffer(target)) {\n      throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n    }\n    if (start === undefined) {\n      start = 0;\n    }\n    if (end === undefined) {\n      end = target ? target.length : 0;\n    }\n    if (thisStart === undefined) {\n      thisStart = 0;\n    }\n    if (thisEnd === undefined) {\n      thisEnd = this.length;\n    }\n    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n      throw new RangeError(\"out of range index\");\n    }\n    if (thisStart >= thisEnd && start >= end) {\n      return 0;\n    }\n    if (thisStart >= thisEnd) {\n      return -1;\n    }\n    if (start >= end) {\n      return 1;\n    }\n    start >>>= 0;\n    end >>>= 0;\n    thisStart >>>= 0;\n    thisEnd >>>= 0;\n    if (this === target) return 0;\n    let x = thisEnd - thisStart;\n    let y = end - start;\n    const len = Math.min(x, y);\n    const thisCopy = this.slice(thisStart, thisEnd);\n    const targetCopy = target.slice(start, end);\n    for (let i = 0; i < len; ++i) {\n      if (thisCopy[i] !== targetCopy[i]) {\n        x = thisCopy[i];\n        y = targetCopy[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n\n  // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n  // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n  //\n  // Arguments:\n  // - buffer - a Buffer to search\n  // - val - a string, Buffer, or number\n  // - byteOffset - an index into `buffer`; will be clamped to an int32\n  // - encoding - an optional encoding, relevant is val is a string\n  // - dir - true for indexOf, false for lastIndexOf\n  function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n    // Empty buffer means no match\n    if (buffer.length === 0) return -1;\n\n    // Normalize byteOffset\n    if (typeof byteOffset === \"string\") {\n      encoding = byteOffset;\n      byteOffset = 0;\n    } else if (byteOffset > 2147483647) {\n      byteOffset = 2147483647;\n    } else if (byteOffset < -2147483648) {\n      byteOffset = -2147483648;\n    }\n    byteOffset = +byteOffset; // Coerce to Number.\n    if (numberIsNaN(byteOffset)) {\n      // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n      byteOffset = dir ? 0 : buffer.length - 1;\n    }\n\n    // Normalize byteOffset: negative offsets start from the end of the buffer\n    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n    if (byteOffset >= buffer.length) {\n      if (dir) return -1;else byteOffset = buffer.length - 1;\n    } else if (byteOffset < 0) {\n      if (dir) byteOffset = 0;else return -1;\n    }\n\n    // Normalize val\n    if (typeof val === \"string\") {\n      val = Buffer.from(val, encoding);\n    }\n\n    // Finally, search either indexOf (if dir is true) or lastIndexOf\n    if (Buffer.isBuffer(val)) {\n      // Special case: looking for empty string/buffer always fails\n      if (val.length === 0) {\n        return -1;\n      }\n      return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n    } else if (typeof val === \"number\") {\n      val = val & 255; // Search for a byte value [0-255]\n      if (typeof Uint8Array.prototype.indexOf === \"function\") {\n        if (dir) {\n          return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n        } else {\n          return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n        }\n      }\n      return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n    }\n    throw new TypeError(\"val must be string, number or Buffer\");\n  }\n  function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n    let indexSize = 1;\n    let arrLength = arr.length;\n    let valLength = val.length;\n    if (encoding !== undefined) {\n      encoding = String(encoding).toLowerCase();\n      if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n        if (arr.length < 2 || val.length < 2) {\n          return -1;\n        }\n        indexSize = 2;\n        arrLength /= 2;\n        valLength /= 2;\n        byteOffset /= 2;\n      }\n    }\n    function read(buf, i) {\n      if (indexSize === 1) {\n        return buf[i];\n      } else {\n        return buf.readUInt16BE(i * indexSize);\n      }\n    }\n    let i;\n    if (dir) {\n      let foundIndex = -1;\n      for (i = byteOffset; i < arrLength; i++) {\n        if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n          if (foundIndex === -1) foundIndex = i;\n          if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n        } else {\n          if (foundIndex !== -1) i -= i - foundIndex;\n          foundIndex = -1;\n        }\n      }\n    } else {\n      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n      for (i = byteOffset; i >= 0; i--) {\n        let found = true;\n        for (let j = 0; j < valLength; j++) {\n          if (read(arr, i + j) !== read(val, j)) {\n            found = false;\n            break;\n          }\n        }\n        if (found) return i;\n      }\n    }\n    return -1;\n  }\n  Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n    return this.indexOf(val, byteOffset, encoding) !== -1;\n  };\n  Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n  };\n  Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n  };\n  function hexWrite(buf, string, offset, length) {\n    offset = Number(offset) || 0;\n    const remaining = buf.length - offset;\n    if (!length) {\n      length = remaining;\n    } else {\n      length = Number(length);\n      if (length > remaining) {\n        length = remaining;\n      }\n    }\n    const strLen = string.length;\n    if (length > strLen / 2) {\n      length = strLen / 2;\n    }\n    let i;\n    for (i = 0; i < length; ++i) {\n      const parsed = parseInt(string.substr(i * 2, 2), 16);\n      if (numberIsNaN(parsed)) return i;\n      buf[offset + i] = parsed;\n    }\n    return i;\n  }\n  function utf8Write(buf, string, offset, length) {\n    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  function asciiWrite(buf, string, offset, length) {\n    return blitBuffer(asciiToBytes(string), buf, offset, length);\n  }\n  function base64Write(buf, string, offset, length) {\n    return blitBuffer(base64ToBytes(string), buf, offset, length);\n  }\n  function ucs2Write(buf, string, offset, length) {\n    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  Buffer.prototype.write = function write(string, offset, length, encoding) {\n    // Buffer#write(string)\n    if (offset === undefined) {\n      encoding = \"utf8\";\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, encoding)\n    } else if (length === undefined && typeof offset === \"string\") {\n      encoding = offset;\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, offset[, length][, encoding])\n    } else if (isFinite(offset)) {\n      offset = offset >>> 0;\n      if (isFinite(length)) {\n        length = length >>> 0;\n        if (encoding === undefined) encoding = \"utf8\";\n      } else {\n        encoding = length;\n        length = undefined;\n      }\n    } else {\n      throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    }\n    const remaining = this.length - offset;\n    if (length === undefined || length > remaining) length = remaining;\n    if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n      throw new RangeError(\"Attempt to write outside buffer bounds\");\n    }\n    if (!encoding) encoding = \"utf8\";\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"hex\":\n          return hexWrite(this, string, offset, length);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Write(this, string, offset, length);\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return asciiWrite(this, string, offset, length);\n        case \"base64\":\n          // Warning: maxLength not taken into account in base64Write\n          return base64Write(this, string, offset, length);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return ucs2Write(this, string, offset, length);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  };\n  Buffer.prototype.toJSON = function toJSON() {\n    return {\n      type: \"Buffer\",\n      data: Array.prototype.slice.call(this._arr || this, 0)\n    };\n  };\n  function base64Slice(buf, start, end) {\n    if (start === 0 && end === buf.length) {\n      return base64.fromByteArray(buf);\n    } else {\n      return base64.fromByteArray(buf.slice(start, end));\n    }\n  }\n  function utf8Slice(buf, start, end) {\n    end = Math.min(buf.length, end);\n    const res = [];\n    let i = start;\n    while (i < end) {\n      const firstByte = buf[i];\n      let codePoint = null;\n      let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n      if (i + bytesPerSequence <= end) {\n        let secondByte, thirdByte, fourthByte, tempCodePoint;\n        switch (bytesPerSequence) {\n          case 1:\n            if (firstByte < 128) {\n              codePoint = firstByte;\n            }\n            break;\n          case 2:\n            secondByte = buf[i + 1];\n            if ((secondByte & 192) === 128) {\n              tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n              if (tempCodePoint > 127) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 3:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n              if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 4:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            fourthByte = buf[i + 3];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n              if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n                codePoint = tempCodePoint;\n              }\n            }\n        }\n      }\n      if (codePoint === null) {\n        // we did not generate a valid codePoint so insert a\n        // replacement char (U+FFFD) and advance only 1 byte\n        codePoint = 65533;\n        bytesPerSequence = 1;\n      } else if (codePoint > 65535) {\n        // encode to utf16 (surrogate pair dance)\n        codePoint -= 65536;\n        res.push(codePoint >>> 10 & 1023 | 55296);\n        codePoint = 56320 | codePoint & 1023;\n      }\n      res.push(codePoint);\n      i += bytesPerSequence;\n    }\n    return decodeCodePointsArray(res);\n  }\n\n  // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n  // the lowest limit is Chrome, with 0x10000 args.\n  // We go 1 magnitude less, for safety\n  const MAX_ARGUMENTS_LENGTH = 4096;\n  function decodeCodePointsArray(codePoints) {\n    const len = codePoints.length;\n    if (len <= MAX_ARGUMENTS_LENGTH) {\n      return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n    }\n\n    // Decode in chunks to avoid \"call stack size exceeded\".\n    let res = \"\";\n    let i = 0;\n    while (i < len) {\n      res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n    }\n    return res;\n  }\n  function asciiSlice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i] & 127);\n    }\n    return ret;\n  }\n  function latin1Slice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i]);\n    }\n    return ret;\n  }\n  function hexSlice(buf, start, end) {\n    const len = buf.length;\n    if (!start || start < 0) start = 0;\n    if (!end || end < 0 || end > len) end = len;\n    let out = \"\";\n    for (let i = start; i < end; ++i) {\n      out += hexSliceLookupTable[buf[i]];\n    }\n    return out;\n  }\n  function utf16leSlice(buf, start, end) {\n    const bytes = buf.slice(start, end);\n    let res = \"\";\n    // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n    for (let i = 0; i < bytes.length - 1; i += 2) {\n      res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n    }\n    return res;\n  }\n  Buffer.prototype.slice = function slice(start, end) {\n    const len = this.length;\n    start = ~~start;\n    end = end === undefined ? len : ~~end;\n    if (start < 0) {\n      start += len;\n      if (start < 0) start = 0;\n    } else if (start > len) {\n      start = len;\n    }\n    if (end < 0) {\n      end += len;\n      if (end < 0) end = 0;\n    } else if (end > len) {\n      end = len;\n    }\n    if (end < start) end = start;\n    const newBuf = this.subarray(start, end);\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(newBuf, Buffer.prototype);\n    return newBuf;\n  };\n\n  /*\n   * Need to make sure that buffer isn't trying to write out of bounds.\n   */\n  function checkOffset(offset, ext, length) {\n    if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n    if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n  }\n  Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      checkOffset(offset, byteLength, this.length);\n    }\n    let val = this[offset + --byteLength];\n    let mul = 1;\n    while (byteLength > 0 && (mul *= 256)) {\n      val += this[offset + --byteLength] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    return this[offset];\n  };\n  Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] | this[offset + 1] << 8;\n  };\n  Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] << 8 | this[offset + 1];\n  };\n  Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n  };\n  Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n  };\n  Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n    const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n    return BigInt(lo) + (BigInt(hi) << BigInt(32));\n  });\n  Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n    return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  });\n  Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let i = byteLength;\n    let mul = 1;\n    let val = this[offset + --i];\n    while (i > 0 && (mul *= 256)) {\n      val += this[offset + --i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    if (!(this[offset] & 128)) return this[offset];\n    return (255 - this[offset] + 1) * -1;\n  };\n  Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset] | this[offset + 1] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset + 1] | this[offset] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n  };\n  Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n  };\n  Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n    return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n  });\n  Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = (first << 24) +\n    // Overflow\n    this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n  });\n  Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, true, 23, 4);\n  };\n  Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, false, 23, 4);\n  };\n  Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, true, 52, 8);\n  };\n  Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, false, 52, 8);\n  };\n  function checkInt(buf, value, offset, ext, max, min) {\n    if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n    if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n  }\n  Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let mul = 1;\n    let i = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  function wrtBigUInt64LE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    return offset;\n  }\n  function wrtBigUInt64BE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset + 7] = lo;\n    lo = lo >> 8;\n    buf[offset + 6] = lo;\n    lo = lo >> 8;\n    buf[offset + 5] = lo;\n    lo = lo >> 8;\n    buf[offset + 4] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset + 3] = hi;\n    hi = hi >> 8;\n    buf[offset + 2] = hi;\n    hi = hi >> 8;\n    buf[offset + 1] = hi;\n    hi = hi >> 8;\n    buf[offset] = hi;\n    return offset + 8;\n  }\n  Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = 0;\n    let mul = 1;\n    let sub = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    let sub = 0;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n    if (value < 0) value = 255 + value + 1;\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n    return offset + 4;\n  };\n  Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    if (value < 0) value = 4294967295 + value + 1;\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  function checkIEEE754(buf, value, offset, ext, max, min) {\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n    if (offset < 0) throw new RangeError(\"Index out of range\");\n  }\n  function writeFloat(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 4);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 23, 4);\n    return offset + 4;\n  }\n  Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, false, noAssert);\n  };\n  function writeDouble(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 8);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 52, 8);\n    return offset + 8;\n  }\n  Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, false, noAssert);\n  };\n\n  // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n  Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n    if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n    if (!start) start = 0;\n    if (!end && end !== 0) end = this.length;\n    if (targetStart >= target.length) targetStart = target.length;\n    if (!targetStart) targetStart = 0;\n    if (end > 0 && end < start) end = start;\n\n    // Copy 0 bytes; we're done\n    if (end === start) return 0;\n    if (target.length === 0 || this.length === 0) return 0;\n\n    // Fatal error conditions\n    if (targetStart < 0) {\n      throw new RangeError(\"targetStart out of bounds\");\n    }\n    if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n    if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n\n    // Are we oob?\n    if (end > this.length) end = this.length;\n    if (target.length - targetStart < end - start) {\n      end = target.length - targetStart + start;\n    }\n    const len = end - start;\n    if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n      // Use built-in when available, missing from IE11\n      this.copyWithin(targetStart, start, end);\n    } else {\n      Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n    }\n    return len;\n  };\n\n  // Usage:\n  //    buffer.fill(number[, offset[, end]])\n  //    buffer.fill(buffer[, offset[, end]])\n  //    buffer.fill(string[, offset[, end]][, encoding])\n  Buffer.prototype.fill = function fill(val, start, end, encoding) {\n    // Handle string cases:\n    if (typeof val === \"string\") {\n      if (typeof start === \"string\") {\n        encoding = start;\n        start = 0;\n        end = this.length;\n      } else if (typeof end === \"string\") {\n        encoding = end;\n        end = this.length;\n      }\n      if (encoding !== undefined && typeof encoding !== \"string\") {\n        throw new TypeError(\"encoding must be a string\");\n      }\n      if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n        throw new TypeError(\"Unknown encoding: \" + encoding);\n      }\n      if (val.length === 1) {\n        const code = val.charCodeAt(0);\n        if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n          // Fast path: If `val` fits into a single byte, use that numeric value.\n          val = code;\n        }\n      }\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n    } else if (typeof val === \"boolean\") {\n      val = Number(val);\n    }\n\n    // Invalid ranges are not set to a default, so can range check early.\n    if (start < 0 || this.length < start || this.length < end) {\n      throw new RangeError(\"Out of range index\");\n    }\n    if (end <= start) {\n      return this;\n    }\n    start = start >>> 0;\n    end = end === undefined ? this.length : end >>> 0;\n    if (!val) val = 0;\n    let i;\n    if (typeof val === \"number\") {\n      for (i = start; i < end; ++i) {\n        this[i] = val;\n      }\n    } else {\n      const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n      const len = bytes.length;\n      if (len === 0) {\n        throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n      }\n      for (i = 0; i < end - start; ++i) {\n        this[i + start] = bytes[i % len];\n      }\n    }\n    return this;\n  };\n\n  // CUSTOM ERRORS\n  // =============\n\n  // Simplified versions from Node, changed for Buffer-only usage\n  const errors = {};\n  function E(sym, getMessage, Base) {\n    errors[sym] = class NodeError extends Base {\n      constructor() {\n        super();\n        Object.defineProperty(this, \"message\", {\n          value: getMessage.apply(this, arguments),\n          writable: true,\n          configurable: true\n        });\n\n        // Add the error code to the name to include it in the stack trace.\n        this.name = `${this.name} [${sym}]`;\n        // Access the stack to generate the error message including the error code\n        // from the name.\n        this.stack; // eslint-disable-line no-unused-expressions\n        // Reset the name to the actual name.\n        delete this.name;\n      }\n      get code() {\n        return sym;\n      }\n      set code(value) {\n        Object.defineProperty(this, \"code\", {\n          configurable: true,\n          enumerable: true,\n          value,\n          writable: true\n        });\n      }\n      toString() {\n        return `${this.name} [${sym}]: ${this.message}`;\n      }\n    };\n  }\n  E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`;\n    }\n    return \"Attempt to access memory outside buffer bounds\";\n  }, RangeError);\n  E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n  }, TypeError);\n  E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`;\n    let received = input;\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input));\n    } else if (typeof input === \"bigint\") {\n      received = String(input);\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received);\n      }\n      received += \"n\";\n    }\n    msg += ` It must be ${range}. Received ${received}`;\n    return msg;\n  }, RangeError);\n  function addNumericalSeparator(val) {\n    let res = \"\";\n    let i = val.length;\n    const start = val[0] === \"-\" ? 1 : 0;\n    for (; i >= start + 4; i -= 3) {\n      res = `_${val.slice(i - 3, i)}${res}`;\n    }\n    return `${val.slice(0, i)}${res}`;\n  }\n\n  // CHECK FUNCTIONS\n  // ===============\n\n  function checkBounds(buf, offset, byteLength) {\n    validateNumber(offset, \"offset\");\n    if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n      boundsError(offset, buf.length - (byteLength + 1));\n    }\n  }\n  function checkIntBI(value, min, max, buf, offset, byteLength) {\n    if (value > max || value < min) {\n      const n = typeof min === \"bigint\" ? \"n\" : \"\";\n      let range;\n      {\n        if (min === 0 || min === BigInt(0)) {\n          range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n        } else {\n          range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n        }\n      }\n      throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n    }\n    checkBounds(buf, offset, byteLength);\n  }\n  function validateNumber(value, name) {\n    if (typeof value !== \"number\") {\n      throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n    }\n  }\n  function boundsError(value, length, type) {\n    if (Math.floor(value) !== value) {\n      validateNumber(value, type);\n      throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n    }\n    if (length < 0) {\n      throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n    }\n    throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n  }\n\n  // HELPER FUNCTIONS\n  // ================\n\n  const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n  function base64clean(str) {\n    // Node takes equal signs as end of the Base64 encoding\n    str = str.split(\"=\")[0];\n    // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n    str = str.trim().replace(INVALID_BASE64_RE, \"\");\n    // Node converts strings with length < 2 to ''\n    if (str.length < 2) return \"\";\n    // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n    while (str.length % 4 !== 0) {\n      str = str + \"=\";\n    }\n    return str;\n  }\n  function utf8ToBytes(string, units) {\n    units = units || Infinity;\n    let codePoint;\n    const length = string.length;\n    let leadSurrogate = null;\n    const bytes = [];\n    for (let i = 0; i < length; ++i) {\n      codePoint = string.charCodeAt(i);\n\n      // is surrogate component\n      if (codePoint > 55295 && codePoint < 57344) {\n        // last char was a lead\n        if (!leadSurrogate) {\n          // no lead yet\n          if (codePoint > 56319) {\n            // unexpected trail\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          } else if (i + 1 === length) {\n            // unpaired lead\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          }\n\n          // valid lead\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // 2 leads in a row\n        if (codePoint < 56320) {\n          if ((units -= 3) > -1) bytes.push(239, 191, 189);\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // valid surrogate pair\n        codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n      } else if (leadSurrogate) {\n        // valid bmp char, but last char was a lead\n        if ((units -= 3) > -1) bytes.push(239, 191, 189);\n      }\n      leadSurrogate = null;\n\n      // encode utf8\n      if (codePoint < 128) {\n        if ((units -= 1) < 0) break;\n        bytes.push(codePoint);\n      } else if (codePoint < 2048) {\n        if ((units -= 2) < 0) break;\n        bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n      } else if (codePoint < 65536) {\n        if ((units -= 3) < 0) break;\n        bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else if (codePoint < 1114112) {\n        if ((units -= 4) < 0) break;\n        bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else {\n        throw new Error(\"Invalid code point\");\n      }\n    }\n    return bytes;\n  }\n  function asciiToBytes(str) {\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      // Node's code seems to be doing this and not & 0x7F..\n      byteArray.push(str.charCodeAt(i) & 255);\n    }\n    return byteArray;\n  }\n  function utf16leToBytes(str, units) {\n    let c, hi, lo;\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      if ((units -= 2) < 0) break;\n      c = str.charCodeAt(i);\n      hi = c >> 8;\n      lo = c % 256;\n      byteArray.push(lo);\n      byteArray.push(hi);\n    }\n    return byteArray;\n  }\n  function base64ToBytes(str) {\n    return base64.toByteArray(base64clean(str));\n  }\n  function blitBuffer(src, dst, offset, length) {\n    let i;\n    for (i = 0; i < length; ++i) {\n      if (i + offset >= dst.length || i >= src.length) break;\n      dst[i + offset] = src[i];\n    }\n    return i;\n  }\n\n  // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n  // the `instanceof` check but they should be treated as of that type.\n  // See: https://github.com/feross/buffer/issues/166\n  function isInstance(obj, type) {\n    return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n  }\n  function numberIsNaN(obj) {\n    // For IE11 support\n    return obj !== obj; // eslint-disable-line no-self-compare\n  }\n\n  // Create lookup table for `toString('hex')`\n  // See: https://github.com/feross/buffer/issues/219\n  const hexSliceLookupTable = function () {\n    const alphabet = \"0123456789abcdef\";\n    const table = new Array(256);\n    for (let i = 0; i < 16; ++i) {\n      const i16 = i * 16;\n      for (let j = 0; j < 16; ++j) {\n        table[i16 + j] = alphabet[i] + alphabet[j];\n      }\n    }\n    return table;\n  }();\n\n  // Return not function with Error if BigInt not supported\n  function defineBigIntMethod(fn) {\n    return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n  }\n  function BufferBigIntNotDefined() {\n    throw new Error(\"BigInt not supported\");\n  }\n  return exports;\n}\n\nexport { dew as d };\n","import { d as dew } from './chunk-DtuTasat.js';\n\nconst exports = dew();\nexports['Buffer']; exports['SlowBuffer']; exports['INSPECT_MAX_BYTES']; exports['kMaxLength'];\n\nvar Buffer = exports.Buffer;\r\nvar INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;\r\nvar kMaxLength = exports.kMaxLength;\n\nexport { Buffer, INSPECT_MAX_BYTES, exports as default, kMaxLength };\n","export { Buffer } from \"buffer\";\n","export { DynamicSnippetsGenerator } from \"./DynamicSnippetsGenerator.js\";\n","import {\n    AbstractAstNode,\n    AbstractDynamicSnippetsGenerator,\n    AbstractFormatter,\n    FernGeneratorExec,\n    Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator.js\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n    DynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator\n> {\n    private formatter: AbstractFormatter | undefined;\n\n    constructor({\n        ir,\n        config,\n        formatter\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        formatter?: AbstractFormatter;\n    }) {\n        super(new DynamicSnippetsGeneratorContext({ ir, config }));\n        this.formatter = formatter;\n    }\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        return super.generate(request, options);\n    }\n\n    public generateSync(request: FernIr.dynamic.EndpointSnippetRequest): FernIr.dynamic.EndpointSnippetResponse {\n        return super.generateSync(request);\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options?: { skipClientInstantiation?: boolean }\n    ): Promise<AbstractAstNode> {\n        return super.generateSnippetAst(request, options);\n    }\n\n    protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n        return new EndpointSnippetGenerator({ context, formatter: this.formatter });\n    }\n}\n","// Force cache invalidation for CI - server URL templating feature\nexport { addPrefixToString } from \"./addPrefixToString.js\";\nexport { applyOpenAPIOverlay, type Overlay, type OverlayAction } from \"./applyOpenAPIOverlay.js\";\nexport {\n    assert,\n    assertDefined,\n    assertNever,\n    assertNeverNoThrow,\n    assertNonNull,\n    assertString,\n    assertVoidNoThrow\n} from \"./assert.js\";\nexport { delay } from \"./delay/delay.js\";\nexport { withMinimumTime } from \"./delay/withMinimumTime.js\";\nexport { EMPTY_ARRAY, EMPTY_OBJECT } from \"./empty.js\";\nexport * as Examples from \"./examples.js\";\nexport { extractErrorMessage } from \"./extractErrorMessage.js\";\nexport { getDuplicates } from \"./getDuplicates.js\";\nexport { identity } from \"./identity.js\";\nexport { isNonNullish } from \"./isNonNullish.js\";\nexport { MediaType } from \"./mediaType.js\";\nexport { mergeWithOverrides } from \"./mergeWithOverrides.js\";\nexport { noop } from \"./noop.js\";\nexport {\n    haveSameNullishness,\n    nullIfNullish,\n    nullIfSomeNullish,\n    undefinedIfNullish,\n    undefinedIfSomeNullish\n} from \"./nullishUtils.js\";\nexport { type ObjectPropertiesVisitor, visitObject, visitObjectAsync } from \"./ObjectPropertiesVisitor.js\";\nexport { type Entries, entries } from \"./objects/entries.js\";\nexport { isPlainObject } from \"./objects/isPlainObject.js\";\nexport { keys } from \"./objects/keys.js\";\nexport { mapValues } from \"./objects/mapValues.js\";\nexport { type Values, values } from \"./objects/values.js\";\nexport { parseEndpointLocator } from \"./parseEndpointLocator.js\";\nexport { PLATFORM, type Platform } from \"./platform.js\";\nexport { removeSuffix } from \"./removeSuffix.js\";\nexport { replaceEnvVariables } from \"./replaceEnvVars.js\";\nexport { SymbolRegistry, type SymbolRegistryOptions } from \"./SymbolRegistry.js\";\nexport { sanitizeChangelogEntry } from \"./sanitizeChangelogEntry.js\";\nexport { SKIP_MARKER, sanitizeNullValues } from \"./sanitizeNullValues.js\";\nexport { diffSemverOrThrow, parseSemverOrThrow } from \"./semverUtils.js\";\nexport { type SetRequired } from \"./setRequired.js\";\nexport { stripLeadingSlash } from \"./stripLeadingSlash.js\";\nexport { titleCase } from \"./titleCase.js\";\nexport type { ContainerRunner, Digit, Letter, LowercaseLetter, UppercaseLetter } from \"./types.js\";\nexport { validateAgainstJsonSchema } from \"./validateAgainstJsonSchema.js\";\nexport { visitDiscriminatedUnion } from \"./visitDiscriminatedUnion.js\";\nexport type { WithoutQuestionMarks } from \"./withoutQuestionMarks.js\";\n","/**\n * @license\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"es\" --repo lodash/lodash#4.18.1 -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nexport { default as add } from './add.js';\nexport { default as after } from './after.js';\nexport { default as ary } from './ary.js';\nexport { default as assign } from './assign.js';\nexport { default as assignIn } from './assignIn.js';\nexport { default as assignInWith } from './assignInWith.js';\nexport { default as assignWith } from './assignWith.js';\nexport { default as at } from './at.js';\nexport { default as attempt } from './attempt.js';\nexport { default as before } from './before.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as bindKey } from './bindKey.js';\nexport { default as camelCase } from './camelCase.js';\nexport { default as capitalize } from './capitalize.js';\nexport { default as castArray } from './castArray.js';\nexport { default as ceil } from './ceil.js';\nexport { default as chain } from './chain.js';\nexport { default as chunk } from './chunk.js';\nexport { default as clamp } from './clamp.js';\nexport { default as clone } from './clone.js';\nexport { default as cloneDeep } from './cloneDeep.js';\nexport { default as cloneDeepWith } from './cloneDeepWith.js';\nexport { default as cloneWith } from './cloneWith.js';\nexport { default as commit } from './commit.js';\nexport { default as compact } from './compact.js';\nexport { default as concat } from './concat.js';\nexport { default as cond } from './cond.js';\nexport { default as conforms } from './conforms.js';\nexport { default as conformsTo } from './conformsTo.js';\nexport { default as constant } from './constant.js';\nexport { default as countBy } from './countBy.js';\nexport { default as create } from './create.js';\nexport { default as curry } from './curry.js';\nexport { default as curryRight } from './curryRight.js';\nexport { default as debounce } from './debounce.js';\nexport { default as deburr } from './deburr.js';\nexport { default as defaultTo } from './defaultTo.js';\nexport { default as defaults } from './defaults.js';\nexport { default as defaultsDeep } from './defaultsDeep.js';\nexport { default as defer } from './defer.js';\nexport { default as delay } from './delay.js';\nexport { default as difference } from './difference.js';\nexport { default as differenceBy } from './differenceBy.js';\nexport { default as differenceWith } from './differenceWith.js';\nexport { default as divide } from './divide.js';\nexport { default as drop } from './drop.js';\nexport { default as dropRight } from './dropRight.js';\nexport { default as dropRightWhile } from './dropRightWhile.js';\nexport { default as dropWhile } from './dropWhile.js';\nexport { default as each } from './each.js';\nexport { default as eachRight } from './eachRight.js';\nexport { default as endsWith } from './endsWith.js';\nexport { default as entries } from './entries.js';\nexport { default as entriesIn } from './entriesIn.js';\nexport { default as eq } from './eq.js';\nexport { default as escape } from './escape.js';\nexport { default as escapeRegExp } from './escapeRegExp.js';\nexport { default as every } from './every.js';\nexport { default as extend } from './extend.js';\nexport { default as extendWith } from './extendWith.js';\nexport { default as fill } from './fill.js';\nexport { default as filter } from './filter.js';\nexport { default as find } from './find.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findKey } from './findKey.js';\nexport { default as findLast } from './findLast.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as findLastKey } from './findLastKey.js';\nexport { default as first } from './first.js';\nexport { default as flatMap } from './flatMap.js';\nexport { default as flatMapDeep } from './flatMapDeep.js';\nexport { default as flatMapDepth } from './flatMapDepth.js';\nexport { default as flatten } from './flatten.js';\nexport { default as flattenDeep } from './flattenDeep.js';\nexport { default as flattenDepth } from './flattenDepth.js';\nexport { default as flip } from './flip.js';\nexport { default as floor } from './floor.js';\nexport { default as flow } from './flow.js';\nexport { default as flowRight } from './flowRight.js';\nexport { default as forEach } from './forEach.js';\nexport { default as forEachRight } from './forEachRight.js';\nexport { default as forIn } from './forIn.js';\nexport { default as forInRight } from './forInRight.js';\nexport { default as forOwn } from './forOwn.js';\nexport { default as forOwnRight } from './forOwnRight.js';\nexport { default as fromPairs } from './fromPairs.js';\nexport { default as functions } from './functions.js';\nexport { default as functionsIn } from './functionsIn.js';\nexport { default as get } from './get.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as gt } from './gt.js';\nexport { default as gte } from './gte.js';\nexport { default as has } from './has.js';\nexport { default as hasIn } from './hasIn.js';\nexport { default as head } from './head.js';\nexport { default as identity } from './identity.js';\nexport { default as inRange } from './inRange.js';\nexport { default as includes } from './includes.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as initial } from './initial.js';\nexport { default as intersection } from './intersection.js';\nexport { default as intersectionBy } from './intersectionBy.js';\nexport { default as intersectionWith } from './intersectionWith.js';\nexport { default as invert } from './invert.js';\nexport { default as invertBy } from './invertBy.js';\nexport { default as invoke } from './invoke.js';\nexport { default as invokeMap } from './invokeMap.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isArrayLike } from './isArrayLike.js';\nexport { default as isArrayLikeObject } from './isArrayLikeObject.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isBuffer } from './isBuffer.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isEqualWith } from './isEqualWith.js';\nexport { default as isError } from './isError.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isInteger } from './isInteger.js';\nexport { default as isLength } from './isLength.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isMatchWith } from './isMatchWith.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isNative } from './isNative.js';\nexport { default as isNil } from './isNil.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isObject } from './isObject.js';\nexport { default as isObjectLike } from './isObjectLike.js';\nexport { default as isPlainObject } from './isPlainObject.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isSafeInteger } from './isSafeInteger.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isString } from './isString.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isWeakSet } from './isWeakSet.js';\nexport { default as iteratee } from './iteratee.js';\nexport { default as join } from './join.js';\nexport { default as kebabCase } from './kebabCase.js';\nexport { default as keyBy } from './keyBy.js';\nexport { default as keys } from './keys.js';\nexport { default as keysIn } from './keysIn.js';\nexport { default as last } from './last.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as lodash } from './wrapperLodash.js';\nexport { default as lowerCase } from './lowerCase.js';\nexport { default as lowerFirst } from './lowerFirst.js';\nexport { default as lt } from './lt.js';\nexport { default as lte } from './lte.js';\nexport { default as map } from './map.js';\nexport { default as mapKeys } from './mapKeys.js';\nexport { default as mapValues } from './mapValues.js';\nexport { default as matches } from './matches.js';\nexport { default as matchesProperty } from './matchesProperty.js';\nexport { default as max } from './max.js';\nexport { default as maxBy } from './maxBy.js';\nexport { default as mean } from './mean.js';\nexport { default as meanBy } from './meanBy.js';\nexport { default as memoize } from './memoize.js';\nexport { default as merge } from './merge.js';\nexport { default as mergeWith } from './mergeWith.js';\nexport { default as method } from './method.js';\nexport { default as methodOf } from './methodOf.js';\nexport { default as min } from './min.js';\nexport { default as minBy } from './minBy.js';\nexport { default as mixin } from './mixin.js';\nexport { default as multiply } from './multiply.js';\nexport { default as negate } from './negate.js';\nexport { default as next } from './next.js';\nexport { default as noop } from './noop.js';\nexport { default as now } from './now.js';\nexport { default as nth } from './nth.js';\nexport { default as nthArg } from './nthArg.js';\nexport { default as omit } from './omit.js';\nexport { default as omitBy } from './omitBy.js';\nexport { default as once } from './once.js';\nexport { default as orderBy } from './orderBy.js';\nexport { default as over } from './over.js';\nexport { default as overArgs } from './overArgs.js';\nexport { default as overEvery } from './overEvery.js';\nexport { default as overSome } from './overSome.js';\nexport { default as pad } from './pad.js';\nexport { default as padEnd } from './padEnd.js';\nexport { default as padStart } from './padStart.js';\nexport { default as parseInt } from './parseInt.js';\nexport { default as partial } from './partial.js';\nexport { default as partialRight } from './partialRight.js';\nexport { default as partition } from './partition.js';\nexport { default as pick } from './pick.js';\nexport { default as pickBy } from './pickBy.js';\nexport { default as plant } from './plant.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as pull } from './pull.js';\nexport { default as pullAll } from './pullAll.js';\nexport { default as pullAllBy } from './pullAllBy.js';\nexport { default as pullAllWith } from './pullAllWith.js';\nexport { default as pullAt } from './pullAt.js';\nexport { default as random } from './random.js';\nexport { default as range } from './range.js';\nexport { default as rangeRight } from './rangeRight.js';\nexport { default as rearg } from './rearg.js';\nexport { default as reduce } from './reduce.js';\nexport { default as reduceRight } from './reduceRight.js';\nexport { default as reject } from './reject.js';\nexport { default as remove } from './remove.js';\nexport { default as repeat } from './repeat.js';\nexport { default as replace } from './replace.js';\nexport { default as rest } from './rest.js';\nexport { default as result } from './result.js';\nexport { default as reverse } from './reverse.js';\nexport { default as round } from './round.js';\nexport { default as sample } from './sample.js';\nexport { default as sampleSize } from './sampleSize.js';\nexport { default as set } from './set.js';\nexport { default as setWith } from './setWith.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as size } from './size.js';\nexport { default as slice } from './slice.js';\nexport { default as snakeCase } from './snakeCase.js';\nexport { default as some } from './some.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as sortedIndexBy } from './sortedIndexBy.js';\nexport { default as sortedIndexOf } from './sortedIndexOf.js';\nexport { default as sortedLastIndex } from './sortedLastIndex.js';\nexport { default as sortedLastIndexBy } from './sortedLastIndexBy.js';\nexport { default as sortedLastIndexOf } from './sortedLastIndexOf.js';\nexport { default as sortedUniq } from './sortedUniq.js';\nexport { default as sortedUniqBy } from './sortedUniqBy.js';\nexport { default as split } from './split.js';\nexport { default as spread } from './spread.js';\nexport { default as startCase } from './startCase.js';\nexport { default as startsWith } from './startsWith.js';\nexport { default as stubArray } from './stubArray.js';\nexport { default as stubFalse } from './stubFalse.js';\nexport { default as stubObject } from './stubObject.js';\nexport { default as stubString } from './stubString.js';\nexport { default as stubTrue } from './stubTrue.js';\nexport { default as subtract } from './subtract.js';\nexport { default as sum } from './sum.js';\nexport { default as sumBy } from './sumBy.js';\nexport { default as tail } from './tail.js';\nexport { default as take } from './take.js';\nexport { default as takeRight } from './takeRight.js';\nexport { default as takeRightWhile } from './takeRightWhile.js';\nexport { default as takeWhile } from './takeWhile.js';\nexport { default as tap } from './tap.js';\nexport { default as template } from './template.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as throttle } from './throttle.js';\nexport { default as thru } from './thru.js';\nexport { default as times } from './times.js';\nexport { default as toArray } from './toArray.js';\nexport { default as toFinite } from './toFinite.js';\nexport { default as toInteger } from './toInteger.js';\nexport { default as toIterator } from './toIterator.js';\nexport { default as toJSON } from './toJSON.js';\nexport { default as toLength } from './toLength.js';\nexport { default as toLower } from './toLower.js';\nexport { default as toNumber } from './toNumber.js';\nexport { default as toPairs } from './toPairs.js';\nexport { default as toPairsIn } from './toPairsIn.js';\nexport { default as toPath } from './toPath.js';\nexport { default as toPlainObject } from './toPlainObject.js';\nexport { default as toSafeInteger } from './toSafeInteger.js';\nexport { default as toString } from './toString.js';\nexport { default as toUpper } from './toUpper.js';\nexport { default as transform } from './transform.js';\nexport { default as trim } from './trim.js';\nexport { default as trimEnd } from './trimEnd.js';\nexport { default as trimStart } from './trimStart.js';\nexport { default as truncate } from './truncate.js';\nexport { default as unary } from './unary.js';\nexport { default as unescape } from './unescape.js';\nexport { default as union } from './union.js';\nexport { default as unionBy } from './unionBy.js';\nexport { default as unionWith } from './unionWith.js';\nexport { default as uniq } from './uniq.js';\nexport { default as uniqBy } from './uniqBy.js';\nexport { default as uniqWith } from './uniqWith.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as unset } from './unset.js';\nexport { default as unzip } from './unzip.js';\nexport { default as unzipWith } from './unzipWith.js';\nexport { default as update } from './update.js';\nexport { default as updateWith } from './updateWith.js';\nexport { default as upperCase } from './upperCase.js';\nexport { default as upperFirst } from './upperFirst.js';\nexport { default as value } from './value.js';\nexport { default as valueOf } from './valueOf.js';\nexport { default as values } from './values.js';\nexport { default as valuesIn } from './valuesIn.js';\nexport { default as without } from './without.js';\nexport { default as words } from './words.js';\nexport { default as wrap } from './wrap.js';\nexport { default as wrapperAt } from './wrapperAt.js';\nexport { default as wrapperChain } from './wrapperChain.js';\nexport { default as wrapperCommit } from './commit.js';\nexport { default as wrapperLodash } from './wrapperLodash.js';\nexport { default as wrapperNext } from './next.js';\nexport { default as wrapperPlant } from './plant.js';\nexport { default as wrapperReverse } from './wrapperReverse.js';\nexport { default as wrapperToIterator } from './toIterator.js';\nexport { default as wrapperValue } from './wrapperValue.js';\nexport { default as xor } from './xor.js';\nexport { default as xorBy } from './xorBy.js';\nexport { default as xorWith } from './xorWith.js';\nexport { default as zip } from './zip.js';\nexport { default as zipObject } from './zipObject.js';\nexport { default as zipObjectDeep } from './zipObjectDeep.js';\nexport { default as zipWith } from './zipWith.js';\nexport { default } from './lodash.default.js';\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","/**\n * Asserts that a condition is truthy, throwing an exception with the specified message if it is falsy.\n */\nexport function assert(condition: unknown, message?: string): asserts condition {\n    if (!condition) {\n        throw new Error(message ?? \"Expected condition to be truthy but got falsy.\");\n    }\n}\n\nexport function assertDefined<T>(val: T, message?: string): asserts val is Exclude<T, undefined> {\n    if (val === undefined) {\n        throw new Error(message ?? \"Expected value to be defined but got undefined.\");\n    }\n}\n\nexport function assertNonNull<T>(val: T, message?: string): asserts val is Exclude<T, null> {\n    if (val === null) {\n        throw new Error(message ?? \"Expected value to be non-null but got null.\");\n    }\n}\n\nexport function assertString(val: unknown, message?: string): asserts val is string {\n    if (typeof val !== \"string\") {\n        throw new Error(message ?? `Expected value to be a string but got ${typeof val}.`);\n    }\n}\n\nexport function assertNever(x: never): never {\n    throw new Error(\"Unexpected value: \" + JSON.stringify(x));\n}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertNeverNoThrow(_: never): void {}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertVoidNoThrow(_x: void): void {}\n","export function keys<T extends object>(object: T): (keyof T)[] {\n    return Object.keys(object) as (keyof T)[];\n}\n","export { AbstractAstNode } from \"./AbstractAstNode.js\";\nexport { AbstractFormatter, NopFormatter } from \"./AbstractFormatter.js\";\nexport { AbstractWriter } from \"./AbstractWriter.js\";\nexport {\n    type Argument,\n    type Arguments,\n    hasNamedArgument,\n    isNamedArgument,\n    type NamedArgument,\n    type UnnamedArgument\n} from \"./Argument.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Ternary } from \"./Ternary.js\";\n","import { tag } from \"../utils/stacktrace.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport abstract class AbstractAstNode {\n    /**\n     * Every AST node knows how to write itself to a string.\n     */\n    public abstract write(writer: AbstractWriter): void;\n\n    public constructor() {\n        // when FERN_STACK_TRACK is defined this will track the stack trace of the current AstNode.\n        // otherwise this has absolutely no effect whatsoever.\n        tag(this);\n    }\n}\n","/**\n * Global flag that enables or disables stack tracing functionality throughout the application.\n * This is controlled via the FERN_STACK_TRACK environment variable.\n *\n * When enabled (truthy environment variable value), stack traces will be captured and processed\n * by the stacktrace functions in this module. When disabled, the stacktrace() function returns\n * an empty array for performance optimization.\n *\n * @example\n * // Enable tracing by setting the environment variable\n * // FERN_STACK_TRACK=1 <cmdline>\n */\nconst key = process.env[\"FERN_STACK_TRACK\"]?.toLowerCase() ?? \"\";\n\nexport const enableStackTracking = key !== \"\" && key !== \"0\" && key !== \"false\";\n\n/** The style of comments desired for the stack tracking comments\n *\n * can be \"single\", \"multiline\", or \"box\".\n * if not set to one of those, defaults to \"single\".\n */\nexport const trackingType = [\"single\", \"multiline\", \"box\"].includes(key) ? key : \"single\";\n\nif (enableStackTracking) {\n    // we're going to put a hard max limit on the stack trace to prevent infinite recursion and excessive stack generation\n    Error.stackTraceLimit = 50;\n}\n\n/**\n * Configuration options for controlling stack trace capture and filtering behavior.\n */\ninterface StackTraceOptions {\n    /**\n     * Maximum number of stack frames to return after filtering.\n     *\n     * Maximum may never exceed 50.\n     * @default 50\n     */\n    maxFrames?: number;\n\n    /**\n     * Number of frames to skip from the beginning of the filtered stack trace.\n     * Useful for omitting wrapper functions from the output.\n     * @default 0\n     */\n    skip?: number;\n\n    /**\n     * Array of function name substrings that trigger an early stop when encountered.\n     * When a frame's function name includes any of these strings, that frame and all\n     * subsequent frames will be excluded from the output.\n     *\n     * implicitly includes \"runInteractiveTask\"\n     * @default []\n     */\n    stopOn?: string[];\n\n    /**\n     * Array of file path substrings to filter out. Any frame whose path contains\n     * any of these strings will be excluded from the output.\n     * @default []\n     */\n    filterPaths?: string[];\n\n    /**\n     * Array of function name substrings to filter out. Any frame whose function name\n     * contains any of these strings will be excluded from the output.\n     *\n     * implicitly includes \"SdkGeneratorCLI\", \"runCli\",\"Frames.trace\",\"Frames.tag\", \"at\", \"stacktrace\"\n     * @default []\n     */\n    filterFunctions?: string[];\n\n    /**\n     * Whether to filter out Node.js internal frames (paths starting with \"node:\").\n     * @default true\n     */\n    filterNode?: boolean;\n\n    /**\n     * Whether to filter out .js files, which typically indicate non-source files\n     * without source map information.\n     * @default true\n     */\n    filterJs?: boolean;\n\n    /**\n     * A function to format the file path of the stack trace frame.\n     * @default (filename) => filename\n     */\n    formatFilename?: (filename: string) => string;\n}\n\n/**\n * Represents a single parsed stack trace frame containing function, file path, and position information.\n */\nexport interface StackTraceFrame {\n    /**\n     * The function name or context. May include special formatting like \"alias()=> { ... }\"\n     * for certain Object methods, or be an empty string for anonymous contexts.\n     */\n    fn: string;\n\n    /**\n     * The file path where this frame originated. This will typically be the full path\n     * to the source file.\n     */\n    path: string;\n\n    /**\n     * The line and column position in the format \"line:column\" (e.g., \"42:13\").\n     */\n    position: string;\n}\n\nconst globalFunctionFilters = new Set<string>([\"SdkGeneratorCLI\", \"runCli\", \"LoggerImpl\", \"Array.forEach\"]);\nconst globalFileFilters = new Set<string>([\"stacktrace\"]);\n\n/**\n * Adds a function name to the global function filters for stack traces\n * @param filter - The function name to add to the global function filters.\n */\nexport function addGlobalFunctionFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFunctionFilters.add(filter);\n    }\n}\n\n/**\n * Adds a file path to the global file filters for stack traces.\n * @param filter - The file path to add to the global file filters.\n */\nexport function addGlobalFileFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFileFilters.add(filter);\n    }\n}\n\n/**\n * Captures and parses the current call stack, returning an array of stack frames with filtering options.\n *\n * This function creates a new Error object to capture the stack trace, then parses each frame\n * to extract function names, file paths, and positions. It applies multiple filtering strategies\n * to exclude unwanted frames (e.g., Node.js internals, .js files, specific functions).\n *\n * The function only operates when `enableStackTracking` is true. If tracing is disabled, it returns\n * an empty array for performance optimization.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns Array of parsed stack trace frames, filtered and limited according to the options\n *\n * @example\n * // Capture the first 10 frames, skipping the first 2\n * const frames = stacktrace({ maxFrames: 10, skip: 2 });\n *\n * @example\n * // Capture frames until hitting \"main\" function, filter out test files\n * const frames = stacktrace({\n *   stopOn: [\"main\"],\n *   filterPaths: [\"/test/\"],\n *   filterFunctions: [\"runTests\"]\n * });\n *\n * @remarks\n * The function applies filters in the following order:\n * 1. Parses each stack frame using regex to extract function, path, line, and column\n * 2. Applies early-stop logic when encountering functions in the `stopOn` array\n * 3. Formats special function names (e.g., \"Object.alias\" → \"alias()=> { ... }\")\n * 4. Filters out:\n *    - The stacktrace function itself (\"at\", \"stacktrace\")\n *    - Functions matching `filterFunctions` (substring match)\n *    - Node.js internal frames (if `filterNode` is true)\n *    - .js files (if `filterJs` is true)\n *    - Paths matching `filterPaths` (substring match)\n * 5. Applies `skip` and `maxFrames` to limit the output\n */\nexport function stacktrace({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    formatFilename = (filename) => filename\n}: StackTraceOptions = {}): StackTraceFrame[] {\n    if (!enableStackTracking) {\n        return [];\n    }\n    filterFunctions = [...filterFunctions, ...globalFunctionFilters];\n    filterPaths = [...filterPaths, ...globalFileFilters];\n    stopOn = [...stopOn, \"runInteractiveTask\"];\n    let stop = false;\n    return (\n        (new Error().stack ?? \"\")\n            .split(\"\\n\")\n            .map((line) => {\n                const match = line.match(/at\\s+(.*)\\s+\\((.*):(\\d+):(\\d+)\\)/);\n                if (match && match.length === 5) {\n                    let [, fn, path, line, column] = match;\n                    if (!fn || !path || !line || !column) {\n                        return undefined;\n                    }\n\n                    if (stop || stopOn.some((s) => fn?.includes(s))) {\n                        stop = true;\n                        return undefined;\n                    }\n\n                    switch (fn) {\n                        case \"Object.<anonymous>\":\n                            fn = \"\";\n                            break;\n                        case \"Object.object\":\n                        case \"Object.alias\":\n                        case \"Object.union\":\n                        case \"Object.enum\":\n                        case \"Object.undiscriminatedUnion\":\n                            fn = `${fn.substring(fn.indexOf(\".\") + 1)}()=> { ... }`;\n                            break;\n                    }\n                    return {\n                        fn,\n                        path: formatFilename(path),\n                        position: `${line}:${column}`\n                    } as StackTraceFrame;\n                }\n                return undefined;\n            })\n            .filter(\n                (each) =>\n                    each &&\n                    !filterFunctions.some((f) => each.fn.includes(f)) && // substring match for filter functions\n                    !(filterNode && each.path?.startsWith(\"node:\")) && // starts with node:\n                    !(filterJs && each.path?.endsWith(\".js\")) && // ends with .js (meaning likely not a source file - no source map info)\n                    !filterPaths.some((p) => each.path.includes(p)) // substring match for filter paths\n            ) as StackTraceFrame[]\n    ).slice(skip, skip + maxFrames);\n}\n\n/**\n * Returns a formatted stack trace string at the current location for debugging purposes.\n *\n * This is a convenience function that wraps `stacktrace()` and formats the output as a\n * human-readable string. It's particularly useful for logging or debugging to understand\n * the execution flow and call hierarchy.\n *\n * The function supports both single-line and multi-line output formats. Single-line format\n * concatenates all frames into one line (useful for compact logging), while multi-line format\n * adds newlines and indentation for better readability.\n *\n * @param options - Configuration options for stack trace capture, filtering, and formatting\n * @param options.multiline - Whether to format the output with newlines and indentation.\n *                            When true, each frame is on its own line with 4-space indent.\n *                            When false (default), all frames are concatenated on one line.\n * @returns A formatted string containing the stack trace information, prefixed with \"stacktrace - \"\n *\n * @example\n * // Single-line format (compact)\n * console.log(at());\n * // Output: \"stacktrace - myFunction - /path/to/file.ts:42:13anotherFunc - /path/to/other.ts:17:5\"\n *\n * @example\n * // Multi-line format (readable)\n * console.log(at({ multiline: true, maxFrames: 5 }));\n * // Output:\n * // stacktrace -\n * //     myFunction - /path/to/file.ts:42:13\n * //     anotherFunc - /path/to/other.ts:17:5\n * //     main - /path/to/index.ts:10:1\n *\n * @example\n * // Custom filtering for specific use case\n * console.log(at({\n *   maxFrames: 10,\n *   skip: 1,\n *   filterPaths: [\"foo.ts\"],\n *   multiline: true\n * }));\n *\n * @remarks\n * This function automatically skips itself from the stack trace output by default.\n * The \"at\" function name is filtered by the underlying `stacktrace()` function.\n */\nexport function at({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [\"runInteractiveTask\"],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}): string {\n    return enableStackTracking\n        ? `${stacktrace({ maxFrames, skip, filterPaths, filterFunctions, stopOn, filterNode, filterJs, formatFilename })\n              .map((each) => `${multiline ? \"\\n    \" : \" > \"}${each.fn} - ${each.path}:${each.position}`)\n              .join(\"\")}`\n        : \"\";\n}\n\n/** This class allows the developer to attach stack trace information to objects  */\nexport class StackTraces {\n    private readonly maxFrames: number;\n    private readonly skip: number;\n    private readonly filterPaths: string[];\n    private readonly filterFunctions: string[];\n    private readonly stopOn: string[];\n    private readonly filterNode: boolean;\n    private readonly filterJs: boolean;\n    private readonly multiline: boolean;\n    private readonly formatFilename: (filename: string) => string;\n    private tracking = new WeakMap<object, Set<StackTraceFrame>>();\n\n    constructor({\n        maxFrames = 50,\n        skip = 0,\n        filterPaths = [],\n        filterFunctions = [],\n        stopOn = [],\n        filterNode = true,\n        filterJs = true,\n        multiline = false,\n        formatFilename = (filename) => filename\n    }: StackTraceOptions & { multiline?: boolean } = {}) {\n        this.maxFrames = maxFrames;\n        this.skip = skip;\n        this.filterPaths = filterPaths;\n        this.filterFunctions = filterFunctions;\n        this.stopOn = stopOn;\n        this.filterNode = filterNode;\n        this.filterJs = filterJs;\n        this.multiline = multiline;\n        this.formatFilename = formatFilename;\n    }\n\n    /**\n     * Tags the current stack trace with the given object.\n     *\n     * This can be called multiple times to add more stack trace information to the object.\n     *\n     * @param obj - The object to tag the stack trace with.\n     */\n    tag(obj: object): void {\n        const current = this.tracking.get(obj) || new Set<StackTraceFrame>();\n        stacktrace({\n            maxFrames: this.maxFrames,\n            skip: this.skip,\n            filterPaths: this.filterPaths,\n            filterFunctions: this.filterFunctions,\n            stopOn: this.stopOn,\n            filterNode: this.filterNode,\n            filterJs: this.filterJs,\n            formatFilename: this.formatFilename\n        }).forEach((frame) => current.add(frame));\n        this.tracking.set(obj, current);\n    }\n\n    /**\n     * Returns a formatted stack trace string for the given object.\n     * @param obj - The object to get the stack trace for.\n     * @returns A formatted string containing the stack trace information.\n     */\n    trace(obj: object): string {\n        if (!enableStackTracking) {\n            return \"\";\n        }\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return \"\";\n        }\n\n        return [...frames]\n            .map((each) => `${this.multiline ? \"\\n    \" : \"\"}${each.fn} - ${each.path}:${each.position}`)\n            .join(\"\");\n    }\n\n    /**\n     * Gets the stack trace frames for the given object.\n     *\n     * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n     *       Otherwise this will return an empty array.\n     *\n     * @param obj - The object to get the stack trace frames for.\n     * @returns The stack trace frames for the given object.\n     */\n    frames(obj: object): StackTraceFrame[] {\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return [];\n        }\n        return [...frames];\n    }\n\n    /**\n     * Frees the stack trace information for the given object.\n     * @param obj - The object to free the stack trace information for.\n     */\n    free(obj: object): void {\n        this.tracking.delete(obj);\n    }\n\n    /**\n     * Clears all stack trace information.\n     */\n    clear(): void {\n        this.tracking = new WeakMap<object, Set<StackTraceFrame>>();\n    }\n}\n\nlet stackTraces: StackTraces | undefined;\n/**\n * Starts tracking the stack trace of the current object.\n *\n * Note: This will only start tracking when FERN_STACK_TRACK is defined.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns The stack traces object.\n */\nexport function startTracking({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}) {\n    if (!enableStackTracking) {\n        return;\n    }\n    stackTraces ??= new StackTraces({\n        maxFrames,\n        skip,\n        filterPaths,\n        filterFunctions,\n        stopOn,\n        filterNode,\n        filterJs,\n        multiline,\n        formatFilename\n    });\n}\n\n/**\n * Tags the current stack trace with the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to tag the stack trace with.\n */\nexport function tag(obj: object) {\n    stackTraces?.tag(obj);\n}\n\n/**\n * Returns a formatted stack trace string for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to get the stack trace for.\n * @returns A formatted string containing the stack trace information.\n */\nexport function trace(obj: object) {\n    return stackTraces?.trace(obj) ?? \"\";\n}\n\n/**\n * Frees the stack trace information for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to free the stack trace information for.\n */\nexport function free(obj: object) {\n    stackTraces?.free(obj);\n}\n\n/**\n * Gets the stack trace frames for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will return an empty array.\n *\n * @param obj - The object to get the stack trace frames for.\n * @returns The stack trace frames for the given object.\n */\nexport function getFramesForTaggedObject(obj: object): StackTraceFrame[] {\n    return stackTraces?.frames(obj) ?? [];\n}\n","export abstract class AbstractFormatter {\n    abstract format(content: string): Promise<string>;\n    abstract formatSync(content: string): string;\n    formatMultiple(contents: string[]): Promise<string[]> {\n        return Promise.all(contents.map((content) => this.format(content)));\n    }\n    formatMultipleSync(contents: string[]): string[] {\n        return contents.map((content) => this.formatSync(content));\n    }\n    dispose(): void {\n        // no-op by default; subclasses may override to clean up resources\n    }\n}\n\nexport class NopFormatter extends AbstractFormatter {\n    public async format(content: string): Promise<string> {\n        return content;\n    }\n\n    public formatSync(content: string): string {\n        return content;\n    }\n}\n","import { enableStackTracking } from \"../utils/index.js\";\nimport {\n    getFramesForTaggedObject,\n    StackTraceFrame,\n    stacktrace,\n    startTracking,\n    trackingType\n} from \"../utils/stacktrace.js\";\nimport { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\n\nconst TAB_SIZE = 4;\n// this will start tracking only when FERN_STACK_TRACK is defined\n// otherwise this has absolutely no effect whatsoever.\nstartTracking({ skip: 0, maxFrames: 15, filterFunctions: [\"Abstract\"] });\n\nexport class AbstractWriter {\n    /* The buffer of lines being written */\n    protected readonly lineBuffer: string[] = [];\n\n    /* The contents being written */\n    public get buffer() {\n        if (enableStackTracking && this.nodeStackFrames.length > 0) {\n            // if we're emitting tracking comments, let's ensure we get the last little bit of info.\n            // by appending a newline to the buffer before returning it.\n            // (this can be useful when using toString() to get a node's content.)\n            this.writeInternal(\"\\n\");\n        }\n        return this.lineBuffer.join(\"\\n\") + (this.lastCharacterIsNewline ? \"\\n\" : \"\");\n    }\n\n    /* Indentation level (multiple of 4) */\n    private indentLevel = 0;\n    /* Whether anything has been written to the buffer */\n    private hasWrittenAnything = false;\n    /* Whether the last character written was a semi colon */\n    private lastCharacterIsSemicolon = false;\n    /* Whether the last character written was a newline */\n    private lastCharacterIsNewline = false;\n    /* The stack traces associated with the current node */\n    private nodeStackFrames: StackTraceFrame[] = [];\n\n    /**\n     * Writes arbitrary text and nodes\n     * @param text\n     */\n    public write(...parts: (string | AbstractAstNode | undefined)[]): void {\n        for (const text of parts) {\n            if (text != null) {\n                if (typeof text === \"string\") {\n                    const textEndsInNewline = text.length > 0 && text.endsWith(\"\\n\");\n                    // temporarily remove the trailing newline, since we don't want to add the indent prefix after it\n                    const textWithoutNewline = textEndsInNewline ? text.substring(0, text.length - 1) : text;\n\n                    const indent = this.getIndentString();\n                    let indentedText = textWithoutNewline.replaceAll(\"\\n\", `\\n${indent}`);\n                    if (this.isAtStartOfLine()) {\n                        indentedText = indent + indentedText;\n                    }\n                    if (textEndsInNewline) {\n                        indentedText += \"\\n\";\n                    }\n                    this.writeInternal(indentedText);\n                } else {\n                    this.writeNode(text);\n                }\n            }\n        }\n    }\n\n    public writeStatement(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...parts);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes arbitrary text without indentation\n     * @param text\n     */\n    public writeNoIndent(text: string): void {\n        const currIndentLevel = this.indentLevel;\n        this.indentLevel = 0;\n        this.write(text);\n        this.indentLevel = currIndentLevel;\n    }\n\n    /**\n     * Writes a node\n     * @param node\n     */\n    public writeNode(node: AbstractAstNode): void {\n        if (enableStackTracking) {\n            this.nodeStackFrames.push(...getFramesForTaggedObject(node));\n        }\n        node.write(this);\n\n        // if we're using box or multiline comments, write a newline after every node so it emits a comment for the node\n        // since we're dumping a lot of data anyway, might as well be explicit about it.\n        if (enableStackTracking && trackingType !== \"single\") {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    /**\n     * Writes a node or string\n     * @param input\n     */\n    public writeNodeOrString(input: AbstractAstNode | string): void {\n        if (typeof input === \"string\") {\n            this.write(input);\n            return;\n        }\n\n        this.writeNode(input);\n    }\n\n    /**\n     * Writes a node but then suffixes with a `;` and new line\n     * @param node\n     */\n    public writeNodeStatement(node: AbstractAstNode): void {\n        this.writeNode(node);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes text but then suffixes with a `;`\n     * @param node\n     */\n    public writeTextStatement(text: string): void {\n        const codeBlock = new CodeBlock(text);\n        codeBlock.write(this);\n        if (!text.endsWith(\";\")) {\n            this.write(\";\");\n        }\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlow(prefix: string, statement: AbstractAstNode): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlowWithoutStatement(prefix: string): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    /**\n     * Ends a control flow block\n     */\n    public endControlFlow(): void {\n        this.popScope();\n    }\n\n    /**\n     * Starts a control flow without a newline from the previous control flow block\n     * @param prefix\n     * @param statement\n     */\n    public contiguousControlFlow(prefix: string, statement: AbstractAstNode): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow alternative block\n     * @param prefix\n     */\n    public alternativeControlFlow(prefix: string): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    public pushScope() {\n        this.writeLine(\"{\");\n        this.indent();\n    }\n\n    public popScope(withNewline = true) {\n        this.dedent();\n        this.writeNewLineIfLastLineNot();\n        if (withNewline) {\n            this.writeLine(\"}\");\n        } else {\n            this.write(\"}\");\n        }\n    }\n\n    /* Only writes a newline if last line in the buffer is not a newline */\n    public writeLine(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...(parts.length === 0 ? [\"\"] : parts));\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /* Always writes newline */\n    public newLine(): void {\n        this.writeInternal(\"\\n\");\n    }\n\n    public writeSemicolonIfLastCharacterIsNot(): void {\n        if (!this.lastCharacterIsSemicolon) {\n            this.writeInternal(\";\");\n        }\n    }\n\n    public writeNewLineIfLastLineNot(): void {\n        if (!this.lastCharacterIsNewline) {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    public indent(): void {\n        this.indentLevel++;\n    }\n\n    public dedent(): void {\n        this.indentLevel--;\n    }\n\n    public delimit<T extends AbstractAstNode>({\n        nodes,\n        delimiter,\n        writeFunction\n    }: {\n        nodes: T[];\n        delimiter: string;\n        writeFunction: (node: T) => void;\n    }): void {\n        if (nodes.length > 0) {\n            const firstNode = nodes[0];\n            if (firstNode != null) {\n                writeFunction(firstNode);\n            }\n            for (let i = 1; i < nodes.length; i++) {\n                this.write(delimiter);\n                const node = nodes[i];\n                if (node != null) {\n                    writeFunction(node);\n                }\n            }\n        }\n    }\n\n    public toString(): string {\n        return this.buffer;\n    }\n\n    /*******************************\n     * Helper Methods\n     *******************************/\n    private writeInternal(text: string) {\n        if (text.length === 0) {\n            return;\n        }\n\n        const appendToLastLine = !this.lastCharacterIsNewline;\n\n        this.hasWrittenAnything = true;\n        this.lastCharacterIsNewline = text.endsWith(\"\\n\");\n        this.lastCharacterIsSemicolon = text.endsWith(\";\");\n\n        const lines = text.split(\"\\n\");\n\n        const appendTrackingComment =\n            enableStackTracking && !this.shouldSkipTracking(lines) && this.lastCharacterIsNewline;\n\n        if (appendToLastLine) {\n            this.lastLine = `${this.lastLine}${lines.shift() || \"\"}`;\n        }\n\n        if (this.lastCharacterIsNewline) {\n            lines.pop();\n        }\n\n        this.lineBuffer.push(...lines);\n\n        if (appendTrackingComment) {\n            this.appendTrackingComment();\n        }\n    }\n\n    /**\n     * Sets the last line of the buffer\n     * @param line - The line to set\n     */\n    protected set lastLine(line: string) {\n        if (this.lineBuffer.length > 0) {\n            this.lineBuffer[this.lineBuffer.length - 1] = line;\n        } else {\n            this.lineBuffer.push(line);\n        }\n    }\n\n    /**\n     * Gets the last line of the buffer\n     * @returns The last line of the buffer\n     */\n    protected get lastLine() {\n        return this.lineBuffer[this.lineBuffer.length - 1] || \"\";\n    }\n\n    /**\n     * Determines if the tracking comment should be skipped\n     * @param lines - The that are being written out\n     *\n     * @returns True if the tracking comment should be skipped\n     */\n    protected shouldSkipTracking(lines: string[]) {\n        return false;\n    }\n\n    /**\n     * Formats the stack trace frames into a string\n     * @param stack - The stack trace to format\n     * @param prefix - The prefix to add to the stack trace\n     * @returns The formatted stack trace\n     */\n    protected formatStack(stack: StackTraceFrame[], prefix = \"\") {\n        return stack.map((each) => `${prefix ? `(${prefix}) ` : \"\"} ${each.fn} - ${each.path} : ${each.position}`);\n    }\n\n    /**\n     * Filters out frames that start with the name of the current class\n     *\n     * This will filter out frames that start with the name of the current class that inherits from AbstractWriter.\n     *\n     * You can override this function to filter out more things.\n     * @param stack - The stack trace to filter\n     * @returns The filtered stack trace\n     */\n    protected filterStack(stack: StackTraceFrame[]) {\n        return stack.filter((each) => !each.fn.startsWith(`${this.constructor.name}.`));\n    }\n\n    /**\n     * Prepares the stack trace and calls the appropriate tracking comment formatter\n     */\n    protected appendTrackingComment() {\n        const stack = [\n            // adds the stack frames of the current function call\n            ...this.formatStack(this.filterStack(stacktrace({ maxFrames: 15, skip: 3 }))),\n\n            // adds the stack frames of any AstNodes that have been written since the last tracking comment\n            ...this.formatStack(this.filterStack(this.nodeStackFrames), \"node\")\n        ];\n        // reset the ast node stack frames\n        this.nodeStackFrames.length = 0;\n\n        switch (trackingType) {\n            case \"single\":\n                return this.singleLineTrackingComment(stack);\n\n            case \"multiline\":\n                return this.multiLineTrackingComment(stack);\n\n            case \"box\":\n                return this.boxTrackingComment(stack);\n        }\n    }\n\n    /**\n     * Creates a single line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected singleLineTrackingComment(stack: string[]) {\n        this.lastLine = `${this.lastLine} // ${stack.join(\" \")}`;\n    }\n    /**\n     * Creates a multi line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected multiLineTrackingComment(stack: string[]) {\n        this.lineBuffer.push(...stack.map((each) => `    // ${each}`));\n    }\n    /**\n     * Creates a box tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected boxTrackingComment(stack: string[]) {\n        this.lineBuffer.push(\"/*\", ...stack.map((each) => `    ${each}`), \"*/\");\n    }\n\n    private isAtStartOfLine(): boolean {\n        return this.lastCharacterIsNewline || !this.hasWrittenAnything;\n    }\n\n    private getIndentString(): string {\n        return \" \".repeat(this.indentLevel * this.getTabSize());\n    }\n\n    protected getTabSize(): number {\n        return TAB_SIZE;\n    }\n}\n","export { getPackageName } from \"./getPackageName.js\";\nexport { getSdkVersion } from \"./getSdkVersion.js\";\nexport {\n    addGlobalFileFilter,\n    addGlobalFunctionFilter,\n    at,\n    enableStackTracking,\n    getFramesForTaggedObject,\n    StackTraces,\n    stacktrace\n} from \"./stacktrace.js\";\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg<T extends AbstractWriter> = string | AbstractAstNode | ((writer: T) => void);\n}\n\nexport class CodeBlock<T extends AbstractWriter> extends AbstractAstNode {\n    private value: CodeBlock.Arg<T>;\n\n    constructor(value: CodeBlock.Arg<T>) {\n        super();\n        this.value = value;\n    }\n\n    public write(writer: T): void {\n        if (typeof this.value === \"string\") {\n            writer.write(this.value);\n            // if function\n        } else if (typeof this.value === \"function\") {\n            this.value(writer);\n        } else {\n            this.value.write(writer);\n        }\n    }\n}\n","export { AbstractDynamicSnippetsGenerator } from \"./AbstractDynamicSnippetsGenerator.js\";\nexport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nexport { type DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nexport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nexport { type Options, Style } from \"./Options.js\";\nexport { Result } from \"./Result.js\";\nexport { Scope } from \"./Scope.js\";\nexport { type TypeInstance } from \"./TypeInstance.js\";\nexport { DynamicSnippetsTestRunner } from \"./test-utils/DynamicSnippetsTestRunner.js\";\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { AbstractAstNode } from \"../ast/index.js\";\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { AbstractEndpointSnippetGenerator } from \"./AbstractEndpointSnippetGenerator.js\";\nimport { Options } from \"./Options.js\";\nimport { Result } from \"./Result.js\";\n\nexport abstract class AbstractDynamicSnippetsGenerator<\n    Context extends AbstractDynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator extends AbstractEndpointSnippetGenerator<Context>\n> {\n    public constructor(public readonly context: Context) {}\n\n    protected abstract createSnippetGenerator(context: Context): EndpointSnippetGenerator;\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = await snippetGenerator.generateSnippet({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<AbstractAstNode> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        let lastError: Error | undefined = undefined;\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const ast = await snippetGenerator.generateSnippetAst({ endpoint, request, options });\n                return ast;\n            } catch (error) {\n                lastError = error as Error;\n            }\n        }\n        if (lastError != null) {\n            throw lastError;\n        }\n        throw new Error(\n            `Failed to generate snippet AST for endpoint: ${request.endpoint.method} ${request.endpoint.path}`\n        );\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = snippetGenerator.generateSnippetSync({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    /**\n     * Resolves endpoints based on the request and options.\n     * If an endpointId is specified in options, returns only that specific endpoint.\n     * Otherwise, resolves all endpoints matching the endpoint location (method + path).\n     */\n    private resolveEndpoints({\n        request,\n        options\n    }: {\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): FernIr.dynamic.Endpoint[] {\n        if (options.endpointId != null) {\n            const endpoint = this.context.resolveEndpointById(options.endpointId);\n            if (endpoint == null) {\n                throw new Error(`No endpoint found with ID \"${options.endpointId}\"`);\n            }\n            return [endpoint];\n        }\n        return this.context.resolveEndpointLocationOrThrow(request.endpoint);\n    }\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { ErrorReporter } from \"./ErrorReporter.js\";\n\nexport class Result {\n    public reporter: ErrorReporter | undefined;\n    public snippet: string | undefined;\n    public err: Error | undefined;\n\n    constructor() {\n        this.snippet = undefined;\n        this.reporter = undefined;\n        this.err = undefined;\n    }\n\n    public update({ context, snippet }: { context: AbstractDynamicSnippetsGeneratorContext; snippet: string }): void {\n        if (this.shouldUpdate({ snippet, reporter: context.errors })) {\n            this.reporter = context.errors.clone();\n            this.snippet = snippet;\n        }\n    }\n\n    public getResponseOrThrow({\n        endpoint\n    }: {\n        endpoint: FernIr.dynamic.EndpointLocation;\n    }): FernIr.dynamic.EndpointSnippetResponse {\n        if (this.snippet != null && this.reporter != null) {\n            return {\n                snippet: this.snippet,\n                errors: this.reporter.toDynamicSnippetErrors()\n            };\n        }\n        throw this.err ?? new Error(`Failed to generate snippet for endpoint \"${endpoint.method} ${endpoint.path}\"`);\n    }\n\n    private shouldUpdate({ snippet, reporter }: { snippet: string; reporter: ErrorReporter }): boolean {\n        if (this.reporter == null || (this.reporter.size() > 0 && reporter.size() === 0)) {\n            return true;\n        }\n        return snippet.length > (this.snippet?.length ?? 0);\n    }\n}\n","import { assertNever, keys } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { HttpEndpointReferenceParser } from \"@fern-api/fern-definition-schema\";\n\nimport { FernGeneratorExec } from \"../GeneratorNotificationService.js\";\nimport { DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nimport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nimport { Options } from \"./Options.js\";\nimport { TypeInstance } from \"./TypeInstance.js\";\n\nexport abstract class AbstractDynamicSnippetsGeneratorContext {\n    public config: FernGeneratorExec.GeneratorConfig;\n    public options: Options;\n    public errors: ErrorReporter;\n\n    private _ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    private httpEndpointReferenceParser: HttpEndpointReferenceParser;\n\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        this._ir = ir;\n        this.config = config;\n        this.options = options;\n        this.errors = new ErrorReporter();\n        this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n    }\n\n    public abstract clone(): AbstractDynamicSnippetsGeneratorContext;\n\n    public associateQueryParametersByWireValue({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    throw this.newParameterNotRecognizedError(key);\n                }\n                // If this query parameter supports allow-multiple, the user-provided values\n                // must be wrapped in an array.\n                const typeInstanceValue =\n                    this.isListTypeReference(parameter.typeReference) && !Array.isArray(value) ? [value] : value;\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value: typeInstanceValue\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    public associateByWireValueOrDefault({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            this.errors.scope(parameter.name.wireValue);\n            try {\n                let value = values[parameter.name.wireValue];\n\n                if (value == null) {\n                    if (parameter.typeReference.type === \"primitive\" && parameter.typeReference.value === \"STRING\") {\n                        // synthesize a parameter value for string parameters that are missing data\n                        value = `<${parameter.name.wireValue}>`;\n                    } else {\n                        this.errors.add({\n                            severity: Severity.Critical,\n                            message: this.newParameterNotRecognizedError(parameter.name.wireValue).message\n                        });\n                        continue;\n                    }\n                }\n\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n\n        return instances;\n    }\n\n    public associateByWireValue({\n        parameters,\n        values,\n        ignoreMissingParameters\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n        ignoreMissingParameters?: boolean;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    if (ignoreMissingParameters) {\n                        // Required for request payloads that include more information than\n                        // just the target parameters (e.g. union base properties).\n                        continue;\n                    }\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: this.newParameterNotRecognizedError(key).message\n                    });\n                    continue;\n                }\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    /**\n     * Similar to `associateByWireValue` but it builds TypeInstance objects by iterating over schema parameters rather\n     * than snippet values. Skips non-nullable parameters that are missing from the snippet object.\n     */\n    public getExampleObjectProperties({\n        parameters,\n        snippetObject\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        snippetObject: unknown;\n    }): TypeInstance[] {\n        const objectRecord = (\n            typeof snippetObject === \"object\" && snippetObject !== null && !Array.isArray(snippetObject)\n                ? snippetObject\n                : {}\n        ) as Record<string, unknown>;\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            const value = objectRecord[parameter.name.wireValue];\n            if (value == null) {\n                if (parameter.typeReference.type === \"nullable\") {\n                    instances.push({\n                        name: parameter.name,\n                        typeReference: parameter.typeReference,\n                        value: null\n                    });\n                }\n            } else {\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            }\n        }\n        return instances;\n    }\n\n    public getSingleFileValue({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): string | undefined {\n        const fileValue = record[property.wireValue];\n        if (fileValue == null) {\n            return undefined;\n        }\n        if (typeof fileValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file value to be a string, got ${typeof fileValue}`\n            });\n            return undefined;\n        }\n        return fileValue;\n    }\n\n    public getFileArrayValues({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): string[] | undefined {\n        const fileArrayValue = record[property.wireValue];\n        if (fileArrayValue == null) {\n            return undefined;\n        }\n        if (!Array.isArray(fileArrayValue)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file array value to be an array of strings, got ${typeof fileArrayValue}`\n            });\n            return undefined;\n        }\n        const stringValues: string[] = [];\n        for (const value of fileArrayValue) {\n            if (typeof value !== \"string\") {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message: `Expected file array value to be an array of strings, got ${typeof value}`\n                });\n                return undefined;\n            }\n            stringValues.push(value);\n        }\n        return stringValues;\n    }\n\n    public getRecord(value: unknown): Record<string, unknown> | undefined {\n        if (typeof value !== \"object\" || Array.isArray(value)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object with key, value pairs but got: ${\n                    Array.isArray(value) ? \"array\" : typeof value\n                }`\n            });\n            return undefined;\n        }\n        if (value == null) {\n            return {};\n        }\n        return value as Record<string, unknown>;\n    }\n\n    public resolveNamedType({ typeId }: { typeId: FernIr.dynamic.TypeId }): FernIr.dynamic.NamedType | undefined {\n        const namedType = this._ir.types[typeId];\n        if (namedType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Type identified by \"${typeId}\" could not be found`\n            });\n            return undefined;\n        }\n        return namedType;\n    }\n\n    public resolveDiscriminatedUnionTypeInstance({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): DiscriminatedUnionTypeInstance | undefined {\n        const record = this.getRecord(value);\n        if (record == null) {\n            return undefined;\n        }\n\n        const discriminantFieldName = discriminatedUnion.discriminant.wireValue;\n        const discriminantValue = record[discriminantFieldName];\n        if (discriminantValue == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newParameterNotRecognizedError(discriminantFieldName).message\n            });\n            return undefined;\n        }\n        if (typeof discriminantValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected discriminant value to be a string but got: ${typeof discriminantValue}`\n            });\n            return undefined;\n        }\n\n        const singleDiscriminatedUnionType = discriminatedUnion.types[discriminantValue];\n        if (singleDiscriminatedUnionType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `No type found for discriminant value \"${discriminantValue}\"`\n            });\n            return undefined;\n        }\n\n        // Remove the discriminant from the record so that the value is valid for the type.\n        const { [discriminantFieldName]: _, ...filtered } = record;\n\n        return {\n            singleDiscriminatedUnionType,\n            discriminantValue: singleDiscriminatedUnionType.discriminantValue,\n            value: filtered\n        };\n    }\n\n    public resolveEndpointOrThrow(rawEndpoint: string): FernIr.dynamic.Endpoint[] {\n        const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(rawEndpoint);\n        if (parsedEndpoint == null) {\n            throw new Error(`Failed to parse endpoint reference \"${rawEndpoint}\"`);\n        }\n        return this.resolveEndpointLocationOrThrow(parsedEndpoint);\n    }\n\n    public resolveEndpointLocation(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints: FernIr.dynamic.Endpoint[] = [];\n        for (const endpoint of Object.values(this._ir.endpoints)) {\n            if (this.parsedEndpointMatches({ endpoint, parsedEndpoint: location })) {\n                endpoints.push(endpoint);\n            }\n        }\n\n        return endpoints;\n    }\n\n    public resolveEndpointLocationOrThrow(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints = this.resolveEndpointLocation(location);\n        if (endpoints.length === 0) {\n            throw new Error(`Failed to find endpoint identified by \"${location.method} ${location.path}\"`);\n        }\n        return endpoints;\n    }\n\n    public resolveEndpointById(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint | undefined {\n        return this._ir.endpoints[endpointId];\n    }\n\n    public resolveEndpointByIdOrThrow(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint {\n        const endpoint = this.resolveEndpointById(endpointId);\n        if (endpoint == null) {\n            throw new Error(`Failed to find endpoint with ID \"${endpointId}\"`);\n        }\n        return endpoint;\n    }\n\n    public needsRequestParameter({\n        request,\n        inlinePathParameters,\n        inlineFileProperties\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n        inlineFileProperties: boolean;\n    }): boolean {\n        if (this.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n            return true;\n        }\n        if (request.queryParameters != null && request.queryParameters.length > 0) {\n            return true;\n        }\n        if (request.headers != null && request.headers.length > 0) {\n            return true;\n        }\n        if (request.body != null) {\n            return this.includeRequestBodyInWrappedRequest({ body: request.body, inlineFileProperties });\n        }\n        if (request.metadata?.onlyPathParameters) {\n            return false;\n        }\n        return true;\n    }\n\n    public includePathParametersInWrappedRequest({\n        request,\n        inlinePathParameters\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n    }): boolean {\n        return inlinePathParameters && (request.metadata?.includePathParameters ?? false);\n    }\n\n    public isFileUploadRequestBody(\n        body: FernIr.dynamic.InlinedRequestBody\n    ): body is FernIr.dynamic.InlinedRequestBody.FileUpload {\n        switch (body.type) {\n            case \"fileUpload\":\n                return true;\n            case \"properties\":\n            case \"referenced\":\n                return false;\n            default:\n                assertNever(body);\n        }\n    }\n\n    public resolveEnvironmentName(environmentID: string): FernIr.Name | undefined {\n        if (this._ir.environments == null) {\n            return undefined;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            case \"multipleBaseUrls\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            default:\n                assertNever(environments);\n        }\n    }\n\n    public isSingleEnvironmentID(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.EnvironmentId {\n        return typeof environment === \"string\";\n    }\n\n    public isMultiEnvironmentValues(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n        return typeof environment === \"object\";\n    }\n\n    public validateMultiEnvironmentUrlValues(\n        multiEnvironmentUrlValues: FernIr.dynamic.MultipleEnvironmentUrlValues\n    ): boolean {\n        if (this._ir.environments == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message:\n                    \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n            });\n            return false;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message:\n                        \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n                });\n                return false;\n            }\n            case \"multipleBaseUrls\": {\n                const firstEnvironment = environments.environments[0];\n                if (firstEnvironment == null) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Multiple environments are not supported; use the baseUrl option instead\"\n                    });\n                    return false;\n                }\n                const expectedKeys = new Set(keys(firstEnvironment.urls));\n                for (const key of keys(multiEnvironmentUrlValues)) {\n                    if (expectedKeys.has(key)) {\n                        expectedKeys.delete(key);\n                    }\n                }\n                if (expectedKeys.size > 0) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: `The provided environments are invalid; got: [${Object.keys(multiEnvironmentUrlValues).join(\", \")}], expected: [${keys(firstEnvironment.urls).join(\", \")}]`\n                    });\n                    return false;\n                }\n                return true;\n            }\n        }\n    }\n\n    public getValueAsNumber({ value }: { value: unknown }): number | undefined {\n        if (typeof value !== \"number\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"number\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsBoolean({ value }: { value: unknown }): boolean | undefined {\n        if (typeof value !== \"boolean\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"boolean\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsString({ value }: { value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"string\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return this.isOptional(typeReference.value);\n            case \"optional\":\n                return true;\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public isNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return true;\n            case \"optional\":\n                return this.isNullable(typeReference.value);\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public newAuthMismatchError({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): Error {\n        return new Error(`Expected auth type ${auth.type}, got ${values.type}`);\n    }\n\n    public newParameterNotRecognizedError(parameterName: string): Error {\n        return new Error(`\"${parameterName}\" is not a recognized parameter for this endpoint`);\n    }\n\n    public newTypeMismatchError({ expected, value }: { expected: string; value: unknown }): Error {\n        return new Error(`Expected ${expected}, got ${typeof value}`);\n    }\n\n    private includeRequestBodyInWrappedRequest({\n        body,\n        inlineFileProperties\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        switch (body.type) {\n            case \"properties\":\n            case \"referenced\":\n                return true;\n            case \"fileUpload\":\n                return this.includeFileUploadBodyInWrappedRequest({ fileUpload: body, inlineFileProperties });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private includeFileUploadBodyInWrappedRequest({\n        fileUpload,\n        inlineFileProperties\n    }: {\n        fileUpload: FernIr.dynamic.FileUploadRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        return (\n            this.fileUploadHasBodyProperties({ fileUpload }) ||\n            (inlineFileProperties && this.fileUploadHasFileProperties({ fileUpload }))\n        );\n    }\n\n    private fileUploadHasBodyProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return false;\n                case \"bodyProperty\":\n                    return true;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private fileUploadHasFileProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return true;\n                case \"bodyProperty\":\n                    return false;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private isListTypeReference(typeReference: FernIr.dynamic.TypeReference): boolean {\n        if (typeReference.type === \"optional\") {\n            return this.isListTypeReference(typeReference.value);\n        }\n        return typeReference.type === \"list\" || typeReference.type === \"set\";\n    }\n\n    private parsedEndpointMatches({\n        endpoint,\n        parsedEndpoint\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        parsedEndpoint: { method: string; path: string; namespace?: string };\n    }): boolean {\n        return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n    }\n}\n","export { EXAMPLE_REFERENCE_PREFIX, YAML_SCHEMA_VERSION } from \"./constants.js\";\nexport { type NodePath, type NodePathItem } from \"./NodePath.js\";\nexport * as RawSchemas from \"./schemas/index.js\";\nexport { type DefinitionFileSchema, type PackageMarkerFileSchema, type RootApiFileSchema } from \"./schemas/index.js\";\nexport * from \"./utils/auth/index.js\";\nexport * from \"./utils/generics/index.js\";\nexport { getRequestBody } from \"./utils/getRequestBody.js\";\nexport { getResponseBodyType } from \"./utils/getResponseBodyType.js\";\nexport { HttpEndpointReferenceParser } from \"./utils/HttpEndpointReferenceParser.js\";\nexport { isInlineRequestBody } from \"./utils/isInlineRequestBody.js\";\nexport { isOpenApiSourceSchema } from \"./utils/isOpenApiSourceSchema.js\";\nexport { isRawProtobufSourceSchema } from \"./utils/isRawProtobufSourceSchema.js\";\nexport { isRawTextType } from \"./utils/isRawTextType.js\";\nexport { type BytesRequest, parseBytesRequest } from \"./utils/parseBytesRequest.js\";\nexport { parseFileUploadRequest, type RawFileUploadRequest } from \"./utils/parseFileUploadRequest.js\";\nexport { parseRawBytesType, type RawBytesType } from \"./utils/parseRawBytesType.js\";\nexport { parseRawFileType, type RawFileType } from \"./utils/parseRawFileType.js\";\nexport { parseRawTextType, type RawTextType } from \"./utils/parseRawTextType.js\";\nexport { RawPrimitiveType } from \"./utils/RawPrimitiveType.js\";\nexport { recursivelyVisitRawTypeReference } from \"./utils/recursivelyVisitRawTypeReference.js\";\nexport { visitExampleCodeSampleSchema } from \"./utils/visitExampleCodeSampleSchema.js\";\nexport { type ExampleResponseSchemaVisitor, visitExampleResponseSchema } from \"./utils/visitExampleResponseSchema.js\";\nexport {\n    isAnyAuthSchemes,\n    isSingleAuthScheme,\n    type RawApiAuthVisitor,\n    visitRawApiAuth\n} from \"./utils/visitRawApiAuth.js\";\nexport {\n    type AuthSchemeDeclarationVisitor,\n    isHeaderAuthScheme,\n    visitRawAuthSchemeDeclaration\n} from \"./utils/visitRawAuthSchemeDeclaration.js\";\nexport {\n    isRawMultipleBaseUrlsEnvironment,\n    isRawSingleBaseUrlEnvironment,\n    visitRawEnvironmentDeclaration\n} from \"./utils/visitRawEnvironmentDeclaration.js\";\nexport {\n    isVariablePathParameter,\n    type PathParameterDeclarationVisitor,\n    visitRawPathParameter\n} from \"./utils/visitRawPathParameter.js\";\nexport {\n    isRawAliasDefinition,\n    isRawDiscriminatedUnionDefinition,\n    isRawEnumDefinition,\n    isRawObjectDefinition,\n    isRawUndiscriminatedUnionDefinition,\n    type RawTypeDeclarationVisitor,\n    visitRawTypeDeclaration\n} from \"./utils/visitRawTypeDeclaration.js\";\nexport { FernContainerRegex, visitRawTypeReference } from \"./utils/visitRawTypeReference.js\";\n","export declare namespace HttpEndpointReferenceParser {\n    interface Parsed {\n        path: string;\n        method: Method;\n        namespace: string | undefined;\n    }\n\n    type Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\";\n\n    export type ValidationResult = Valid | Invalid;\n\n    interface Valid {\n        type: \"valid\";\n    }\n\n    interface Invalid {\n        type: \"invalid\";\n    }\n}\n\n/**\n * Parses an HTTP endpoint reference like `POST /users/get` or `namespace::POST /users/get`\n */\nexport class HttpEndpointReferenceParser {\n    //eslint-disable-next-line\n    private REFERENCE_REGEX = /^(?:(\\w+)::)?(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n\n    public validate(reference: string): HttpEndpointReferenceParser.ValidationResult {\n        const validFormat = this.REFERENCE_REGEX.test(reference);\n        if (!validFormat) {\n            return { type: \"invalid\" };\n        }\n        return { type: \"valid\" };\n    }\n\n    public tryParse(reference: string): HttpEndpointReferenceParser.Parsed | undefined {\n        const validationResponse = this.validate(reference);\n        if (validationResponse.type === \"invalid\") {\n            return undefined;\n        }\n        const match = reference.match(this.REFERENCE_REGEX);\n        if (match == null || match[2] == null || match[3] == null) {\n            return undefined;\n        }\n        return {\n            namespace: match[1], // undefined if no namespace prefix\n            method: match[2] as HttpEndpointReferenceParser.Method,\n            path: match[3]\n        };\n    }\n}\n","export const Severity = {\n    Critical: \"CRITICAL\",\n    Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n    type Path = readonly PathItem[];\n\n    type PathItem = string | ArrayPathItem;\n\n    type Severity = (typeof Severity)[keyof typeof Severity];\n\n    interface ArrayPathItem {\n        index: number;\n    }\n\n    interface Error {\n        path?: Path;\n        severity: Severity;\n        message: string;\n    }\n}\n\ninterface Error_ {\n    severity: \"CRITICAL\" | \"WARNING\";\n    path: string[] | undefined;\n    message: string;\n}\n\nexport class ErrorReporter {\n    private errors: ErrorReporter.Error[];\n    private path: ErrorReporter.PathItem[];\n\n    constructor() {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n        this.errors.push({\n            ...err,\n            path: [...this.path]\n        });\n    }\n\n    public scope(path: ErrorReporter.PathItem): void {\n        this.path.push(path);\n    }\n\n    public unscope(): void {\n        this.path.pop();\n    }\n\n    public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n        return this.errors.filter((err) => err.severity === severity);\n    }\n\n    public empty(): boolean {\n        return this.errors.length === 0;\n    }\n\n    public size(): number {\n        return this.errors.length;\n    }\n\n    public truncate(size: number): void {\n        this.errors.length = size;\n    }\n\n    public clone(): ErrorReporter {\n        const clone = new ErrorReporter();\n        clone.errors = [...this.errors];\n        clone.path = [...this.path];\n        return clone;\n    }\n\n    public reset(): void {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public toDynamicSnippetErrors(): Error_[] {\n        return this.errors.map((err) => ({\n            severity: err.severity,\n            path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n            message: err.message\n        }));\n    }\n\n    private pathToStringArray(path: ErrorReporter.Path): string[] {\n        const result: string[] = [];\n        for (const item of path) {\n            if (typeof item === \"string\") {\n                result.push(item);\n                continue;\n            }\n            result[result.length - 1] += `[${item.index}]`;\n        }\n        return result;\n    }\n}\n","import {\n    AbstractDynamicSnippetsGeneratorContext,\n    FernGeneratorExec\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { BaseRubyCustomConfigSchema, ruby } from \"@fern-api/ruby-ast\";\nimport { upperFirst } from \"lodash-es\";\n\nimport { DynamicTypeLiteralMapper } from \"./DynamicToLiteralMapper.js\";\n\nexport class DynamicSnippetsGeneratorContext extends AbstractDynamicSnippetsGeneratorContext {\n    public ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    public customConfig: BaseRubyCustomConfigSchema | undefined;\n    public dynamicTypeLiteralMapper: DynamicTypeLiteralMapper;\n\n    constructor({\n        ir,\n        config\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n    }) {\n        super({ ir, config });\n        this.ir = ir;\n        this.customConfig =\n            config.customConfig != null ? (config.customConfig as BaseRubyCustomConfigSchema) : undefined;\n        this.dynamicTypeLiteralMapper = new DynamicTypeLiteralMapper({ context: this });\n    }\n\n    public clone(): DynamicSnippetsGeneratorContext {\n        return new DynamicSnippetsGeneratorContext({\n            ir: this.ir,\n            config: this.config\n        });\n    }\n\n    public getRootClientClassReference(): ruby.ClassReference {\n        return ruby.classReference({\n            name: this.getRootClientClassName(),\n            modules: [this.getRootModuleName()]\n        });\n    }\n\n    public getRootClientClassName(): string {\n        return this.customConfig?.clientModuleName ?? \"Client\";\n    }\n\n    public getRootModuleName(): string {\n        // Use moduleName config first, then organization\n        // This aligns with AbstractRubyGeneratorContext.getRootModuleName()\n        return upperFirst(this.customConfig?.moduleName ?? this.config.organization);\n    }\n\n    public isSingleEnvironmentID(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.EnvironmentId {\n        return typeof environment === \"string\";\n    }\n\n    public isMultiEnvironmentValues(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n        return typeof environment === \"object\";\n    }\n\n    public getEnvironmentTypeReferenceFromID(environmentID: string): ruby.AstNode | undefined {\n        const environmentName = this.resolveEnvironmentName(environmentID);\n        if (environmentName == null) {\n            return undefined;\n        }\n        return ruby.codeblock((writer) => {\n            writer.writeNode(this.getEnvironmentClassReference());\n            writer.write(\"::\");\n            writer.write(this.getEnumName(environmentName));\n        });\n    }\n\n    public getEnvironmentClassReference(): ruby.AstNode {\n        return ruby.classReference({\n            name: \"Environment\",\n            modules: [this.getRootModuleName()]\n        });\n    }\n\n    public getEnumName(name: FernIr.Name): string {\n        return this.getName(name.screamingSnakeCase.safeName);\n    }\n\n    public getMethodName(name: FernIr.Name): string {\n        return this.getName(name.snakeCase.safeName);\n    }\n\n    public getPropertyName(name: FernIr.Name): string {\n        return this.getName(name.snakeCase.safeName);\n    }\n\n    private getName(name: string): string {\n        return name;\n    }\n}\n","export { ClassReference } from \"./ast/ClassReference.js\";\nexport { RubyFile } from \"./ast/core/RubyFile.js\";\nexport { BaseRubyCustomConfigSchema } from \"./custom-config/BaseRubyCustomConfigSchema.js\";\nexport * as ruby from \"./ruby.js\";\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace ClassReference {\n    interface Args {\n        /** The name of the Ruby class (e.g., \"Client\") */\n        name: string;\n        /** The module path as an array of strings (e.g., [\"MyApi\", \"V1\"]) */\n        modules?: string[];\n        /** Force the class reference to be fully qualified (with modules) */\n        fullyQualified?: boolean;\n    }\n}\n\nexport class ClassReference extends AstNode {\n    public readonly name: string;\n    public readonly modules: string[];\n    public readonly fullyQualified: boolean;\n\n    constructor({ name, modules, fullyQualified }: ClassReference.Args) {\n        super();\n        this.name = name;\n        this.modules = modules ?? [];\n        this.fullyQualified = fullyQualified ?? false;\n    }\n\n    public write(writer: Writer): void {\n        // If fullyQualified or modules are present, write the full module path\n        if (this.fullyQualified || this.modules.length > 0) {\n            const fullPath = [...this.modules, this.name].join(\"::\");\n            writer.write(fullPath);\n            return;\n        }\n        writer.write(this.name);\n    }\n}\n","import { AbstractAstNode, AbstractFormatter, AbstractWriter } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { BaseRubyCustomConfigSchema } from \"../../custom-config/BaseRubyCustomConfigSchema.js\";\nimport { RubyFile } from \"./RubyFile.js\";\n\nexport abstract class AstNode extends AbstractAstNode {\n    /**\n     * Writes the node to a string.\n     */\n    public async toStringAsync({\n        customConfig,\n        formatter\n    }: {\n        customConfig?: BaseRubyCustomConfigSchema;\n        formatter?: AbstractFormatter;\n    } = {}): Promise<string> {\n        const file = new RubyFile({\n            customConfig: customConfig ?? {},\n            formatter\n        });\n        this.write(file);\n        return file.toStringAsync();\n    }\n\n    /**\n     * Writes the node to a string.\n     */\n    public toString({\n        customConfig,\n        formatter\n    }: {\n        customConfig?: BaseRubyCustomConfigSchema;\n        formatter?: AbstractFormatter;\n    } = {}): string {\n        const file = new RubyFile({\n            customConfig: customConfig ?? {},\n            formatter\n        });\n        this.write(file);\n        return file.toString();\n    }\n\n    /**\n     * Writes the node's type definition to a string.\n     */\n    public typeDefinitionToString({\n        customConfig,\n        formatter\n    }: {\n        customConfig?: BaseRubyCustomConfigSchema;\n        formatter?: AbstractFormatter;\n    } = {}): string {\n        const file = new RubyFile({\n            customConfig: customConfig ?? {},\n            formatter\n        });\n        this.writeTypeDefinition(file);\n        return file.toString();\n    }\n\n    /**\n     * Writes type definition. No-op by default, but will be overridden by implementing classes.\n     */\n    public writeTypeDefinition(writer: AbstractWriter): void {\n        return;\n    }\n}\n","import { Writer } from \"./Writer.js\";\n\nexport declare namespace RubyFile {\n    interface Args extends Writer.Args {}\n}\n\nexport class RubyFile extends Writer {\n    constructor({ customConfig, formatter }: RubyFile.Args) {\n        super({ customConfig, formatter });\n    }\n\n    public async toStringAsync(): Promise<string> {\n        const content = this.getContent();\n        if (this.formatter != null) {\n            try {\n                return this.formatter.format(content);\n            } catch (error) {\n                throw new Error(`Failed to format Ruby file: ${error}\\n${content}`);\n            }\n        }\n        return content;\n    }\n\n    public toString(): string {\n        const content = this.getContent();\n        if (this.formatter != null) {\n            try {\n                return this.formatter.formatSync(content);\n            } catch (error) {\n                throw new Error(`Failed to format Ruby file: ${error}\\n${content}`);\n            }\n        }\n        return content;\n    }\n\n    private getContent(): string {\n        const requires = this.stringifyRequires();\n        return requires.length > 0\n            ? `${requires}\n\n${this.buffer}`\n            : this.buffer;\n    }\n\n    private stringifyRequires(): string {\n        return Array.from(this.requires)\n            .map((requirePath) => `require \"${requirePath}\"`)\n            .join(\"\\n\");\n    }\n}\n","import {\n    AbstractAstNode,\n    AbstractFormatter,\n    AbstractWriter,\n    NopFormatter\n} from \"@fern-api/browser-compatible-base-generator\";\n\nimport { BaseRubyCustomConfigSchema } from \"../../custom-config/BaseRubyCustomConfigSchema.js\";\n\ntype RequirePath = string;\nconst TAB_SIZE = 2;\n\nexport declare namespace Writer {\n    interface Args {\n        /* Custom generator config */\n        customConfig: BaseRubyCustomConfigSchema;\n        /* Formatter used to format Ruby source files */\n        formatter?: AbstractFormatter;\n    }\n}\n\nexport class Writer extends AbstractWriter {\n    /* The package name that is being written to */\n    public customConfig: BaseRubyCustomConfigSchema;\n    /* Formatter used to format Ruby source files */\n    public formatter: AbstractFormatter;\n\n    /* Require statements */\n    protected requires: Set<RequirePath> = new Set();\n\n    /* Track indentation level for line wrapping calculations */\n    private _indentLevel = 0;\n\n    constructor({ customConfig, formatter }: Writer.Args) {\n        super();\n        this.customConfig = customConfig;\n        this.formatter = formatter ?? new NopFormatter();\n    }\n\n    /**\n     * Adds the given require path to the rolling set.\n     */\n    public addRequire(requirePath: RequirePath): void {\n        this.requires.add(requirePath);\n    }\n\n    /**\n     * Gets the current indentation level.\n     */\n    public get currentIndentLevel(): number {\n        return this._indentLevel;\n    }\n\n    public override indent(): void {\n        this._indentLevel++;\n        super.indent();\n    }\n\n    public override dedent(): void {\n        this._indentLevel--;\n        super.dedent();\n    }\n\n    /**\n     * Override to omit the trailing semicolon. Ruby does not use semicolons\n     * as statement terminators.\n     */\n    public override writeNodeStatement(node: AbstractAstNode): void {\n        this.writeNode(node);\n        this.writeNewLineIfLastLineNot();\n    }\n\n    // override abstract method\n    protected getTabSize(): number {\n        return TAB_SIZE;\n    }\n}\n","import { Begin } from \"./ast/Begin.js\";\nimport { IfElse } from \"./ast/IfElse.js\";\nimport {\n    AstNode,\n    Class_,\n    ClassInstantiation,\n    ClassReference,\n    CodeBlock,\n    Comment,\n    KeywordArgument,\n    KeywordParameter,\n    KeywordSplatParameter,\n    Method,\n    MethodInvocation,\n    Module_,\n    PositionalArgument,\n    PositionalParameter,\n    PositionalSplatParameter,\n    TypeParameter,\n    YieldParameter\n} from \"./ast/index.js\";\nimport { Raise } from \"./ast/Raise.js\";\n\nexport { AstNode } from \"./ast/core/AstNode.js\";\nexport {\n    Class_,\n    ClassInstantiation,\n    ClassReference,\n    CodeBlock,\n    KeywordArgument,\n    KeywordParameter,\n    Method,\n    MethodInvocation,\n    MethodKind,\n    Module_,\n    Parameter,\n    Type,\n    TypeLiteral,\n    TypeParameter,\n    Writer\n} from \"./ast/index.js\";\nexport type { HashEntry } from \"./ast/TypeLiteral.js\";\n\nexport function codeblock(arg: CodeBlock.Arg): CodeBlock {\n    return new CodeBlock(arg);\n}\n\nexport function trueValue(): CodeBlock {\n    return codeblock(\"true\");\n}\n\nexport function falseValue(): CodeBlock {\n    return codeblock(\"false\");\n}\n\nexport function nilValue(): CodeBlock {\n    return codeblock(\"nil\");\n}\n\nexport const parameters = {\n    positional(args: PositionalParameter.Args): PositionalParameter {\n        return new PositionalParameter(args);\n    },\n\n    keyword(args: KeywordParameter.Args): KeywordParameter {\n        return new KeywordParameter(args);\n    },\n\n    positionalSplat(args: PositionalSplatParameter.Args): PositionalSplatParameter {\n        return new PositionalSplatParameter(args);\n    },\n\n    keywordSplat(args: KeywordSplatParameter.Args): KeywordSplatParameter {\n        return new KeywordSplatParameter(args);\n    },\n\n    yield(args: YieldParameter.Args): YieldParameter {\n        return new YieldParameter(args);\n    }\n} as const;\n\nexport function class_(args: Class_.Args): Class_ {\n    return new Class_(args);\n}\n\nexport function module(args: Module_.Args): Module_ {\n    return new Module_(args);\n}\n\nexport function method(args: Method.Args): Method {\n    return new Method(args);\n}\n\nexport function comment(args: Comment.Args): Comment {\n    return new Comment(args);\n}\n\nexport function typeParameter(args: TypeParameter.Args): TypeParameter {\n    return new TypeParameter(args);\n}\n\nexport function classReference(args: ClassReference.Args): ClassReference {\n    return new ClassReference(args);\n}\n\nexport function instantiateClass(args: ClassInstantiation.Args): ClassInstantiation {\n    return new ClassInstantiation(args);\n}\n\nexport function keywordArgument(args: KeywordArgument.Args): KeywordArgument {\n    return new KeywordArgument(args);\n}\n\nexport function invokeMethod(args: MethodInvocation.Args): MethodInvocation {\n    return new MethodInvocation(args);\n}\n\nexport function positionalArgument(args: PositionalArgument.Args): PositionalArgument {\n    return new PositionalArgument(args);\n}\n\nexport function ifElse(args: IfElse.Args): IfElse {\n    return new IfElse(args);\n}\n\nexport function begin(args: Begin.Args): Begin {\n    return new Begin(args);\n}\n\nexport function raise(args: Raise.Args): Raise {\n    return new Raise(args);\n}\n\nexport function wrapInModules(node: AstNode, modules: Module_[]): AstNode {\n    let topLevelNode: AstNode = node;\n    for (const module of modules.toReversed()) {\n        module.addStatement(topLevelNode);\n        topLevelNode = module;\n    }\n    return topLevelNode;\n}\n","import { ClassReference } from \"./ClassReference.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\n/**\n * Represents a `begin` block with 0-N `rescue` clauses in the AST. `begin` blocks in Ruby also\n * support optional `else` and `ensure` clauses as well, but support for those is unimplemented.\n */\nexport declare namespace Begin {\n    export type Rescue = {\n        errorClass?: ClassReference;\n        errorVariable?: string;\n        body?: AstNode;\n    };\n\n    interface Args {\n        /** The main body of the `begin` */\n        body?: AstNode;\n        /** The rescue clauses */\n        rescues: Begin.Rescue[];\n    }\n}\n\nexport class Begin extends AstNode {\n    public readonly body?: AstNode;\n    public readonly rescues: Begin.Rescue[];\n\n    constructor({ body, rescues }: Begin.Args) {\n        super();\n        this.body = body;\n        this.rescues = rescues;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(\"begin\");\n        writer.writeLine();\n\n        if (this.body) {\n            writer.indent();\n            this.body.write(writer);\n            writer.writeNewLineIfLastLineNot();\n            writer.dedent();\n        }\n\n        for (const { errorClass, errorVariable, body } of this.rescues) {\n            writer.write(\"rescue\");\n\n            if (errorClass) {\n                writer.write(\" \");\n                errorClass.write(writer);\n            }\n\n            if (errorVariable) {\n                writer.write(\" => \");\n                writer.write(errorVariable);\n            }\n\n            writer.writeLine();\n            if (body) {\n                writer.indent();\n\n                body.write(writer);\n\n                writer.writeNewLineIfLastLineNot();\n                writer.dedent();\n            }\n        }\n\n        writer.write(\"end\");\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\n/**\n * Represents an if-else statement in the AST.\n */\nexport declare namespace IfElse {\n    export type If = {\n        condition: AstNode;\n        thenBody: AstNode[];\n    };\n\n    interface Args {\n        /** The primary if clause */\n        if: IfElse.If;\n        /** Optional else-if clauses */\n        elseIf?: IfElse.If[];\n        /** The body to execute if all conditions are false (optional) */\n        elseBody?: AstNode;\n    }\n}\n\nexport class IfElse extends AstNode {\n    public readonly ifBranch: IfElse.If;\n    public readonly elseIfs: IfElse.If[];\n    public readonly elseBody: AstNode[] | undefined;\n\n    constructor({ if: ifBranch, elseIf, elseBody }: IfElse.Args) {\n        super();\n        this.ifBranch = ifBranch;\n        this.elseIfs = elseIf ?? [];\n        this.elseBody = elseBody ? (Array.isArray(elseBody) ? elseBody : [elseBody]) : undefined;\n    }\n\n    public write(writer: Writer): void {\n        // Write the primary if branch\n        writer.write(\"if \");\n        this.ifBranch.condition.write(writer);\n        writer.writeLine();\n        writer.indent();\n        for (const stmt of this.ifBranch.thenBody) {\n            stmt.write(writer);\n            writer.writeNewLineIfLastLineNot();\n        }\n        writer.dedent();\n\n        // Write else-if branches if any\n        for (const elseIf of this.elseIfs) {\n            writer.write(\"elsif \");\n            elseIf.condition.write(writer);\n            writer.writeLine();\n            writer.indent();\n            for (const stmt of elseIf.thenBody) {\n                stmt.write(writer);\n                writer.writeNewLineIfLastLineNot();\n            }\n            writer.dedent();\n        }\n\n        // Write else body if present\n        if (this.elseBody && this.elseBody.length > 0) {\n            writer.writeLine(\"else\");\n            writer.indent();\n            for (const stmt of this.elseBody) {\n                stmt.write(writer);\n                writer.writeNewLineIfLastLineNot();\n            }\n            writer.dedent();\n        }\n        writer.write(\"end\");\n        writer.writeNewLineIfLastLineNot();\n    }\n}\n","export { Class_ } from \"./Class.js\";\nexport { ClassInstantiation } from \"./ClassInstantiation.js\";\nexport { ClassReference } from \"./ClassReference.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Comment } from \"./Comment.js\";\nexport { AstNode } from \"./core/AstNode.js\";\nexport { Writer } from \"./core/Writer.js\";\nexport { KeywordArgument } from \"./KeywordArgument.js\";\nexport { KeywordParameter } from \"./KeywordParameter.js\";\nexport { KeywordSplatParameter } from \"./KeywordSplatParameter.js\";\nexport { Method, MethodKind } from \"./Method.js\";\nexport { MethodInvocation } from \"./MethodInvocation.js\";\nexport { Module_ } from \"./Module.js\";\nexport { Parameter } from \"./Parameter.js\";\nexport { PositionalArgument } from \"./PositionalArgument.js\";\nexport { PositionalParameter } from \"./PositionalParameter.js\";\nexport { PositionalSplatParameter } from \"./PositionalSplatParameter.js\";\nexport { Type } from \"./Type.js\";\nexport { TypeLiteral } from \"./TypeLiteral.js\";\nexport { TypeParameter } from \"./TypeParameter.js\";\nexport { YieldParameter } from \"./YieldParameter.js\";\n","import { ClassReference } from \"./ClassReference.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Method, MethodKind } from \"./Method.js\";\nimport { Module_ } from \"./Module.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Class_ {\n    export interface Args extends Module_.Args {\n        /* The superclass of this class. */\n        superclass?: ClassReference;\n    }\n}\n\nexport class Class_ extends Module_ {\n    public readonly superclass: ClassReference | undefined;\n    public readonly statements: AstNode[];\n    public readonly methods: Method[] = [];\n\n    constructor({ name, superclass, typeParameters, docstring, statements }: Class_.Args) {\n        super({ name, docstring, typeParameters });\n\n        this.superclass = superclass;\n        this.statements = statements ?? [];\n    }\n\n    public addStatement(statement: AstNode): void {\n        this.statements.push(statement);\n    }\n\n    public addStatements(statements: AstNode[]): void {\n        this.statements.push(...statements);\n    }\n\n    public addInstanceMethod(name: string, returnType: Type, statements: AstNode[]): void {\n        const method = new Method({\n            name,\n            kind: MethodKind.Instance,\n            returnType,\n            statements\n        });\n        this.addMethod(method);\n    }\n\n    public addMethod(method: Method): void {\n        this.methods.push(method);\n    }\n\n    public addMethods(methods: Method[]): void {\n        methods.forEach((method) => this.addMethod(method));\n    }\n\n    public write(writer: Writer): void {\n        if (this.docstring) {\n            new Comment({ docs: this.docstring }).write(writer);\n        }\n\n        writer.write(`class ${this.name}`);\n\n        if (this.superclass) {\n            writer.write(\" < \");\n            this.superclass.write(writer);\n        }\n\n        if (!this.hasBody()) {\n            writer.writeLine(\"; end\");\n            return;\n        }\n\n        if (this.statements.length) {\n            writer.newLine();\n            writer.indent();\n\n            this.statements.forEach((statement, index) => {\n                statement.write(writer);\n                writer.newLine();\n            });\n\n            writer.dedent();\n        }\n\n        if (this.methods.length) {\n            writer.newLine();\n            writer.indent();\n            this.methods.forEach((method) => {\n                method.write(writer);\n            });\n            writer.dedent();\n        }\n\n        writer.writeLine(\"end\");\n    }\n\n    private hasBody(): boolean {\n        return this.statements.length > 0 || this.methods.length > 0;\n    }\n\n    public writeTypeDefinition(writer: Writer): void {\n        writer.write(`class ${this.name}`);\n\n        if (this.typeParameters.length) {\n            writer.write(\"[\");\n\n            writer.delimit({\n                nodes: this.typeParameters,\n                delimiter: \", \",\n                writeFunction: (argument) => argument.writeTypeDefinition(writer)\n            });\n\n            writer.write(\"]\");\n        }\n\n        if (this.superclass) {\n            writer.write(\" < \");\n            this.superclass.write(writer);\n        }\n\n        writer.newLine();\n\n        if (this.statements.length) {\n            writer.indent();\n            this.statements.forEach((statement) => {\n                statement.writeTypeDefinition(writer);\n                writer.newLine();\n            });\n            writer.dedent();\n        }\n\n        writer.write(\"end\");\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\n// RuboCop default line length limit\nconst MAX_LINE_LENGTH = 120;\n// Comment prefix \"# \" is 2 characters\nconst COMMENT_PREFIX_LENGTH = 2;\n\nexport declare namespace Comment {\n    interface Args {\n        docs?: string;\n    }\n}\n\nexport class Comment extends AstNode {\n    public readonly docs: string | undefined;\n\n    constructor({ docs }: Comment.Args) {\n        super();\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.split(\"\\n\").forEach((line) => {\n                const wrappedLines = this.wrapLine(line, writer);\n                wrappedLines.forEach((wrappedLine) => {\n                    writer.writeLine(`# ${wrappedLine}`);\n                });\n            });\n        }\n    }\n\n    /**\n     * Wraps a single line of text to fit within the RuboCop line length limit.\n     * Takes into account the current indentation level and the \"# \" prefix.\n     */\n    private wrapLine(line: string, writer: Writer): string[] {\n        // Calculate available width: max length - indentation - \"# \" prefix\n        const indentWidth = writer.currentIndentLevel * 2; // Ruby uses 2-space indentation\n        const availableWidth = MAX_LINE_LENGTH - indentWidth - COMMENT_PREFIX_LENGTH;\n\n        // If the line fits, return it as-is\n        if (line.length <= availableWidth) {\n            return [line];\n        }\n\n        // If available width is too small, just return the line as-is to avoid infinite loops\n        if (availableWidth < 20) {\n            return [line];\n        }\n\n        const words = line.split(/(\\s+)/); // Split by whitespace, keeping the whitespace\n        const wrappedLines: string[] = [];\n        let currentLine = \"\";\n\n        for (const word of words) {\n            // Skip empty strings\n            if (word === \"\") {\n                continue;\n            }\n\n            // If this is just whitespace and we're at the start of a line, skip it\n            if (currentLine === \"\" && /^\\s+$/.test(word)) {\n                continue;\n            }\n\n            const potentialLine = currentLine + word;\n\n            if (potentialLine.length <= availableWidth) {\n                currentLine = potentialLine;\n            } else {\n                // If we have content, push it and start a new line\n                if (currentLine.trim() !== \"\") {\n                    wrappedLines.push(currentLine.trimEnd());\n                }\n                // Start new line with the current word (trimmed of leading whitespace)\n                currentLine = word.trimStart();\n\n                // If a single word is longer than available width, we need to include it anyway\n                // to avoid infinite loops (this handles URLs and other long strings)\n                if (currentLine.length > availableWidth) {\n                    wrappedLines.push(currentLine);\n                    currentLine = \"\";\n                }\n            }\n        }\n\n        // Don't forget the last line\n        if (currentLine.trim() !== \"\") {\n            wrappedLines.push(currentLine.trimEnd());\n        }\n\n        // If we ended up with no lines (edge case), return the original\n        if (wrappedLines.length === 0) {\n            return [line];\n        }\n\n        return wrappedLines;\n    }\n}\n","import { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { KeywordParameter } from \"./KeywordParameter.js\";\nimport { KeywordSplatParameter } from \"./KeywordSplatParameter.js\";\nimport { Parameter } from \"./Parameter.js\";\nimport { PositionalParameter } from \"./PositionalParameter.js\";\nimport { PositionalSplatParameter } from \"./PositionalSplatParameter.js\";\nimport { Type } from \"./Type.js\";\nimport { YieldParameter } from \"./YieldParameter.js\";\n\nexport type MethodKind = \"instance\" | \"class\";\nexport const MethodKind = { Instance: \"instance\", Class_: \"class\" } as const;\n\nexport type MethodVisibility = \"public\" | \"private\" | \"protected\";\nexport const MethodVisibility = { Public: \"public\", Private: \"private\", Protected: \"protected\" } as const;\n\nexport declare namespace Method {\n    export interface ParameterArgs {\n        /* An array of this method's positional parameters. */\n        positional?: PositionalParameter[];\n        /* An array of this method's keyword parameters. */\n        keyword?: KeywordParameter[];\n        /* This method's positional splat parameter (`*name`). */\n        positionalSplat?: PositionalSplatParameter;\n        /* This method's keyword splat parameter (`**name`). */\n        keywordSplat?: KeywordSplatParameter;\n        /* This method's yield parameter (`&name`). */\n        yield?: YieldParameter;\n    }\n\n    export interface Args {\n        /* The name of the parameter. */\n        name: string;\n        /* The docstring for the method. */\n        docstring?: string;\n        /* Kind of method (instance or class). */\n        kind?: MethodKind;\n        /* Visibility of the method (public, private, or protected). */\n        visibility?: MethodVisibility;\n        /* The set of method parameters. */\n        parameters?: ParameterArgs;\n        /* The return type of the method. */\n        returnType?: Type;\n        /* The statements of the method. */\n        statements?: AstNode[];\n        /* YARD @option tags for the keyword splat parameter. */\n        splatOptionDocs?: string[];\n    }\n}\n\nexport class Method extends AstNode {\n    public readonly name: string;\n    public readonly docstring: string | undefined;\n    public readonly kind: MethodKind;\n    public readonly positionalParameters: PositionalParameter[];\n    public readonly keywordParameters: KeywordParameter[];\n    public readonly positionalSplatParameter: PositionalSplatParameter | undefined;\n    public readonly keywordSplatParameter: KeywordSplatParameter | undefined;\n    public readonly yieldParameter: YieldParameter | undefined;\n    private readonly visibility: MethodVisibility;\n    private readonly statements: AstNode[];\n    public readonly returnType: Type;\n    private readonly splatOptionDocs: string[];\n\n    constructor({\n        name,\n        docstring,\n        kind,\n        visibility,\n        parameters,\n        returnType,\n        statements,\n        splatOptionDocs\n    }: Method.Args) {\n        super();\n\n        this.name = name;\n        this.docstring = docstring;\n        this.kind = kind ?? MethodKind.Instance;\n        this.visibility = visibility ?? MethodVisibility.Public;\n        this.positionalParameters = parameters?.positional ?? [];\n        this.keywordParameters = parameters?.keyword ?? [];\n        this.positionalSplatParameter = parameters?.positionalSplat;\n        this.keywordSplatParameter = parameters?.keywordSplat;\n        this.yieldParameter = parameters?.yield;\n        this.returnType = returnType ?? Type.untyped();\n        this.statements = statements ?? [];\n        this.splatOptionDocs = splatOptionDocs ?? [];\n    }\n\n    public addStatement(statement: AstNode): void {\n        this.statements.push(statement);\n    }\n\n    public write(writer: Writer): void {\n        if (this.docstring) {\n            new Comment({ docs: this.docstring }).write(writer);\n        }\n\n        const hasAnyParameters =\n            this.positionalParameters.length > 0 ||\n            this.keywordParameters.length > 0 ||\n            this.keywordSplatParameter != null;\n\n        if (this.docstring && hasAnyParameters) {\n            writer.writeLine(\"#\");\n        }\n\n        for (const positionalParameter of this.positionalParameters) {\n            writer.write(`# @option ${positionalParameter.name} [`);\n            const typeWriter = new Writer({ customConfig: writer.customConfig });\n            positionalParameter.type.writeTypeDefinition(typeWriter);\n            writer.write(this.normalizeForYard(typeWriter.toString()));\n            writer.write(\"]\");\n            writer.newLine();\n        }\n\n        for (const keywordParameter of this.keywordParameters) {\n            writer.write(`# @param ${keywordParameter.name} [`);\n            const typeWriter = new Writer({ customConfig: writer.customConfig });\n            keywordParameter.type.writeTypeDefinition(typeWriter);\n            writer.write(this.normalizeForYard(typeWriter.toString()));\n            writer.write(\"]\");\n            if (keywordParameter.docs) {\n                writer.write(` ${keywordParameter.docs}`);\n            }\n            writer.newLine();\n        }\n\n        if (this.keywordSplatParameter != null) {\n            writer.write(`# @param ${this.keywordSplatParameter.name} [`);\n            const typeWriter = new Writer({ customConfig: writer.customConfig });\n            this.keywordSplatParameter.type.writeTypeDefinition(typeWriter);\n            writer.write(this.normalizeForYard(typeWriter.toString()));\n            writer.write(\"]\");\n            if (this.keywordSplatParameter.docs) {\n                writer.write(` ${this.keywordSplatParameter.docs}`);\n            }\n            writer.newLine();\n        }\n\n        for (const optionDoc of this.splatOptionDocs) {\n            writer.writeLine(`# ${optionDoc}`);\n        }\n\n        if (this.returnType != null) {\n            if (hasAnyParameters || this.docstring) {\n                writer.writeLine(\"#\");\n            }\n            writer.write(`# @return [`);\n            const typeWriter = new Writer({ customConfig: writer.customConfig });\n            this.returnType.writeTypeDefinition(typeWriter);\n            writer.write(this.normalizeForYard(typeWriter.toString()));\n            writer.write(\"]\");\n            writer.newLine();\n        }\n\n        if (this.visibility !== MethodVisibility.Public) {\n            writer.write(this.visibility);\n\n            if (this.kind === MethodKind.Class_) {\n                writer.write(\"_class_method\");\n            }\n\n            writer.write(\" \");\n        }\n\n        switch (this.kind) {\n            case MethodKind.Instance:\n                writer.write(`def ${this.name}`);\n                break;\n\n            case MethodKind.Class_:\n                writer.write(`def self.${this.name}`);\n                break;\n        }\n\n        if (this.parameters.length) {\n            writer.write(\"(\");\n\n            writer.delimit({\n                nodes: this.parameters,\n                delimiter: \", \",\n                writeFunction: (argument) => argument.write(writer)\n            });\n\n            writer.write(\")\");\n        }\n\n        if (this.statements.length) {\n            writer.newLine();\n\n            writer.indent();\n            this.statements.forEach((statement, index) => {\n                statement.write(writer);\n                if (index < this.statements.length - 1) {\n                    writer.newLine();\n                }\n            });\n            writer.writeNewLineIfLastLineNot();\n\n            writer.dedent();\n\n            writer.write(\"end\");\n        } else {\n            writer.write(\"; end\");\n        }\n\n        writer.newLine();\n    }\n\n    public writeTypeDefinition(writer: Writer): void {\n        writer.write(`def ${this.name}: (`);\n\n        this.parameters.forEach((parameter, index) => {\n            parameter.writeTypeDefinition(writer);\n\n            if (index < this.parameters.length - 1) {\n                writer.write(\", \");\n            }\n        });\n\n        writer.write(\") -> \");\n\n        this.returnType.writeTypeDefinition(writer);\n    }\n\n    private normalizeForYard(typeString: string): string {\n        let normalized = typeString.replace(/\\s*\\|\\s*/g, \", \");\n        normalized = normalized.replace(/\\bbool\\b/g, \"Boolean\");\n        normalized = normalized.replace(/(^|,\\s*)nil(?:,\\s*nil)+(?=,|\\]|$)/g, \"$1nil\");\n        normalized = normalized.replace(/Hash\\[untyped,\\s*untyped\\]/g, \"Hash\");\n        return normalized;\n    }\n\n    /*\n    NOTE: This returns the parameters in the following order: positional, keyword, positional splat, keyword splat,\n    yield. In reality, you can mix and match _some_ of these, but by convention, parameters should be in this order.\n    */\n    get parameters(): Parameter[] {\n        return [\n            ...this.positionalParameters,\n            ...this.keywordParameters,\n            this.positionalSplatParameter,\n            this.keywordSplatParameter,\n            this.yieldParameter\n        ].flatMap((param) => {\n            return param !== undefined ? param : [];\n        });\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\n\nimport { ClassReference } from \"./ClassReference.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { TypeParameter } from \"./TypeParameter.js\";\n\ninterface Self {\n    type: \"self\";\n}\n\ninterface Class_ {\n    type: \"class\";\n    reference: ClassReference;\n}\n\ninterface Instance {\n    type: \"instance\";\n}\n\ninterface Boolean_ {\n    type: \"boolean\";\n}\n\ninterface Nil {\n    type: \"nil\";\n}\n\ninterface Top {\n    type: \"top\";\n}\n\ninterface Bot {\n    type: \"bot\";\n}\n\ninterface Void {\n    type: \"void\";\n}\n\ninterface Boolish {\n    type: \"boolish\";\n}\n\ninterface String_ {\n    type: \"string\";\n}\n\ninterface Integer {\n    type: \"integer\";\n}\n\ninterface Union {\n    type: \"union\";\n    elems: Type[];\n}\n\ninterface Intersection {\n    type: \"intersection\";\n    elems: Type[];\n}\n\ninterface Array_ {\n    type: \"array\";\n    elem: Type;\n}\n\ninterface Hash {\n    type: \"hash\";\n    keyType: Type;\n    valueType: Type;\n}\n\ninterface Object_ {\n    type: \"object\";\n    klass: string;\n}\n\ninterface Singleton {\n    type: \"singleton\";\n    klass: string;\n}\n\ninterface Tuple {\n    type: \"tuple\";\n    elems: Type[];\n}\n\ninterface Generic {\n    type: \"generic\";\n    baseKlass: string;\n    parameters: (Type | TypeParameter)[];\n}\n\nexport type BaseType = Self | Class_ | Instance | Boolean_ | Nil | Top | Bot | Void;\nexport type SingleType = Boolish | String_ | Integer | Union | Intersection | Singleton | Object_ | Generic;\nexport type CollectionType = Array_ | Hash | Tuple;\n\ntype InternalType = BaseType | SingleType | CollectionType;\n\n/**\n * Reference: https://github.com/ruby/rbs/blob/master/docs/syntax.md\n */\nexport class Type extends AstNode {\n    private constructor(public readonly internalType: InternalType | undefined) {\n        super();\n    }\n\n    public write(_writer: Writer): void {\n        if (!this.internalType) {\n            return;\n        }\n\n        switch (this.internalType?.type) {\n            case \"integer\":\n                _writer.write(\"Integer\");\n                return;\n            case \"string\":\n                _writer.write(\"String\");\n                return;\n            case \"class\":\n                _writer.writeNode(this.internalType.reference);\n                return;\n            case \"instance\":\n                break;\n            case \"boolean\":\n                _writer.write(\"Internal::Types::Boolean\");\n                return;\n            case \"nil\":\n                break;\n            case \"top\":\n                break;\n            case \"bot\":\n                break;\n            case \"void\":\n                break;\n            case \"boolish\":\n                break;\n            case \"union\":\n                if (this.internalType.elems.length === 2 && this.internalType.elems[1]?.internalType?.type === \"nil\") {\n                    const type = this.internalType.elems[0];\n                    if (type != null) {\n                        type.write(_writer);\n                    }\n                }\n                break;\n            case \"intersection\":\n                break;\n            case \"array\":\n                _writer.write(\"Internal::Types::Array[\");\n                this.internalType.elem.write(_writer);\n                _writer.write(\"]\");\n                return;\n            case \"hash\":\n                _writer.write(\"Internal::Types::Hash[\");\n                this.internalType.keyType.write(_writer);\n                _writer.write(\", \");\n                this.internalType.valueType.write(_writer);\n                _writer.write(\"]\");\n                return;\n            case \"object\":\n                _writer.write(\"Object\");\n                break;\n            case \"singleton\":\n                break;\n            case \"generic\":\n                break;\n            case \"self\":\n                break;\n            case \"tuple\":\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    public writeTypeDefinition(writer: Writer): void {\n        if (this.internalType) {\n            switch (this.internalType.type) {\n                case \"self\":\n                    writer.write(\"self\");\n                    break;\n                case \"class\":\n                    writer.write(this.internalType.reference.toString(writer));\n                    break;\n                case \"instance\":\n                    writer.write(\"instance\");\n                    break;\n                case \"boolean\":\n                    writer.write(\"bool\");\n                    break;\n                case \"nil\":\n                    writer.write(\"nil\");\n                    break;\n                case \"top\":\n                    writer.write(\"top\");\n                    break;\n                case \"bot\":\n                    writer.write(\"bot\");\n                    break;\n                case \"void\":\n                    writer.write(\"void\");\n                    break;\n                case \"boolish\":\n                    writer.write(\"boolish\");\n                    break;\n                case \"string\":\n                    writer.write(\"String\");\n                    break;\n                case \"integer\":\n                    writer.write(\"Integer\");\n                    break;\n                case \"union\":\n                    writer.delimit({\n                        nodes: this.internalType.elems,\n                        delimiter: \" | \",\n                        writeFunction: (argument) => argument.writeTypeDefinition(writer)\n                    });\n                    break;\n                case \"intersection\":\n                    writer.delimit({\n                        nodes: this.internalType.elems,\n                        delimiter: \" & \",\n                        writeFunction: (argument) => argument.writeTypeDefinition(writer)\n                    });\n                    break;\n                case \"array\":\n                    writer.write(\"Array[\");\n                    this.internalType.elem.writeTypeDefinition(writer);\n                    writer.write(\"]\");\n                    break;\n                case \"hash\":\n                    writer.write(\"Hash[\");\n                    this.internalType.keyType.writeTypeDefinition(writer);\n                    writer.write(\", \");\n                    this.internalType.valueType.writeTypeDefinition(writer);\n                    writer.write(\"]\");\n                    break;\n                case \"object\":\n                    writer.write(this.internalType.klass);\n                    break;\n                case \"singleton\":\n                    writer.write(\"singleton(\");\n                    writer.write(this.internalType.klass);\n                    writer.write(\")\");\n                    break;\n                case \"tuple\":\n                    writer.write(\"[\");\n                    writer.delimit({\n                        nodes: this.internalType.elems,\n                        delimiter: \", \",\n                        writeFunction: (argument) => argument.write(writer)\n                    });\n                    writer.write(\"]\");\n                    break;\n                case \"generic\":\n                    writer.write(`${this.internalType.baseKlass}[`);\n                    writer.delimit({\n                        nodes: this.internalType.parameters,\n                        delimiter: \", \",\n                        writeFunction: (argument) => argument.writeTypeDefinition(writer)\n                    });\n                    writer.write(\"]\");\n                    break;\n                default:\n                    assertNever(this.internalType);\n            }\n        } else {\n            writer.write(\"untyped\");\n        }\n    }\n\n    public static untyped(): Type {\n        return new this(undefined);\n    }\n\n    public static self(): Type {\n        return new this({\n            type: \"self\"\n        });\n    }\n\n    public static class_(args: { name: string; modules?: string[] }): Type {\n        return new this({\n            type: \"class\",\n            reference: new ClassReference({\n                name: args.name,\n                modules: args.modules,\n                fullyQualified: true\n            })\n        });\n    }\n\n    public static instance(): Type {\n        return new this({\n            type: \"instance\"\n        });\n    }\n\n    public static boolean(): Type {\n        return new this({\n            type: \"boolean\"\n        });\n    }\n    public static nil(): Type {\n        return new this({\n            type: \"nil\"\n        });\n    }\n\n    public static top(): Type {\n        return new this({\n            type: \"top\"\n        });\n    }\n\n    public static bot(): Type {\n        return new this({\n            type: \"bot\"\n        });\n    }\n\n    public static void(): Type {\n        return new this({\n            type: \"void\"\n        });\n    }\n\n    public static boolish(): Type {\n        return new this({\n            type: \"boolish\"\n        });\n    }\n\n    public static string(): Type {\n        return new this({\n            type: \"string\"\n        });\n    }\n\n    public static integer(): Type {\n        return new this({\n            type: \"integer\"\n        });\n    }\n\n    public static union(elems: Union[\"elems\"]): Type {\n        return new this({\n            type: \"union\",\n            elems\n        });\n    }\n\n    public static intersection(elems: Intersection[\"elems\"]): Type {\n        return new this({\n            type: \"intersection\",\n            elems\n        });\n    }\n\n    public static array(elem: Type): Type {\n        return new this({\n            type: \"array\",\n            elem\n        });\n    }\n\n    public static hash(keyType: Type, valueType: Type): Type {\n        return new this({\n            type: \"hash\",\n            keyType,\n            valueType\n        });\n    }\n\n    public static object(klass: string): Type {\n        return new this({\n            type: \"object\",\n            klass\n        });\n    }\n\n    public static singleton(klass: string): Type {\n        return new this({\n            type: \"singleton\",\n            klass\n        });\n    }\n\n    public static tuple(elems: Tuple[\"elems\"]): Type {\n        return new this({\n            type: \"tuple\",\n            elems\n        });\n    }\n\n    public static generic(baseKlass: string, parameters: Generic[\"parameters\"]): Type {\n        return new this({\n            type: \"generic\",\n            baseKlass,\n            parameters\n        });\n    }\n\n    public static nilable(value: Type): Type {\n        return Type.union([value, Type.nil()]);\n    }\n\n    /**\n     * Helper for converting an existing type into an nilable type\n     */\n    public nilable(): Type {\n        return Type.nilable(this);\n    }\n}\n","import { Class_ } from \"./Class.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { TypeParameter } from \"./TypeParameter.js\";\n\nexport declare namespace Module_ {\n    export interface Args {\n        /* The module's name. */\n        name: string;\n        /* This module's namespace (i.e., the modules/classes it is wrapped in). */\n        namespace?: Set<Module_ | Class_>;\n        /* If this module is generic, it takes a type parameter. */\n        typeParameters?: TypeParameter[];\n        /* The docstring for the module. */\n        docstring?: string;\n        /* The body of the module. */\n        statements?: AstNode[];\n    }\n}\n\nexport class Module_ extends AstNode {\n    public readonly name: string;\n    public namespace: Set<Module_ | Class_>;\n    public readonly typeParameters: TypeParameter[];\n    public readonly docstring: string | undefined;\n    public readonly statements: AstNode[];\n\n    constructor({ name, namespace, typeParameters, docstring, statements }: Module_.Args) {\n        super();\n\n        this.name = name;\n        this.namespace = namespace ?? new Set();\n        this.typeParameters = typeParameters ?? [];\n        this.docstring = docstring;\n        this.statements = statements ?? [];\n\n        this.populateChildNamespaces();\n    }\n\n    public addStatement(statement: AstNode): void {\n        this.statements.push(statement);\n    }\n\n    public write(writer: Writer): void {\n        if (this.docstring) {\n            new Comment({ docs: this.docstring }).write(writer);\n        }\n\n        writer.write(`module ${this.name}`);\n\n        if (this.statements.length) {\n            writer.newLine();\n            writer.indent();\n\n            this.statements.forEach((statement, index) => {\n                statement.write(writer);\n                if (index < this.statements.length - 1) {\n                    writer.newLine();\n                }\n            });\n\n            writer.dedent();\n            writer.write(\"end\");\n        } else {\n            writer.write(\"; end\");\n        }\n        writer.newLine();\n    }\n\n    public writeTypeDefinition(writer: Writer): void {\n        writer.write(`module ${this.name}`);\n\n        if (this.typeParameters.length) {\n            writer.write(\"[\");\n\n            writer.delimit({\n                nodes: this.typeParameters,\n                delimiter: \", \",\n                writeFunction: (argument) => argument.writeTypeDefinition(writer)\n            });\n\n            writer.write(\"]\");\n        }\n\n        writer.newLine();\n\n        if (this.statements.length) {\n            writer.indent();\n            this.statements.forEach((statement) => {\n                statement.writeTypeDefinition(writer);\n                writer.newLine();\n            });\n            writer.dedent();\n        }\n\n        writer.write(\"end\");\n    }\n\n    /**\n     * Will recursively populate the namespaces of each child module/class\n     */\n    public populateChildNamespaces(): void {\n        this.statements\n            .filter((statement) => statement instanceof Module_ || statement instanceof Class_)\n            .forEach((child) => {\n                child.namespace = new Set<Module_ | Class_>([...this.namespace, this]);\n                child.populateChildNamespaces();\n            });\n    }\n\n    /**\n     * Returns the full name of the module/class, including it's namespace. Example would be\n     * `\"Grandparent::Parent::Child\"`\n     */\n    public get fullyQualifiedNamespace(): string {\n        return [...this.namespace, this].map((klass) => klass.name).join(\"::\");\n    }\n}\n","import { ClassReference } from \"./ClassReference.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { KeywordArgument } from \"./KeywordArgument.js\";\n\nexport declare namespace ClassInstantiation {\n    interface Args {\n        /** The class to instantiate */\n        classReference: ClassReference;\n        /** The keyword arguments passed to the constructor */\n        arguments_: KeywordArgument[];\n    }\n}\n\nexport class ClassInstantiation extends AstNode {\n    private classReference: ClassReference;\n    private arguments_: KeywordArgument[];\n\n    constructor({ classReference, arguments_ }: ClassInstantiation.Args) {\n        super();\n        this.classReference = classReference;\n        this.arguments_ = arguments_;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.classReference);\n        writer.write(\".\");\n        writer.write(\"new\");\n\n        if (this.arguments_.length === 0) {\n            return;\n        }\n\n        writer.write(\"(\");\n        // If there is more than one argument, write each argument on its own line,\n        // separated by commas, for better readability in the generated Ruby code.\n        // Otherwise, write the arguments inline (on the same line).\n        if (this.arguments_.length > 1) {\n            writer.indent();\n            writer.newLine();\n            this.arguments_.forEach((argument, index) => {\n                if (index > 0) {\n                    writer.write(\",\");\n                    writer.newLine();\n                }\n                argument.write(writer);\n            });\n            writer.newLine();\n            writer.dedent();\n        } else {\n            this.arguments_.forEach((argument, index) => {\n                if (index > 0) {\n                    writer.write(\", \");\n                }\n                argument.write(writer);\n            });\n        }\n        writer.write(\")\");\n    }\n}\n","import { CodeBlock as CommonCodeBlock } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg = CommonCodeBlock.Arg<Writer>;\n}\n\nexport class CodeBlock extends AstNode {\n    private arg: CodeBlock.Arg;\n\n    public constructor(arg: CodeBlock.Arg) {\n        super();\n        this.arg = arg;\n    }\n\n    public write(writer: Writer): void {\n        const commonCodeBlock = new CommonCodeBlock(this.arg);\n        return commonCodeBlock.write(writer);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace KeywordArgument {\n    interface Args {\n        /** The name of the keyword argument */\n        name: string;\n        /** The value passed to the keyword argument */\n        value: AstNode;\n    }\n}\n\nexport class KeywordArgument extends AstNode {\n    public readonly name: string;\n    public readonly value: AstNode;\n\n    constructor({ name, value }: KeywordArgument.Args) {\n        super();\n        this.name = name;\n        this.value = value;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(`${this.name}: `);\n        this.value.write(writer);\n    }\n}\n","import { AstNode } from \"../ruby.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Parameter } from \"./Parameter.js\";\n\nexport declare namespace KeywordParameter {\n    interface Args extends Parameter.Args {\n        /* The default value of this parameter. */\n        initializer?: AstNode;\n    }\n}\n\nexport class KeywordParameter extends Parameter {\n    public readonly initializer: AstNode | undefined;\n\n    constructor({ name, type, initializer, optional }: KeywordParameter.Args) {\n        super({ name, type, optional });\n\n        this.initializer = initializer;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(`${this.name}:`);\n\n        if (this.initializer) {\n            writer.write(\" \");\n            writer.writeNode(this.initializer);\n        }\n    }\n\n    public writeTypeDefinition(writer: Writer): void {\n        if (this.optional) {\n            writer.write(\"?\");\n        }\n\n        writer.write(`${this.name}: `);\n\n        this.type.writeTypeDefinition(writer);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Type } from \"./Type.js\";\nimport { TypeParameter } from \"./TypeParameter.js\";\n\nexport declare namespace Parameter {\n    interface Args {\n        /* The name of this parameter. */\n        name: string;\n        /* The type of this parameter. */\n        type?: Type | TypeParameter;\n        /* If this parameter is optional. */\n        optional?: boolean;\n        /* The docs for this parameter. */\n        docs?: string;\n    }\n}\n\nexport abstract class Parameter extends AstNode {\n    public readonly name: string;\n    public readonly type: Type | TypeParameter;\n    public readonly optional: boolean;\n    public readonly docs?: string;\n\n    constructor({ name, type, optional, docs }: Parameter.Args) {\n        super();\n        this.name = name;\n        this.type = type ?? Type.untyped();\n        this.optional = optional ?? false;\n        this.docs = docs;\n    }\n}\n","import { AstNode } from \"../ruby.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Parameter } from \"./Parameter.js\";\n\nexport declare namespace KeywordSplatParameter {\n    interface Args extends Parameter.Args {}\n}\n\nexport class KeywordSplatParameter extends Parameter {\n    public readonly initializer: AstNode | undefined;\n\n    public write(writer: Writer): void {\n        writer.write(`**${this.name}`);\n    }\n\n    public writeTypeDefinition(writer: Writer): void {\n        writer.write(\"**\");\n        this.type.writeTypeDefinition(writer);\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { KeywordArgument } from \"./KeywordArgument.js\";\n\nexport declare namespace MethodInvocation {\n    interface Args {\n        /** The instance to invoke the method on */\n        on: AstNode;\n        /** The method to invoke */\n        method: string;\n        /** Positional arguments passed to the method */\n        arguments_: AstNode[];\n        /** Keyword arguments passed to the method */\n        keywordArguments?: KeywordArgument[];\n        /** If the method is being passed a block, the list of args and the code contained in the block */\n        block?: [string[], AstNode[]];\n    }\n}\n\ntype PositionalOrKeywordArgument = { kind: \"positional\"; node: AstNode } | { kind: \"keyword\"; arg: KeywordArgument };\n\nexport class MethodInvocation extends AstNode {\n    private on: AstNode;\n    private method: string;\n    private arguments_: AstNode[];\n    private keywordArguments?: KeywordArgument[];\n    private block?: [string[], AstNode[]];\n\n    constructor({ on, method, arguments_, keywordArguments, block }: MethodInvocation.Args) {\n        super();\n        this.on = on;\n        this.method = method;\n        this.arguments_ = arguments_;\n        this.keywordArguments = keywordArguments;\n        this.block = block;\n    }\n\n    public write(writer: Writer): void {\n        this.on.write(writer);\n        writer.write(\".\");\n        writer.write(this.method);\n\n        const allArguments: PositionalOrKeywordArgument[] = [];\n        for (const node of this.arguments_) {\n            allArguments.push({ kind: \"positional\", node });\n        }\n        for (const arg of this.keywordArguments || []) {\n            allArguments.push({ kind: \"keyword\", arg });\n        }\n\n        // In Ruby, omit parentheses on method calls with no arguments and no block.\n        if (allArguments.length === 0 && this.block == null) {\n            return;\n        }\n\n        // If there is more than one argument, write each argument on its own line,\n        // separated by commas, for better readability in the generated Ruby code.\n        // Otherwise, write the arguments inline (on the same line).\n        writer.write(\"(\");\n        if (allArguments.length > 1) {\n            writer.indent();\n            writer.newLine();\n            allArguments.forEach((argument, index) => {\n                if (index > 0) {\n                    writer.write(\",\");\n                    writer.newLine();\n                }\n                writeArgument(writer, argument);\n            });\n            writer.newLine();\n            writer.dedent();\n        } else {\n            allArguments.forEach((argument, index) => {\n                if (index > 0) {\n                    writer.write(\", \");\n                }\n                writeArgument(writer, argument);\n            });\n        }\n        writer.write(\")\");\n        if (this.block) {\n            const [args, codelines] = this.block;\n            writer.write(\" do\");\n\n            if (args.length > 0) {\n                writer.write(\" |\");\n                args.forEach((argument, index) => {\n                    if (index > 0) {\n                        writer.write(\", \");\n                    }\n                    writer.write(argument);\n                });\n                writer.write(\"|\");\n            }\n\n            writer.newLine();\n            writer.indent();\n            for (const line of codelines) {\n                line.write(writer);\n                writer.writeNewLineIfLastLineNot();\n            }\n            writer.dedent();\n            writer.write(\"end\");\n        }\n    }\n}\n\nfunction writeArgument(writer: Writer, arg: PositionalOrKeywordArgument): void {\n    switch (arg.kind) {\n        case \"positional\":\n            arg.node.write(writer);\n            break;\n        case \"keyword\":\n            arg.arg.write(writer);\n            break;\n        default:\n            assertNever(arg);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace PositionalArgument {\n    interface Args {\n        /** The value passed to the positional argument */\n        value: AstNode;\n    }\n}\n\nexport class PositionalArgument extends AstNode {\n    public readonly value: AstNode;\n\n    constructor({ value }: PositionalArgument.Args) {\n        super();\n        this.value = value;\n    }\n\n    public write(writer: Writer): void {\n        this.value.write(writer);\n    }\n}\n","import { AstNode } from \"../ruby.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Parameter } from \"./Parameter.js\";\n\nexport declare namespace PositionalParameter {\n    interface Args extends Parameter.Args {\n        /* The default value of this parameter. */\n        initializer?: AstNode;\n    }\n}\n\nexport class PositionalParameter extends Parameter {\n    public readonly initializer: AstNode | undefined;\n\n    constructor({ name, type, optional, initializer }: PositionalParameter.Args) {\n        super({ name, type, optional });\n\n        this.initializer = initializer;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(this.name);\n\n        if (this.initializer) {\n            writer.write(` = ${this.initializer.write(writer)}`);\n        }\n    }\n\n    public writeTypeDefinition(writer: Writer): void {\n        if (this.optional) {\n            writer.write(\"?\");\n        }\n\n        this.type.writeTypeDefinition(writer);\n    }\n}\n","import { Writer } from \"./core/Writer.js\";\nimport { Parameter } from \"./Parameter.js\";\n\n// TODO: Does this need to be narrowed to collection types only?\nexport declare namespace PositionalSplatParameter {\n    interface Args extends Parameter.Args {}\n}\n\nexport class PositionalSplatParameter extends Parameter {\n    public write(writer: Writer): void {\n        writer.write(`*${this.name}`);\n    }\n\n    public writeTypeDefinition(writer: Writer): void {\n        writer.write(\"*\");\n        this.type.writeTypeDefinition(writer);\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport interface NamedValue {\n    name: string;\n    value: AstNode;\n}\n\ntype InternalTypeLiteral = Str | Int | Float | Bool | Hash | Set_ | List_ | Nop | Nil;\n\ninterface Str {\n    type: \"str\";\n    value: string;\n}\n\ninterface Int {\n    type: \"int\";\n    value: number;\n}\n\ninterface Float {\n    type: \"float\";\n    value: number;\n}\n\ninterface Bool {\n    type: \"bool\";\n    value: boolean;\n}\n\ninterface Hash {\n    type: \"hash\";\n    entries: HashEntry[];\n}\n\nexport interface HashEntry {\n    key: AstNode;\n    value: AstNode;\n}\n\ninterface Set_ {\n    type: \"set\";\n    values: AstNode[];\n}\n\ninterface List_ {\n    type: \"list\";\n    values: AstNode[];\n}\n\ninterface Nop {\n    type: \"nop\";\n}\n\ninterface Nil {\n    type: \"nil\";\n}\n\nexport class TypeLiteral extends AstNode {\n    private constructor(private readonly internalType: InternalTypeLiteral) {\n        super();\n    }\n\n    public static string(value: string): TypeLiteral {\n        return new this({ type: \"str\", value });\n    }\n\n    public static integer(value: number): TypeLiteral {\n        return new this({ type: \"int\", value });\n    }\n\n    public static float(value: number): TypeLiteral {\n        return new this({ type: \"float\", value });\n    }\n\n    public static boolean(value: boolean): TypeLiteral {\n        return new this({ type: \"bool\", value });\n    }\n\n    public static hash(entries: HashEntry[]): TypeLiteral {\n        const hash = new this({ type: \"hash\", entries });\n        return hash;\n    }\n\n    public static set(values: AstNode[]): TypeLiteral {\n        const set = new this({ type: \"set\", values });\n        return set;\n    }\n\n    public static list(values: AstNode[]): TypeLiteral {\n        const list = new this({ type: \"list\", values });\n        return list;\n    }\n\n    public static nop(): TypeLiteral {\n        return new this({ type: \"nop\" });\n    }\n\n    public static nil(): TypeLiteral {\n        return new this({ type: \"nil\" });\n    }\n\n    public static isNop(typeLiteral: AstNode): boolean {\n        return typeLiteral instanceof TypeLiteral && typeLiteral.internalType.type === \"nop\";\n    }\n\n    public static isNil(typeLiteral: AstNode): boolean {\n        return typeLiteral instanceof TypeLiteral && typeLiteral.internalType.type === \"nil\";\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalType.type) {\n            case \"str\": {\n                const value = this.internalType.value.replaceAll(\"\\r\\n\", \"\\n\");\n                if (value.includes('\"') && !value.includes(\"'\") && !value.includes(\"#\")) {\n                    writer.write(`'${value}'`);\n                } else {\n                    writer.write(`\"${value.replaceAll(\"\\\\\", \"\\\\\\\\\").replaceAll('\"', '\\\\\"')}\"`);\n                }\n                break;\n            }\n            case \"int\": {\n                writer.write(this.internalType.value.toString());\n                break;\n            }\n            case \"float\": {\n                writer.write(this.internalType.value.toString());\n                break;\n            }\n            case \"bool\": {\n                writer.write(this.internalType.value ? \"true\" : \"false\");\n                break;\n            }\n            case \"hash\": {\n                const entries = this.internalType.entries.filter(\n                    (entry) => !TypeLiteral.isNop(entry.key) && !TypeLiteral.isNop(entry.value)\n                );\n                if (entries.length === 0) {\n                    writer.write(\"{}\");\n                    break;\n                }\n                writer.write(\"{\\n\");\n                entries.forEach((entry, index) => {\n                    if (index > 0) {\n                        writer.writeLine(\",\");\n                    }\n                    writer.indent();\n                    // Always try to write as Ruby symbol if possible\n                    let wroteSymbol = false;\n                    if (entry.key instanceof TypeLiteral && entry.key.internalType.type === \"str\") {\n                        const keyStr = entry.key.internalType.value;\n                        // Ruby symbol rules: must be a valid identifier\n                        if (/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(keyStr)) {\n                            writer.write(`${keyStr}:`);\n                            wroteSymbol = true;\n                        }\n                    }\n                    if (!wroteSymbol) {\n                        entry.key.write(writer);\n                        writer.write(\" =>\"); // Use => for non-symbol keys (e.g., integers)\n                    }\n                    writer.write(\" \");\n                    entry.value.write(writer);\n                    writer.dedent();\n                });\n                writer.write(\"\\n}\");\n                break;\n            }\n            case \"set\": {\n                const values = this.internalType.values.filter((v) => !TypeLiteral.isNop(v));\n                if (values.length === 0) {\n                    writer.write(\"Set.new([])\");\n                    break;\n                }\n                writer.write(\"Set.new([\");\n                values.forEach((value, index) => {\n                    if (index > 0) {\n                        writer.write(\", \");\n                    }\n                    value.write(writer);\n                });\n                writer.write(\"])\");\n                break;\n            }\n            case \"list\": {\n                const values = this.internalType.values.filter((v) => !TypeLiteral.isNop(v));\n                if (values.length === 0) {\n                    writer.write(\"[]\");\n                    break;\n                }\n                // Use %w[] for arrays where every element is a simple string with no\n                // spaces, backslashes, or brackets that would break the syntax.\n                if (\n                    values.length >= 2 &&\n                    values.every(\n                        (v) =>\n                            v instanceof TypeLiteral &&\n                            v.internalType.type === \"str\" &&\n                            !/[\\s\\\\[\\]]/.test(v.internalType.value)\n                    )\n                ) {\n                    const words = (values as TypeLiteral[]).map((v) => {\n                        const str = v.internalType as { type: \"str\"; value: string };\n                        return str.value;\n                    });\n                    writer.write(`%w[${words.join(\" \")}]`);\n                    break;\n                }\n                writer.write(\"[\");\n                values.forEach((value, index) => {\n                    if (index > 0) {\n                        writer.write(\", \");\n                    }\n                    value.write(writer);\n                });\n                writer.write(\"]\");\n                break;\n            }\n            case \"nop\":\n                // Do not write anything for nop\n                break;\n            case \"nil\":\n                writer.write(\"nil\");\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n}\n\nexport { Type };\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport enum Variance {\n    Invariant,\n    Covariant = \"out\",\n    Contravariant = \"in\"\n}\n\nexport declare namespace TypeParameter {\n    export interface Args {\n        /* The name of the type parameter */\n        name: string;\n        /* If this type parameter is unchecked */\n        unchecked?: boolean;\n        /* What this type parameter is bound by */\n        bound?: TypeParameter | Type;\n        /* What the variance of this type variable is */\n        variance?: Variance;\n        /* A possible default type */\n        defaultType?: Type;\n    }\n}\n\n// TODO: Invariants, covariant, contravariant, unchecked, upper and lower bounds, default types. Some of these only\n// apply to modules/classes, while others can apply to methods\n// See: https://github.com/ruby/rbs/blob/master/docs/syntax.md#generics\n\n/* A Ruby generic type parameter */\nexport class TypeParameter extends AstNode {\n    public readonly name: string;\n    public readonly unchecked: boolean;\n    public readonly bound: TypeParameter | Type | undefined;\n    public readonly variance: Variance;\n    public readonly defaultType: Type | undefined;\n\n    public constructor({ name, unchecked, bound, variance, defaultType }: TypeParameter.Args) {\n        super();\n\n        this.name = name;\n        this.unchecked = unchecked ?? false;\n        this.bound = bound;\n        this.variance = variance ?? Variance.Invariant;\n        this.defaultType = defaultType;\n    }\n\n    public write(_writer: Writer): void {\n        // This is a no-op here, since type parameters are never printed in actual code, only in type definitions\n        return;\n    }\n\n    public writeTypeDefinition(writer: Writer): void {\n        if (this.unchecked) {\n            writer.write(\"unchecked \");\n        }\n\n        if (this.variance != Variance.Invariant) {\n            writer.write(`${this.variance} `);\n        }\n\n        writer.write(this.name);\n\n        if (this.bound) {\n            writer.write(\" < \");\n            this.bound.writeTypeDefinition(writer);\n        }\n\n        if (this.defaultType) {\n            writer.write(\" = \");\n            this.defaultType.writeTypeDefinition(writer);\n        }\n    }\n}\n","import { AstNode } from \"../ruby.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Parameter } from \"./Parameter.js\";\n\nexport declare namespace YieldParameter {\n    interface Args extends Parameter.Args {}\n}\n\nexport class YieldParameter extends Parameter {\n    public readonly initializer: AstNode | undefined;\n\n    public write(writer: Writer): void {\n        writer.write(`&${this.name}`);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\n/**\n * Represents the throwing of an error via `raise`.\n */\nexport declare namespace Raise {\n    interface Args {\n        /** The error to raise. Can be an arbitrary expression. If none is passed Ruby will default it to a RuntimeError */\n        errorClass?: AstNode;\n        /** The expression being passed as the second argument of raise, must resolve to a string if it exists */\n        message?: AstNode;\n    }\n}\n\nexport class Raise extends AstNode {\n    public readonly errorClass?: AstNode;\n    public readonly message?: AstNode;\n\n    constructor({ errorClass, message }: Raise.Args) {\n        super();\n        this.errorClass = errorClass;\n        this.message = message;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(\"raise\");\n\n        if (this.errorClass) {\n            writer.write(\" \");\n            this.errorClass.write(writer);\n        }\n\n        if (this.message) {\n            if (this.errorClass) {\n                writer.write(\", \");\n            }\n            this.message.write(writer);\n        }\n    }\n}\n","import { DiscriminatedUnionTypeInstance, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { ruby } from \"@fern-api/ruby-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n    interface Args {\n        typeReference: FernIr.dynamic.TypeReference;\n        value: unknown;\n        as?: ConvertedAs;\n    }\n\n    // Identifies what the type is being converted as, which sometimes influences how\n    // the type is instantiated.\n    type ConvertedAs = \"key\";\n}\n\nexport class DynamicTypeLiteralMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public convert(args: DynamicTypeLiteralMapper.Args): ruby.AstNode {\n        // eslint-disable-next-line eqeqeq\n        if (args.value === null) {\n            if (this.context.isNullable(args.typeReference)) {\n                return ruby.TypeLiteral.nil();\n            }\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Expected non-null value, but got null\"\n            });\n            return ruby.TypeLiteral.nop();\n        }\n        if (args.value === undefined) {\n            return ruby.TypeLiteral.nop();\n        }\n        switch (args.typeReference.type) {\n            case \"list\":\n                return this.convertList({ list: args.typeReference.value, value: args.value });\n            case \"literal\":\n                return this.convertLiteral({ literalType: args.typeReference.value, value: args.value });\n            case \"map\":\n                return this.convertMap({ map: args.typeReference, value: args.value });\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named == null) {\n                    return ruby.TypeLiteral.nop();\n                }\n                return this.convertNamed({ named, value: args.value, as: args.as });\n            }\n            case \"optional\":\n                return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n            case \"nullable\":\n                return this.convert({ typeReference: args.typeReference.value, value: args.value, as: args.as });\n            case \"primitive\":\n                return this.convertPrimitive({ primitive: args.typeReference.value, value: args.value, as: args.as });\n            case \"set\":\n                return this.convertSet({ set: args.typeReference.value, value: args.value });\n            case \"unknown\":\n                return ruby.TypeLiteral.nop();\n            default:\n                assertNever(args.typeReference);\n        }\n    }\n\n    private convertLiteral({\n        literalType,\n        value\n    }: {\n        literalType: FernIr.dynamic.LiteralType;\n        value: unknown;\n    }): ruby.AstNode {\n        switch (literalType.type) {\n            case \"boolean\": {\n                const bool = this.context.getValueAsBoolean({ value });\n                if (bool == null) {\n                    return ruby.TypeLiteral.nop();\n                }\n                return ruby.TypeLiteral.boolean(bool);\n            }\n            case \"string\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return ruby.TypeLiteral.nop();\n                }\n                return ruby.TypeLiteral.string(str);\n            }\n            default:\n                assertNever(literalType);\n        }\n    }\n\n    private convertList({ list, value }: { list: FernIr.dynamic.TypeReference; value: unknown }): ruby.AstNode {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return ruby.TypeLiteral.nop();\n        }\n        return ruby.TypeLiteral.list(\n            value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: list, value: v });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        );\n    }\n\n    private convertSet({ set, value }: { set: FernIr.dynamic.TypeReference; value: unknown }): ruby.AstNode {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return ruby.TypeLiteral.nop();\n        }\n        return ruby.TypeLiteral.set(\n            value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: set, value: v });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        );\n    }\n\n    private convertMap({ map, value }: { map: FernIr.dynamic.MapType; value: unknown }): ruby.AstNode {\n        if (typeof value !== \"object\" || value == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n            });\n            return ruby.TypeLiteral.nop();\n        }\n        return ruby.TypeLiteral.hash(\n            Object.entries(value).map(([key, value]) => {\n                this.context.errors.scope(key);\n                try {\n                    return {\n                        key: this.convert({ typeReference: map.key, value: key, as: \"key\" }),\n                        value: this.convert({ typeReference: map.value, value })\n                    };\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        );\n    }\n\n    private convertNamed({\n        named,\n        value,\n        as\n    }: {\n        named: FernIr.dynamic.NamedType;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): ruby.AstNode {\n        switch (named.type) {\n            case \"alias\": {\n                return this.convert({ typeReference: named.typeReference, value, as });\n            }\n            case \"discriminatedUnion\":\n                return this.convertDiscriminatedUnion({\n                    discriminatedUnion: named,\n                    value\n                });\n            case \"object\":\n                return this.convertObject({ object: named, value });\n            case \"enum\":\n                return this.convertEnum({ enum_: named, value });\n            case \"undiscriminatedUnion\":\n                return this.convertUndiscriminatedUnion({ undiscriminatedUnion: named, value });\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertDiscriminatedUnion({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): ruby.AstNode {\n        const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n            discriminatedUnion,\n            value\n        });\n        if (discriminatedUnionTypeInstance == null) {\n            return ruby.TypeLiteral.nop();\n        }\n        const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n        const unionProperties = this.convertDiscriminatedUnionProperties({\n            discriminatedUnionTypeInstance,\n            unionVariant\n        });\n        if (unionProperties == null) {\n            return ruby.TypeLiteral.nop();\n        }\n        return ruby.TypeLiteral.hash(unionProperties);\n    }\n\n    private convertDiscriminatedUnionProperties({\n        discriminatedUnionTypeInstance,\n        unionVariant\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        unionVariant: FernIr.dynamic.SingleDiscriminatedUnionType;\n    }): ruby.HashEntry[] | undefined {\n        switch (unionVariant.type) {\n            case \"samePropertiesAsObject\": {\n                const named = this.context.resolveNamedType({\n                    typeId: unionVariant.typeId\n                });\n                if (named == null) {\n                    return undefined;\n                }\n                const converted = this.convertNamed({ named, value: discriminatedUnionTypeInstance.value });\n                // For Ruby, we expect a hash back from convertNamed for objects\n                // We need to extract the entries from the hash\n                return this.extractHashEntries(converted);\n            }\n            case \"singleProperty\": {\n                try {\n                    this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n                    const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n                    if (record == null) {\n                        return [\n                            {\n                                key: ruby.TypeLiteral.string(\n                                    this.context.getPropertyName(unionVariant.discriminantValue.name)\n                                ),\n                                value: this.convert({\n                                    typeReference: unionVariant.typeReference,\n                                    value: discriminatedUnionTypeInstance.value\n                                })\n                            }\n                        ];\n                    }\n                    return [\n                        {\n                            key: ruby.TypeLiteral.string(\n                                this.context.getPropertyName(unionVariant.discriminantValue.name)\n                            ),\n                            value: this.convert({\n                                typeReference: unionVariant.typeReference,\n                                value: record[unionVariant.discriminantValue.wireValue]\n                            })\n                        }\n                    ];\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }\n            case \"noProperties\":\n                return [];\n            default:\n                assertNever(unionVariant);\n        }\n    }\n\n    private extractHashEntries(node: ruby.AstNode): ruby.HashEntry[] | undefined {\n        // This is a workaround to extract hash entries from a TypeLiteral\n        // We need to check if the node is a hash and extract its entries\n        // For now, we'll return an empty array if we can't extract entries\n        // The node should be a hash created by convertObject\n        if (node instanceof ruby.TypeLiteral) {\n            // TypeLiteral doesn't expose internal type, so we need to work around this\n            // by re-converting the value as an object\n            return undefined;\n        }\n        return undefined;\n    }\n\n    private convertEnum({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): ruby.AstNode {\n        const name = this.getEnumValueName({ enum_, value });\n        if (name == null) {\n            return ruby.TypeLiteral.nop();\n        }\n        // In Ruby, enum values are typically represented as strings\n        return ruby.TypeLiteral.string(name);\n    }\n\n    private getEnumValueName({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected enum value string, got: ${typeof value}`\n            });\n            return undefined;\n        }\n        const enumValue = enum_.values.find((v) => v.wireValue === value);\n        if (enumValue == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `An enum value named \"${value}\" does not exist in this context`\n            });\n            return undefined;\n        }\n        // Return the wire value for Ruby (as a string)\n        return enumValue.wireValue;\n    }\n\n    private convertUndiscriminatedUnion({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): ruby.AstNode {\n        const result = this.findMatchingUndiscriminatedUnionType({\n            undiscriminatedUnion,\n            value\n        });\n        if (result == null) {\n            return ruby.TypeLiteral.nop();\n        }\n        return result;\n    }\n\n    private findMatchingUndiscriminatedUnionType({\n        undiscriminatedUnion,\n        value\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): ruby.AstNode | undefined {\n        for (const typeReference of undiscriminatedUnion.types) {\n            // Clone the context to avoid polluting errors\n            const clonedContext = this.context.clone();\n            const clonedMapper = new DynamicTypeLiteralMapper({ context: clonedContext });\n            const result = clonedMapper.convert({ typeReference, value });\n            // If no errors were added, this type matched - return the already-converted result\n            // to avoid duplicate errors from calling convert() again on the main context\n            if (clonedContext.errors.empty()) {\n                return result;\n            }\n        }\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value`\n        });\n        return undefined;\n    }\n\n    private convertPrimitive({\n        primitive,\n        value,\n        as\n    }: {\n        primitive: FernIr.dynamic.PrimitiveTypeV1;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): ruby.AstNode {\n        switch (primitive) {\n            case \"INTEGER\":\n            case \"LONG\":\n            case \"UINT\":\n            case \"UINT_64\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return ruby.TypeLiteral.nop();\n                }\n                return ruby.TypeLiteral.integer(num);\n            }\n            case \"FLOAT\":\n            case \"DOUBLE\": {\n                const num = this.getValueAsNumber({ value });\n                if (num == null) {\n                    return ruby.TypeLiteral.nop();\n                }\n                return ruby.TypeLiteral.float(num);\n            }\n            case \"BOOLEAN\": {\n                const bool = this.getValueAsBoolean({ value, as });\n                if (bool == null) {\n                    return ruby.TypeLiteral.nop();\n                }\n                return ruby.TypeLiteral.boolean(bool);\n            }\n            case \"BASE_64\":\n            case \"BIG_INTEGER\":\n            case \"STRING\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return ruby.TypeLiteral.nop();\n                }\n                return ruby.TypeLiteral.string(str);\n            }\n            case \"UUID\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return ruby.TypeLiteral.nop();\n                }\n                return ruby.TypeLiteral.string(str);\n            }\n            case \"DATE\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return ruby.TypeLiteral.nop();\n                }\n                return ruby.TypeLiteral.string(str);\n            }\n            case \"DATE_TIME\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return ruby.TypeLiteral.nop();\n                }\n                return ruby.TypeLiteral.string(str);\n            }\n            default:\n                assertNever(primitive);\n        }\n    }\n\n    private convertObject({ object, value }: { object: FernIr.dynamic.ObjectType; value: unknown }): ruby.AstNode {\n        if (typeof value !== \"object\" || value == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n            });\n            return ruby.TypeLiteral.nop();\n        }\n\n        return ruby.TypeLiteral.hash(\n            Object.entries(value as Record<string, unknown>).map(([key, val]) => {\n                this.context.errors.scope(key);\n                const property = object.properties.find((p) => p.name.wireValue === key);\n                const typeReference = property?.typeReference ?? { type: \"unknown\" };\n                // Use snake_case property name for Ruby, falling back to wire value if not found\n                const propertyName = property?.name.name.snakeCase.safeName ?? key;\n                const astNode = {\n                    key: ruby.TypeLiteral.string(propertyName),\n                    value: this.convert({ typeReference, value: val })\n                };\n                this.context.errors.unscope();\n                return astNode;\n            })\n        );\n    }\n\n    private getValueAsNumber({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): number | undefined {\n        const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n        return this.context.getValueAsNumber({ value: num });\n    }\n\n    private getValueAsBoolean({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): boolean | undefined {\n        const bool = as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : Boolean(value)) : value;\n        return this.context.getValueAsBoolean({ value: bool });\n    }\n}\n","import { AbstractFormatter, Options, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { ruby } from \"@fern-api/ruby-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\n\nconst CLIENT_VAR_NAME = \"client\";\nconst INSTANCE_CLIENT_VAR_NAME = \"@client\";\n\nexport class EndpointSnippetGenerator {\n    private context: DynamicSnippetsGeneratorContext;\n    private formatter: AbstractFormatter | undefined;\n\n    constructor({ context, formatter }: { context: DynamicSnippetsGeneratorContext; formatter?: AbstractFormatter }) {\n        this.context = context;\n        this.formatter = formatter;\n    }\n\n    public async generateSnippet({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): Promise<string> {\n        const code = this.buildCodeBlock({ endpoint, snippet: request });\n        return await code.toStringAsync({\n            customConfig: this.context.customConfig ?? {},\n            formatter: this.formatter\n        });\n    }\n\n    public generateSnippetSync({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): string {\n        const code = this.buildCodeBlock({ endpoint, snippet: request });\n        return code.toString({\n            customConfig: this.context.customConfig ?? {},\n            formatter: this.formatter\n        });\n    }\n\n    public async generateSnippetAst({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): Promise<ruby.AstNode> {\n        if (options?.skipClientInstantiation) {\n            return this.buildCodeBlockWithoutClient({ endpoint, snippet: request });\n        }\n        return this.buildCodeBlock({ endpoint, snippet: request });\n    }\n\n    private buildCodeBlock({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ruby.AstNode {\n        // In Ruby, concise and full styles are the same\n        return ruby.codeblock((writer) => {\n            writer.writeNodeStatement(this.constructClient({ endpoint, snippet }));\n            writer.newLine();\n            writer.writeNodeStatement(this.callMethod({ endpoint, snippet }));\n        });\n    }\n\n    /**\n     * Builds a code block without client instantiation.\n     * Used for wire tests where the client is already instantiated in the test setup.\n     */\n    private buildCodeBlockWithoutClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ruby.AstNode {\n        return ruby.codeblock((writer) => {\n            writer.writeNodeStatement(this.callMethodOnExistingClient({ endpoint, snippet }));\n        });\n    }\n\n    private constructClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ruby.AstNode {\n        return ruby.codeblock((writer) => {\n            writer.addRequire(this.context.getRootModuleName().toLowerCase());\n\n            const clientClassRef = this.context.getRootClientClassReference();\n            const builderArgs = this.getRootClientBuilderArgs({ endpoint, snippet });\n\n            writer.write(`${CLIENT_VAR_NAME} = `);\n            writer.writeNode(\n                ruby.instantiateClass({\n                    classReference: clientClassRef,\n                    arguments_: builderArgs\n                })\n            );\n        });\n    }\n\n    // Helper for base URL/environment argument\n    private getRootClientBaseUrlArg({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): ruby.KeywordArgument[] {\n        if (baseUrl != null && environment != null) {\n            this.context.errors.add({\n                severity: \"CRITICAL\",\n                message: \"Cannot specify both baseUrl and environment options\"\n            });\n            return [];\n        }\n        if (baseUrl != null) {\n            return [\n                ruby.keywordArgument({\n                    name: \"base_url\",\n                    value: ruby.TypeLiteral.string(baseUrl)\n                })\n            ];\n        }\n        if (environment != null) {\n            if (this.context.isSingleEnvironmentID(environment)) {\n                const environmentTypeReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n                if (environmentTypeReference == null) {\n                    this.context.errors.add({\n                        severity: \"CRITICAL\",\n                        message: `Environment ID ${environment} not found`\n                    });\n                    return [];\n                }\n\n                return [\n                    ruby.keywordArgument({\n                        name: \"environment\",\n                        value: environmentTypeReference\n                    })\n                ];\n            }\n            if (this.context.isMultiEnvironmentValues(environment)) {\n                this.context.errors.add({\n                    severity: \"CRITICAL\",\n                    message: \"Multi-environment values are not supported in Ruby snippets yet\"\n                });\n                return [];\n            }\n        }\n        return [];\n    }\n\n    // Helper for auth arguments\n    private getRootClientAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): ruby.KeywordArgument[] {\n        if (values.type !== auth.type) {\n            this.addError(this.context.newAuthMismatchError({ auth, values }).message);\n            return [];\n        }\n\n        switch (auth.type) {\n            case \"basic\":\n                return values.type === \"basic\" ? this.getRootClientBasicAuthArgs({ auth, values }) : [];\n            case \"bearer\":\n                return values.type === \"bearer\" ? this.getRootClientBearerAuthArgs({ auth, values }) : [];\n            case \"header\":\n                return values.type === \"header\" ? this.getRootClientHeaderAuthArgs({ auth, values }) : [];\n            case \"oauth\":\n                return values.type === \"oauth\" ? this.getRootClientOAuthArgs({ auth, values }) : [];\n            case \"inferred\":\n                // Inferred auth parameters are handled by the root client constructor\n                // (e.g., client_id, client_secret from the token endpoint request)\n                // No additional auth arguments needed here\n                return [];\n            default:\n                assertNever(auth);\n        }\n    }\n\n    private addError(message: string): void {\n        this.context.errors.add({ severity: Severity.Critical, message });\n    }\n\n    private addWarning(message: string): void {\n        this.context.errors.add({ severity: Severity.Warning, message });\n    }\n\n    private getRootClientBasicAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BasicAuth;\n        values: FernIr.dynamic.BasicAuthValues;\n    }): ruby.KeywordArgument[] {\n        return [\n            ruby.keywordArgument({\n                name: auth.username.snakeCase.safeName,\n                value: ruby.TypeLiteral.string(values.username)\n            }),\n            ruby.keywordArgument({\n                name: auth.password.snakeCase.safeName,\n                value: ruby.TypeLiteral.string(values.password)\n            })\n        ];\n    }\n\n    private getRootClientBearerAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BearerAuth;\n        values: FernIr.dynamic.BearerAuthValues;\n    }): ruby.KeywordArgument[] {\n        return [\n            ruby.keywordArgument({\n                name: auth.token.snakeCase.safeName,\n                value: ruby.TypeLiteral.string(values.token)\n            })\n        ];\n    }\n\n    private getRootClientHeaderAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.HeaderAuth;\n        values: FernIr.dynamic.HeaderAuthValues;\n    }): ruby.KeywordArgument[] {\n        return [\n            ruby.keywordArgument({\n                name: auth.header.name.name.snakeCase.safeName,\n                value: ruby.TypeLiteral.string(values.value as string)\n            })\n        ];\n    }\n\n    private getRootClientOAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.OAuth;\n        values: FernIr.dynamic.OAuthValues;\n    }): ruby.KeywordArgument[] {\n        // OAuth client credentials\n        return [\n            ruby.keywordArgument({\n                name: auth.clientId.snakeCase.safeName,\n                value: ruby.TypeLiteral.string(values.clientId)\n            }),\n            ruby.keywordArgument({\n                name: auth.clientSecret.snakeCase.safeName,\n                value: ruby.TypeLiteral.string(values.clientSecret)\n            })\n        ];\n    }\n\n    // Helper for headers\n    private getRootClientHeaderArgs({\n        headers,\n        values\n    }: {\n        headers: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): ruby.KeywordArgument[] {\n        const args: ruby.KeywordArgument[] = [];\n        for (const header of headers) {\n            const value = values[header.name.wireValue];\n            if (value != null && typeof value === \"string\") {\n                args.push(\n                    ruby.keywordArgument({\n                        name: header.name.name.snakeCase.safeName,\n                        value: ruby.TypeLiteral.string(value)\n                    })\n                );\n            }\n        }\n        return args;\n    }\n\n    // Main builder\n    private getRootClientBuilderArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ruby.KeywordArgument[] {\n        const builderArgs: ruby.KeywordArgument[] = [];\n\n        // Auth\n        if (endpoint.auth != null) {\n            if (snippet.auth != null) {\n                builderArgs.push(...this.getRootClientAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n            } else {\n                this.context.errors.add({\n                    severity: \"WARNING\",\n                    message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n                });\n            }\n        }\n\n        // Base URL / Environment\n        const baseUrlArgs = this.getRootClientBaseUrlArg({\n            baseUrl: snippet.baseURL,\n            environment: snippet.environment\n        });\n        if (baseUrlArgs.length > 0) {\n            builderArgs.push(...baseUrlArgs);\n        }\n\n        // Headers\n        this.context.errors.scope(\"Headers\");\n        if (this.context.ir.headers != null && snippet.headers != null) {\n            builderArgs.push(\n                ...this.getRootClientHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n            );\n        }\n        this.context.errors.unscope();\n\n        return builderArgs;\n    }\n\n    private callMethod({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ruby.MethodInvocation {\n        const invokeMethodArgs: ruby.MethodInvocation.Args = {\n            on: ruby.codeblock(CLIENT_VAR_NAME),\n            method: this.getMethod({ endpoint }),\n            arguments_: []\n        };\n\n        switch (endpoint.request.type) {\n            case \"inlined\":\n                invokeMethodArgs.keywordArguments = this.getMethodArgsForInlinedRequest({\n                    request: endpoint.request,\n                    snippet\n                });\n                break;\n            case \"body\":\n                // Ruby SDK methods use keyword arguments (via **params), not positional arguments\n                invokeMethodArgs.keywordArguments = this.getMethodArgsForBodyRequest({\n                    request: endpoint.request,\n                    snippet\n                });\n                break;\n            default:\n                assertNever(endpoint.request);\n        }\n\n        // Add request_options with additional_headers for unmapped headers (e.g., X-Test-Id)\n        const requestOptions = this.getRequestOptions({ endpoint, snippet });\n        if (requestOptions != null) {\n            invokeMethodArgs.keywordArguments = invokeMethodArgs.keywordArguments ?? [];\n            invokeMethodArgs.keywordArguments.push(requestOptions);\n        }\n\n        return ruby.invokeMethod(invokeMethodArgs);\n    }\n\n    /**\n     * Calls a method on an existing client instance variable (@client).\n     * Used for wire tests where the client is already instantiated in the test setup.\n     */\n    private callMethodOnExistingClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ruby.MethodInvocation {\n        const invokeMethodArgs: ruby.MethodInvocation.Args = {\n            on: ruby.codeblock(INSTANCE_CLIENT_VAR_NAME),\n            method: this.getMethod({ endpoint }),\n            arguments_: []\n        };\n\n        switch (endpoint.request.type) {\n            case \"inlined\":\n                invokeMethodArgs.keywordArguments = this.getMethodArgsForInlinedRequest({\n                    request: endpoint.request,\n                    snippet\n                });\n                break;\n            case \"body\":\n                invokeMethodArgs.keywordArguments = this.getMethodArgsForBodyRequest({\n                    request: endpoint.request,\n                    snippet\n                });\n                break;\n            default:\n                assertNever(endpoint.request);\n        }\n\n        // Add request_options with additional_headers for unmapped headers (e.g., X-Test-Id)\n        const requestOptions = this.getRequestOptions({ endpoint, snippet });\n        if (requestOptions != null) {\n            invokeMethodArgs.keywordArguments = invokeMethodArgs.keywordArguments ?? [];\n            invokeMethodArgs.keywordArguments.push(requestOptions);\n        }\n\n        return ruby.invokeMethod(invokeMethodArgs);\n    }\n\n    /**\n     * Builds request_options from snippet headers for per-request options.\n     * This is used when generating snippets for wire tests where headers like X-Test-Id\n     * should be passed as request_options[:additional_headers] rather than as method parameters.\n     * Only includes headers that are NOT already mapped to the request directly (i.e., not defined in the IR).\n     */\n    private getRequestOptions({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ruby.KeywordArgument | undefined {\n        const headers = snippet.headers ?? {};\n        const entries = Object.entries(headers);\n        if (entries.length === 0) {\n            return undefined;\n        }\n\n        // Build a set of header names that are already mapped to the request directly\n        const mappedHeaderNames = new Set<string>();\n\n        // Add global headers from IR\n        if (this.context.ir.headers != null) {\n            for (const header of this.context.ir.headers) {\n                mappedHeaderNames.add(header.name.wireValue.toLowerCase());\n            }\n        }\n\n        // Add endpoint-level headers from inlined request\n        if (endpoint.request.type === \"inlined\" && endpoint.request.headers != null) {\n            for (const header of endpoint.request.headers) {\n                mappedHeaderNames.add(header.name.wireValue.toLowerCase());\n            }\n        }\n\n        // Filter out headers that are already mapped to the request\n        const unmappedEntries = entries.filter(([name]) => !mappedHeaderNames.has(name.toLowerCase()));\n        if (unmappedEntries.length === 0) {\n            return undefined;\n        }\n\n        // Build request_options: { additional_headers: { \"X-Test-Id\" => \"value\" } }\n        const additionalHeadersEntries = unmappedEntries.map(([name, value]) => ({\n            key: ruby.TypeLiteral.string(name),\n            value: ruby.TypeLiteral.string(String(value))\n        }));\n\n        return ruby.keywordArgument({\n            name: \"request_options\",\n            value: ruby.TypeLiteral.hash([\n                {\n                    key: ruby.TypeLiteral.string(\"additional_headers\"),\n                    value: ruby.TypeLiteral.hash(additionalHeadersEntries)\n                }\n            ])\n        });\n    }\n\n    private getMethodArgsForInlinedRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ruby.KeywordArgument[] {\n        const args: ruby.KeywordArgument[] = [];\n\n        args.push(\n            ...this.getNamedParameterArgs({\n                kind: \"PathParameters\",\n                namedParameters: request.pathParameters,\n                values: snippet.pathParameters\n            })\n        );\n        args.push(\n            ...this.getNamedParameterArgs({\n                kind: \"QueryParameters\",\n                namedParameters: request.queryParameters,\n                values: snippet.queryParameters\n            })\n        );\n        args.push(\n            ...this.getNamedParameterArgs({\n                kind: \"Headers\",\n                namedParameters: request.headers,\n                values: snippet.headers\n            })\n        );\n\n        // Handle request.body if present\n        if (request.body != null && snippet.requestBody != null) {\n            switch (request.body.type) {\n                case \"properties\":\n                    args.push(...this.getMethodArgsForPropertiesRequest({ request: request.body, snippet }));\n                    break;\n                case \"referenced\": {\n                    // Handle referenced body types (like BillOutData)\n                    const bodyType = request.body.bodyType;\n                    if (bodyType.type === \"typeReference\") {\n                        const typeRef = bodyType.value;\n                        if (typeRef.type === \"named\") {\n                            const namedType = this.context.resolveNamedType({ typeId: typeRef.value });\n                            if (namedType != null && namedType.type === \"object\") {\n                                // For objects, flatten the body fields into keyword arguments\n                                const bodyRecord = this.context.getRecord(snippet.requestBody);\n                                if (bodyRecord != null) {\n                                    const bodyFields = this.getBodyFieldsAsKeywordArgs({\n                                        namedType,\n                                        bodyRecord\n                                    });\n                                    args.push(...bodyFields);\n                                }\n                            } else if (namedType != null) {\n                                // For non-object named types, convert and pass as single argument\n                                const bodyArgs = this.getBodyArgsForNonObjectType({\n                                    namedType,\n                                    typeRef,\n                                    bodyValue: snippet.requestBody\n                                });\n                                args.push(...bodyArgs);\n                            }\n                        } else {\n                            // For non-named type references, convert directly\n                            const convertedValue = this.context.dynamicTypeLiteralMapper.convert({\n                                typeReference: typeRef,\n                                value: snippet.requestBody\n                            });\n                            if (!ruby.TypeLiteral.isNop(convertedValue)) {\n                                args.push(\n                                    ruby.keywordArgument({\n                                        name: request.body.bodyKey.snakeCase.safeName,\n                                        value: convertedValue\n                                    })\n                                );\n                            }\n                        }\n                    }\n                    break;\n                }\n                case \"fileUpload\":\n                    // Not implemented for Ruby snippets yet\n                    break;\n                default:\n                    assertNever(request.body);\n            }\n        }\n\n        return args;\n    }\n\n    private getNamedParameterArgs({\n        kind,\n        namedParameters,\n        values\n    }: {\n        kind: \"PathParameters\" | \"QueryParameters\" | \"Headers\";\n        namedParameters: FernIr.dynamic.NamedParameter[] | undefined;\n        values: Record<string, unknown> | undefined;\n    }): ruby.KeywordArgument[] {\n        const args: ruby.KeywordArgument[] = [];\n        this.context.errors.scope(kind);\n        if (namedParameters != null) {\n            const associated = this.context.associateByWireValue({\n                parameters: namedParameters,\n                values: values ?? {},\n                ignoreMissingParameters: true\n            });\n            for (const parameter of associated) {\n                const value = this.context.dynamicTypeLiteralMapper.convert(parameter);\n                // Skip nop values (undefined/null) to avoid generating empty arguments like \"channel: ,\"\n                if (ruby.TypeLiteral.isNop(value)) {\n                    continue;\n                }\n                args.push(\n                    ruby.keywordArgument({\n                        name: this.context.getPropertyName(parameter.name.name),\n                        value\n                    })\n                );\n            }\n        }\n        this.context.errors.unscope();\n        return args;\n    }\n\n    private getMethodArgsForPropertiesRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequestBody.Properties;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ruby.KeywordArgument[] {\n        const args: ruby.KeywordArgument[] = [];\n\n        const bodyProperties = this.context.associateByWireValue({\n            parameters: request.value,\n            values: this.context.getRecord(snippet.requestBody) ?? {}\n        });\n        for (const parameter of bodyProperties) {\n            const value = this.context.dynamicTypeLiteralMapper.convert(parameter);\n            // Skip nop values (undefined/null) to avoid generating empty arguments like \"channel: ,\"\n            if (ruby.TypeLiteral.isNop(value)) {\n                continue;\n            }\n            args.push(\n                ruby.keywordArgument({\n                    name: this.context.getPropertyName(parameter.name.name),\n                    value\n                })\n            );\n        }\n        return args;\n    }\n\n    private getMethodArgsForBodyRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.BodyRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ruby.KeywordArgument[] {\n        const args: ruby.KeywordArgument[] = [];\n\n        // Add path parameters as keyword arguments (Ruby SDK uses **params)\n        args.push(\n            ...this.getNamedParameterArgs({\n                kind: \"PathParameters\",\n                namedParameters: request.pathParameters,\n                values: snippet.pathParameters\n            })\n        );\n\n        // Add body fields as keyword arguments\n        if (request.body != null && snippet.requestBody != null) {\n            switch (request.body.type) {\n                case \"bytes\":\n                    // Not supported in Ruby snippets yet\n                    this.context.errors.add({\n                        severity: \"CRITICAL\",\n                        message: \"Bytes request body is not supported in Ruby snippets yet\"\n                    });\n                    break;\n                case \"typeReference\": {\n                    const typeRef = request.body.value;\n\n                    // Check if this is a named type that we can resolve\n                    if (typeRef.type === \"named\") {\n                        const namedType = this.context.resolveNamedType({ typeId: typeRef.value });\n                        if (namedType != null && namedType.type === \"object\") {\n                            // For objects, flatten the body fields into keyword arguments\n                            const bodyRecord = this.context.getRecord(snippet.requestBody);\n                            if (bodyRecord != null) {\n                                const bodyFields = this.getBodyFieldsAsKeywordArgs({\n                                    namedType,\n                                    bodyRecord\n                                });\n                                args.push(...bodyFields);\n                            }\n                        } else if (namedType != null) {\n                            // For non-object named types (undiscriminated unions, aliases, etc.),\n                            // convert the entire body value and pass as a single 'request' keyword argument\n                            const bodyArgs = this.getBodyArgsForNonObjectType({\n                                namedType,\n                                typeRef,\n                                bodyValue: snippet.requestBody\n                            });\n                            args.push(...bodyArgs);\n                        }\n                    } else {\n                        // For non-named type references (containers, primitives, etc.),\n                        // convert the body value directly\n                        const convertedValue = this.context.dynamicTypeLiteralMapper.convert({\n                            typeReference: typeRef,\n                            value: snippet.requestBody\n                        });\n                        if (!ruby.TypeLiteral.isNop(convertedValue)) {\n                            args.push(\n                                ruby.keywordArgument({\n                                    name: \"request\",\n                                    value: convertedValue\n                                })\n                            );\n                        }\n                    }\n                    break;\n                }\n                default:\n                    assertNever(request.body);\n            }\n        }\n\n        return args;\n    }\n\n    private getBodyArgsForNonObjectType({\n        namedType,\n        typeRef,\n        bodyValue\n    }: {\n        namedType: FernIr.dynamic.NamedType;\n        typeRef: FernIr.dynamic.TypeReference;\n        bodyValue: unknown;\n    }): ruby.KeywordArgument[] {\n        const args: ruby.KeywordArgument[] = [];\n\n        switch (namedType.type) {\n            case \"undiscriminatedUnion\": {\n                // For undiscriminated unions, the body value should match one of the variants\n                // Try to convert it and extract the fields as keyword arguments\n                const bodyRecord = this.context.getRecord(bodyValue);\n                if (bodyRecord != null) {\n                    // The body is an object - try to find a matching variant and extract its fields\n                    for (const variant of namedType.types) {\n                        if (variant.type === \"named\") {\n                            const variantType = this.context.resolveNamedType({ typeId: variant.value });\n                            if (variantType != null && variantType.type === \"object\") {\n                                // Check if the body matches this variant's properties\n                                const variantProps = new Set(variantType.properties.map((p) => p.name.wireValue));\n                                const bodyKeys = Object.keys(bodyRecord);\n                                const allKeysMatch = bodyKeys.every((key) => variantProps.has(key));\n                                if (allKeysMatch && bodyKeys.length > 0) {\n                                    // This variant matches - flatten its fields\n                                    const bodyFields = this.getBodyFieldsAsKeywordArgs({\n                                        namedType: variantType,\n                                        bodyRecord\n                                    });\n                                    args.push(...bodyFields);\n                                    return args;\n                                }\n                            }\n                        }\n                    }\n                }\n                // If we couldn't match a variant or extract fields, convert the whole value\n                const convertedValue = this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: typeRef,\n                    value: bodyValue\n                });\n                if (!ruby.TypeLiteral.isNop(convertedValue)) {\n                    args.push(\n                        ruby.keywordArgument({\n                            name: \"request\",\n                            value: convertedValue\n                        })\n                    );\n                }\n                break;\n            }\n            case \"alias\": {\n                // For aliases, check if the underlying type is an object we can flatten\n                const aliasedType = namedType.typeReference;\n                if (aliasedType.type === \"named\") {\n                    const resolvedAliasType = this.context.resolveNamedType({ typeId: aliasedType.value });\n                    if (resolvedAliasType != null && resolvedAliasType.type === \"object\") {\n                        const bodyRecord = this.context.getRecord(bodyValue);\n                        if (bodyRecord != null) {\n                            const bodyFields = this.getBodyFieldsAsKeywordArgs({\n                                namedType: resolvedAliasType,\n                                bodyRecord\n                            });\n                            args.push(...bodyFields);\n                            return args;\n                        }\n                    }\n                }\n                // For non-object aliases (arrays, primitives, etc.), convert the whole value\n                const convertedValue = this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: typeRef,\n                    value: bodyValue\n                });\n                if (!ruby.TypeLiteral.isNop(convertedValue)) {\n                    args.push(\n                        ruby.keywordArgument({\n                            name: \"request\",\n                            value: convertedValue\n                        })\n                    );\n                }\n                break;\n            }\n            case \"discriminatedUnion\":\n            case \"enum\": {\n                // For discriminated unions and enums, convert the whole value\n                const convertedValue = this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: typeRef,\n                    value: bodyValue\n                });\n                if (!ruby.TypeLiteral.isNop(convertedValue)) {\n                    args.push(\n                        ruby.keywordArgument({\n                            name: \"request\",\n                            value: convertedValue\n                        })\n                    );\n                }\n                break;\n            }\n            case \"object\":\n                // This shouldn't happen as objects are handled separately\n                break;\n            default:\n                assertNever(namedType);\n        }\n\n        return args;\n    }\n\n    private getBodyFieldsAsKeywordArgs({\n        namedType,\n        bodyRecord\n    }: {\n        namedType: FernIr.dynamic.NamedType;\n        bodyRecord: Record<string, unknown>;\n    }): ruby.KeywordArgument[] {\n        const args: ruby.KeywordArgument[] = [];\n\n        // Handle different type shapes\n        switch (namedType.type) {\n            case \"object\": {\n                // For objects, convert each property to a keyword argument\n                for (const property of namedType.properties) {\n                    const wireValue = property.name.wireValue;\n                    const value = bodyRecord[wireValue];\n                    if (value !== undefined) {\n                        // Scope errors to the property name for better error messages\n                        this.context.errors.scope(wireValue);\n                        const convertedValue = this.context.dynamicTypeLiteralMapper.convert({\n                            typeReference: property.typeReference,\n                            value\n                        });\n                        this.context.errors.unscope();\n                        if (!ruby.TypeLiteral.isNop(convertedValue)) {\n                            args.push(\n                                ruby.keywordArgument({\n                                    name: this.context.getPropertyName(property.name.name),\n                                    value: convertedValue\n                                })\n                            );\n                        }\n                    }\n                }\n                break;\n            }\n            case \"alias\":\n            case \"discriminatedUnion\":\n            case \"undiscriminatedUnion\":\n            case \"enum\":\n                // For these types, we can't easily flatten to keyword args\n                // Fall back to passing the whole body as-is (this may need refinement)\n                break;\n            default:\n                assertNever(namedType);\n        }\n\n        return args;\n    }\n\n    private getMethod({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n        if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n            return `${endpoint.declaration.fernFilepath.allParts\n                .map((val) => `${this.context.getMethodName(val)}`)\n                .join(\".\")}.${this.context.getMethodName(endpoint.declaration.name)}`;\n        }\n        return this.context.getMethodName(endpoint.declaration.name);\n    }\n}\n","export const __dirname = \"/\";\n","function unimplemented(name) {\r\n  throw new Error('Node.js process ' + name + ' is not supported by JSPM core outside of Node.js');\r\n}\r\n\r\nvar queue = [];\r\nvar draining = false;\r\nvar currentQueue;\r\nvar queueIndex = -1;\r\n\r\nfunction cleanUpNextTick() {\r\n  if (!draining || !currentQueue)\r\n    return;\r\n  draining = false;\r\n  if (currentQueue.length) {\r\n    queue = currentQueue.concat(queue);\r\n  }\r\n  else {\r\n    queueIndex = -1;\r\n  }\r\n  if (queue.length)\r\n    drainQueue();\r\n}\r\n\r\nfunction drainQueue() {\r\n  if (draining)\r\n    return;\r\n  var timeout = setTimeout(cleanUpNextTick, 0);\r\n  draining = true;\r\n\r\n  var len = queue.length;\r\n  while(len) {\r\n    currentQueue = queue;\r\n    queue = [];\r\n    while (++queueIndex < len) {\r\n      if (currentQueue)\r\n        currentQueue[queueIndex].run();\r\n    }\r\n    queueIndex = -1;\r\n    len = queue.length;\r\n  }\r\n  currentQueue = null;\r\n  draining = false;\r\n  clearTimeout(timeout);\r\n}\r\n\r\nfunction nextTick (fun) {\r\n  var args = new Array(arguments.length - 1);\r\n  if (arguments.length > 1) {\r\n    for (var i = 1; i < arguments.length; i++)\r\n      args[i - 1] = arguments[i];\r\n  }\r\n  queue.push(new Item(fun, args));\r\n  if (queue.length === 1 && !draining)\r\n    setTimeout(drainQueue, 0);\r\n}\r\n// v8 likes predictible objects\r\nfunction Item(fun, array) {\r\n  this.fun = fun;\r\n  this.array = array;\r\n}\r\nItem.prototype.run = function () {\r\n  this.fun.apply(null, this.array);\r\n};\r\n\r\nvar title = 'browser';\r\nvar arch = 'x64';\r\nvar platform = 'browser';\r\nvar env = {\r\n  PATH: '/usr/bin',\r\n  LANG: typeof navigator !== 'undefined' ? navigator.language + '.UTF-8' : undefined,\r\n  PWD: '/',\r\n  HOME: '/home',\r\n  TMP: '/tmp',\r\n};\r\nvar argv = ['/usr/bin/node'];\r\nvar execArgv = [];\r\nvar version = 'v16.8.0';\r\nvar versions = {};\r\n\r\nvar emitWarning = function(message, type) {\r\n  console.warn((type ? (type + ': ') : '') + message);\r\n};\r\n\r\nvar binding = function(name) { unimplemented('binding'); };\r\n\r\nvar umask = function(mask) { return 0; };\r\n\r\nvar cwd = function() { return '/'; };\r\nvar chdir = function(dir) {};\r\n\r\nvar release = {\r\n  name: 'node',\r\n  sourceUrl: '',\r\n  headersUrl: '',\r\n  libUrl: '',\r\n};\r\n\r\nfunction noop() {}\r\n\r\nvar browser = true;\r\nvar _rawDebug = noop;\r\nvar moduleLoadList = [];\r\nfunction _linkedBinding(name) { unimplemented('_linkedBinding'); }\r\nvar domain = {};\r\nvar _exiting = false;\r\nvar config = {};\r\nfunction dlopen(name) { unimplemented('dlopen'); }\r\nfunction _getActiveRequests() { return []; }\r\nfunction _getActiveHandles() { return []; }\r\nvar reallyExit = noop;\r\nvar _kill = noop;\r\nvar cpuUsage = function() { return {}; };\r\nvar resourceUsage = cpuUsage;\r\nvar memoryUsage = cpuUsage;\r\nvar kill = noop;\r\nvar exit = noop;\r\nvar openStdin = noop;\r\nvar allowedNodeEnvironmentFlags = {};\r\nfunction assert(condition, message) {\r\n  if (!condition) throw new Error(message || 'assertion error');\r\n}\r\nvar features = {\r\n  inspector: false,\r\n  debug: false,\r\n  uv: false,\r\n  ipv6: false,\r\n  tls_alpn: false,\r\n  tls_sni: false,\r\n  tls_ocsp: false,\r\n  tls: false,\r\n  cached_builtins: true,\r\n};\r\nvar _fatalExceptions = noop;\r\nvar setUncaughtExceptionCaptureCallback = noop;\r\nfunction hasUncaughtExceptionCaptureCallback() { return false; }var _tickCallback = noop;\r\nvar _debugProcess = noop;\r\nvar _debugEnd = noop;\r\nvar _startProfilerIdleNotifier = noop;\r\nvar _stopProfilerIdleNotifier = noop;\r\nvar stdout = undefined;\r\nvar stderr = undefined;\r\nvar stdin = undefined;\r\nvar abort = noop;\r\nvar pid = 2;\r\nvar ppid = 1;\r\nvar execPath = '/bin/usr/node';\r\nvar debugPort = 9229;\r\nvar argv0 = 'node';\r\nvar _preload_modules = [];\r\nvar setSourceMapsEnabled = noop;\r\n\r\nvar _performance = {\r\n  now: typeof performance !== 'undefined' ? performance.now.bind(performance) : undefined,\r\n  timing: typeof performance !== 'undefined' ? performance.timing : undefined,\r\n};\r\nif (_performance.now === undefined) {\r\n  var nowOffset = Date.now();\r\n\r\n  if (_performance.timing && _performance.timing.navigationStart) {\r\n    nowOffset = _performance.timing.navigationStart;\r\n  }\r\n  _performance.now = () => Date.now() - nowOffset;\r\n}\r\n\r\nfunction uptime() {\r\n  return _performance.now() / 1000;\r\n}\r\n\r\nvar nanoPerSec = 1000000000;\r\nfunction hrtime(previousTimestamp) {\r\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\r\n  var clocktime = _performance.now() * 1e-3;\r\n  var seconds = Math.floor(clocktime) + baseNow;\r\n  var nanoseconds = Math.floor((clocktime % 1) * 1e9);\r\n  if (previousTimestamp) {\r\n    seconds = seconds - previousTimestamp[0];\r\n    nanoseconds = nanoseconds - previousTimestamp[1];\r\n    if (nanoseconds < 0) {\r\n      seconds--;\r\n      nanoseconds += nanoPerSec;\r\n    }\r\n  }\r\n  return [seconds, nanoseconds];\r\n}hrtime.bigint = function(time) {\r\n  var diff = hrtime(time);\r\n  if (typeof BigInt === 'undefined') {\r\n    return diff[0] * nanoPerSec + diff[1];\r\n  }\r\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\r\n};\r\n\r\nvar _maxListeners = 10;\r\nvar _events = {};\r\nvar _eventsCount = 0;\r\nfunction on () { return process }var addListener = on;\r\nvar once = on;\r\nvar off = on;\r\nvar removeListener = on;\r\nvar removeAllListeners = on;\r\nvar emit = noop;\r\nvar prependListener = on;\r\nvar prependOnceListener = on;\r\nfunction listeners (name) { return []; }\r\nvar process = {\r\n  version,\r\n  versions,\r\n  arch,\r\n  platform,\r\n  browser,\r\n  release,\r\n  _rawDebug,\r\n  moduleLoadList,\r\n  binding,\r\n  _linkedBinding,\r\n  _events,\r\n  _eventsCount,\r\n  _maxListeners,\r\n  on,\r\n  addListener,\r\n  once,\r\n  off,\r\n  removeListener,\r\n  removeAllListeners,\r\n  emit,\r\n  prependListener,\r\n  prependOnceListener,\r\n  listeners,\r\n  domain,\r\n  _exiting,\r\n  config,\r\n  dlopen,\r\n  uptime,\r\n  _getActiveRequests,\r\n  _getActiveHandles,\r\n  reallyExit,\r\n  _kill,\r\n  cpuUsage,\r\n  resourceUsage,\r\n  memoryUsage,\r\n  kill,\r\n  exit,\r\n  openStdin,\r\n  allowedNodeEnvironmentFlags,\r\n  assert,\r\n  features,\r\n  _fatalExceptions,\r\n  setUncaughtExceptionCaptureCallback,\r\n  hasUncaughtExceptionCaptureCallback,\r\n  emitWarning,\r\n  nextTick,\r\n  _tickCallback,\r\n  _debugProcess,\r\n  _debugEnd,\r\n  _startProfilerIdleNotifier,\r\n  _stopProfilerIdleNotifier,\r\n  stdout,\r\n  stdin,\r\n  stderr,\r\n  abort,\r\n  umask,\r\n  chdir,\r\n  cwd,\r\n  env,\r\n  title,\r\n  argv,\r\n  execArgv,\r\n  pid,\r\n  ppid,\r\n  execPath,\r\n  debugPort,\r\n  hrtime,\r\n  argv0,\r\n  _preload_modules,\r\n  setSourceMapsEnabled,\r\n};\n\nexport { _debugEnd, _debugProcess, _events, _eventsCount, _exiting, _fatalExceptions, _getActiveHandles, _getActiveRequests, _kill, _linkedBinding, _maxListeners, _preload_modules, _rawDebug, _startProfilerIdleNotifier, _stopProfilerIdleNotifier, _tickCallback, abort, addListener, allowedNodeEnvironmentFlags, arch, argv, argv0, assert, binding, browser, chdir, config, cpuUsage, cwd, debugPort, process as default, dlopen, domain, emit, emitWarning, env, execArgv, execPath, exit, features, hasUncaughtExceptionCaptureCallback, hrtime, kill, listeners, memoryUsage, moduleLoadList, nextTick, off, on, once, openStdin, pid, platform, ppid, prependListener, prependOnceListener, reallyExit, release, removeAllListeners, removeListener, resourceUsage, setSourceMapsEnabled, setUncaughtExceptionCaptureCallback, stderr, stdin, stdout, title, umask, uptime, version, versions };\n","export * as process from \"process\";\n","var exports$2 = {},\n  _dewExec$2 = false;\nfunction dew$2() {\n  if (_dewExec$2) return exports$2;\n  _dewExec$2 = true;\n  exports$2.byteLength = byteLength;\n  exports$2.toByteArray = toByteArray;\n  exports$2.fromByteArray = fromByteArray;\n  var lookup = [];\n  var revLookup = [];\n  var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i = 0, len = code.length; i < len; ++i) {\n    lookup[i] = code[i];\n    revLookup[code.charCodeAt(i)] = i;\n  }\n\n  // Support decoding URL-safe base64 strings, as Node.js does.\n  // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n  function getLens(b64) {\n    var len = b64.length;\n    if (len % 4 > 0) {\n      throw new Error(\"Invalid string. Length must be a multiple of 4\");\n    }\n\n    // Trim off extra bytes after placeholder bytes are found\n    // See: https://github.com/beatgammit/base64-js/issues/42\n    var validLen = b64.indexOf(\"=\");\n    if (validLen === -1) validLen = len;\n    var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n    return [validLen, placeHoldersLen];\n  }\n\n  // base64 is 4/3 + up to two characters of the original data\n  function byteLength(b64) {\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function _byteLength(b64, validLen, placeHoldersLen) {\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function toByteArray(b64) {\n    var tmp;\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n    var curByte = 0;\n\n    // if there are placeholders, only get up to the last complete 4 chars\n    var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n    var i;\n    for (i = 0; i < len; i += 4) {\n      tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n      arr[curByte++] = tmp >> 16 & 255;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 2) {\n      tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 1) {\n      tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    return arr;\n  }\n  function tripletToBase64(num) {\n    return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n  }\n  function encodeChunk(uint8, start, end) {\n    var tmp;\n    var output = [];\n    for (var i = start; i < end; i += 3) {\n      tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n      output.push(tripletToBase64(tmp));\n    }\n    return output.join(\"\");\n  }\n  function fromByteArray(uint8) {\n    var tmp;\n    var len = uint8.length;\n    var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n    var parts = [];\n    var maxChunkLength = 16383; // must be multiple of 3\n\n    // go through the array every three bytes, we'll deal with trailing stuff later\n    for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n      parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n    }\n\n    // pad the end with zeros, but make sure to not forget the extra bytes\n    if (extraBytes === 1) {\n      tmp = uint8[len - 1];\n      parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n    } else if (extraBytes === 2) {\n      tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n      parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n    }\n    return parts.join(\"\");\n  }\n  return exports$2;\n}\n\nvar exports$1 = {},\n  _dewExec$1 = false;\nfunction dew$1() {\n  if (_dewExec$1) return exports$1;\n  _dewExec$1 = true;\n  /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n  exports$1.read = function (buffer, offset, isLE, mLen, nBytes) {\n    var e, m;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i = isLE ? nBytes - 1 : 0;\n    var d = isLE ? -1 : 1;\n    var s = buffer[offset + i];\n    i += d;\n    e = s & (1 << -nBits) - 1;\n    s >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    m = e & (1 << -nBits) - 1;\n    e >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    if (e === 0) {\n      e = 1 - eBias;\n    } else if (e === eMax) {\n      return m ? NaN : (s ? -1 : 1) * Infinity;\n    } else {\n      m = m + Math.pow(2, mLen);\n      e = e - eBias;\n    }\n    return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n  };\n  exports$1.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n    var e, m, c;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n    var i = isLE ? 0 : nBytes - 1;\n    var d = isLE ? 1 : -1;\n    var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n      m = isNaN(value) ? 1 : 0;\n      e = eMax;\n    } else {\n      e = Math.floor(Math.log(value) / Math.LN2);\n      if (value * (c = Math.pow(2, -e)) < 1) {\n        e--;\n        c *= 2;\n      }\n      if (e + eBias >= 1) {\n        value += rt / c;\n      } else {\n        value += rt * Math.pow(2, 1 - eBias);\n      }\n      if (value * c >= 2) {\n        e++;\n        c /= 2;\n      }\n      if (e + eBias >= eMax) {\n        m = 0;\n        e = eMax;\n      } else if (e + eBias >= 1) {\n        m = (value * c - 1) * Math.pow(2, mLen);\n        e = e + eBias;\n      } else {\n        m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n        e = 0;\n      }\n    }\n    for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n    e = e << mLen | m;\n    eLen += mLen;\n    for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n    buffer[offset + i - d] |= s * 128;\n  };\n  return exports$1;\n}\n\nvar exports = {},\n  _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports;\n  _dewExec = true;\n  const base64 = dew$2();\n  const ieee754 = dew$1();\n  const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" // eslint-disable-line dot-notation\n  ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n  : null;\n  exports.Buffer = Buffer;\n  exports.SlowBuffer = SlowBuffer;\n  exports.INSPECT_MAX_BYTES = 50;\n  const K_MAX_LENGTH = 2147483647;\n  exports.kMaxLength = K_MAX_LENGTH;\n\n  /**\n   * If `Buffer.TYPED_ARRAY_SUPPORT`:\n   *   === true    Use Uint8Array implementation (fastest)\n   *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n   *               implementation (most compatible, even IE6)\n   *\n   * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n   * Opera 11.6+, iOS 4.2+.\n   *\n   * We report that the browser does not support typed arrays if the are not subclassable\n   * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n   * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n   * for __proto__ and has a buggy typed array implementation.\n   */\n  Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n  if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n  }\n  function typedArraySupport() {\n    // Can typed array instances can be augmented?\n    try {\n      const arr = new Uint8Array(1);\n      const proto = {\n        foo: function () {\n          return 42;\n        }\n      };\n      Object.setPrototypeOf(proto, Uint8Array.prototype);\n      Object.setPrototypeOf(arr, proto);\n      return arr.foo() === 42;\n    } catch (e) {\n      return false;\n    }\n  }\n  Object.defineProperty(Buffer.prototype, \"parent\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.buffer;\n    }\n  });\n  Object.defineProperty(Buffer.prototype, \"offset\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.byteOffset;\n    }\n  });\n  function createBuffer(length) {\n    if (length > K_MAX_LENGTH) {\n      throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n    // Return an augmented `Uint8Array` instance\n    const buf = new Uint8Array(length);\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n\n  /**\n   * The Buffer constructor returns instances of `Uint8Array` that have their\n   * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n   * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n   * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n   * returns a single octet.\n   *\n   * The `Uint8Array` prototype remains unmodified.\n   */\n\n  function Buffer(arg, encodingOrOffset, length) {\n    // Common case.\n    if (typeof arg === \"number\") {\n      if (typeof encodingOrOffset === \"string\") {\n        throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n      }\n      return allocUnsafe(arg);\n    }\n    return from(arg, encodingOrOffset, length);\n  }\n  Buffer.poolSize = 8192; // not used by this implementation\n\n  function from(value, encodingOrOffset, length) {\n    if (typeof value === \"string\") {\n      return fromString(value, encodingOrOffset);\n    }\n    if (ArrayBuffer.isView(value)) {\n      return fromArrayView(value);\n    }\n    if (value == null) {\n      throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n    }\n    if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof value === \"number\") {\n      throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n    }\n    const valueOf = value.valueOf && value.valueOf();\n    if (valueOf != null && valueOf !== value) {\n      return Buffer.from(valueOf, encodingOrOffset, length);\n    }\n    const b = fromObject(value);\n    if (b) return b;\n    if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n      return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n    }\n    throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n  }\n\n  /**\n   * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n   * if value is a number.\n   * Buffer.from(str[, encoding])\n   * Buffer.from(array)\n   * Buffer.from(buffer)\n   * Buffer.from(arrayBuffer[, byteOffset[, length]])\n   **/\n  Buffer.from = function (value, encodingOrOffset, length) {\n    return from(value, encodingOrOffset, length);\n  };\n\n  // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n  // https://github.com/feross/buffer/pull/148\n  Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n  Object.setPrototypeOf(Buffer, Uint8Array);\n  function assertSize(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n    } else if (size < 0) {\n      throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n  }\n  function alloc(size, fill, encoding) {\n    assertSize(size);\n    if (size <= 0) {\n      return createBuffer(size);\n    }\n    if (fill !== undefined) {\n      // Only pay attention to encoding if it's a string. This\n      // prevents accidentally sending in a number that would\n      // be interpreted as a start offset.\n      return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n    }\n    return createBuffer(size);\n  }\n\n  /**\n   * Creates a new filled Buffer instance.\n   * alloc(size[, fill[, encoding]])\n   **/\n  Buffer.alloc = function (size, fill, encoding) {\n    return alloc(size, fill, encoding);\n  };\n  function allocUnsafe(size) {\n    assertSize(size);\n    return createBuffer(size < 0 ? 0 : checked(size) | 0);\n  }\n\n  /**\n   * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n   * */\n  Buffer.allocUnsafe = function (size) {\n    return allocUnsafe(size);\n  };\n  /**\n   * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n   */\n  Buffer.allocUnsafeSlow = function (size) {\n    return allocUnsafe(size);\n  };\n  function fromString(string, encoding) {\n    if (typeof encoding !== \"string\" || encoding === \"\") {\n      encoding = \"utf8\";\n    }\n    if (!Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n    const length = byteLength(string, encoding) | 0;\n    let buf = createBuffer(length);\n    const actual = buf.write(string, encoding);\n    if (actual !== length) {\n      // Writing a hex string, for example, that contains invalid characters will\n      // cause everything after the first invalid character to be ignored. (e.g.\n      // 'abxxcd' will be treated as 'ab')\n      buf = buf.slice(0, actual);\n    }\n    return buf;\n  }\n  function fromArrayLike(array) {\n    const length = array.length < 0 ? 0 : checked(array.length) | 0;\n    const buf = createBuffer(length);\n    for (let i = 0; i < length; i += 1) {\n      buf[i] = array[i] & 255;\n    }\n    return buf;\n  }\n  function fromArrayView(arrayView) {\n    if (isInstance(arrayView, Uint8Array)) {\n      const copy = new Uint8Array(arrayView);\n      return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n    }\n    return fromArrayLike(arrayView);\n  }\n  function fromArrayBuffer(array, byteOffset, length) {\n    if (byteOffset < 0 || array.byteLength < byteOffset) {\n      throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n    }\n    if (array.byteLength < byteOffset + (length || 0)) {\n      throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n    }\n    let buf;\n    if (byteOffset === undefined && length === undefined) {\n      buf = new Uint8Array(array);\n    } else if (length === undefined) {\n      buf = new Uint8Array(array, byteOffset);\n    } else {\n      buf = new Uint8Array(array, byteOffset, length);\n    }\n\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function fromObject(obj) {\n    if (Buffer.isBuffer(obj)) {\n      const len = checked(obj.length) | 0;\n      const buf = createBuffer(len);\n      if (buf.length === 0) {\n        return buf;\n      }\n      obj.copy(buf, 0, 0, len);\n      return buf;\n    }\n    if (obj.length !== undefined) {\n      if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n        return createBuffer(0);\n      }\n      return fromArrayLike(obj);\n    }\n    if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n      return fromArrayLike(obj.data);\n    }\n  }\n  function checked(length) {\n    // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n    // length is NaN (which is otherwise coerced to zero.)\n    if (length >= K_MAX_LENGTH) {\n      throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n    }\n    return length | 0;\n  }\n  function SlowBuffer(length) {\n    if (+length != length) {\n      // eslint-disable-line eqeqeq\n      length = 0;\n    }\n    return Buffer.alloc(+length);\n  }\n  Buffer.isBuffer = function isBuffer(b) {\n    return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n  };\n  Buffer.compare = function compare(a, b) {\n    if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n    if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n    if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n      throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n    }\n    if (a === b) return 0;\n    let x = a.length;\n    let y = b.length;\n    for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n      if (a[i] !== b[i]) {\n        x = a[i];\n        y = b[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n  Buffer.isEncoding = function isEncoding(encoding) {\n    switch (String(encoding).toLowerCase()) {\n      case \"hex\":\n      case \"utf8\":\n      case \"utf-8\":\n      case \"ascii\":\n      case \"latin1\":\n      case \"binary\":\n      case \"base64\":\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return true;\n      default:\n        return false;\n    }\n  };\n  Buffer.concat = function concat(list, length) {\n    if (!Array.isArray(list)) {\n      throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n    }\n    if (list.length === 0) {\n      return Buffer.alloc(0);\n    }\n    let i;\n    if (length === undefined) {\n      length = 0;\n      for (i = 0; i < list.length; ++i) {\n        length += list[i].length;\n      }\n    }\n    const buffer = Buffer.allocUnsafe(length);\n    let pos = 0;\n    for (i = 0; i < list.length; ++i) {\n      let buf = list[i];\n      if (isInstance(buf, Uint8Array)) {\n        if (pos + buf.length > buffer.length) {\n          if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n          buf.copy(buffer, pos);\n        } else {\n          Uint8Array.prototype.set.call(buffer, buf, pos);\n        }\n      } else if (!Buffer.isBuffer(buf)) {\n        throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n      } else {\n        buf.copy(buffer, pos);\n      }\n      pos += buf.length;\n    }\n    return buffer;\n  };\n  function byteLength(string, encoding) {\n    if (Buffer.isBuffer(string)) {\n      return string.length;\n    }\n    if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n      return string.byteLength;\n    }\n    if (typeof string !== \"string\") {\n      throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n    }\n    const len = string.length;\n    const mustMatch = arguments.length > 2 && arguments[2] === true;\n    if (!mustMatch && len === 0) return 0;\n\n    // Use a for loop to avoid recursion\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return len;\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8ToBytes(string).length;\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return len * 2;\n        case \"hex\":\n          return len >>> 1;\n        case \"base64\":\n          return base64ToBytes(string).length;\n        default:\n          if (loweredCase) {\n            return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n          }\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.byteLength = byteLength;\n  function slowToString(encoding, start, end) {\n    let loweredCase = false;\n\n    // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n    // property of a typed array.\n\n    // This behaves neither like String nor Uint8Array in that we set start/end\n    // to their upper/lower bounds if the value passed is out of range.\n    // undefined is handled specially as per ECMA-262 6th Edition,\n    // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n    if (start === undefined || start < 0) {\n      start = 0;\n    }\n    // Return early if start > this.length. Done here to prevent potential uint32\n    // coercion fail below.\n    if (start > this.length) {\n      return \"\";\n    }\n    if (end === undefined || end > this.length) {\n      end = this.length;\n    }\n    if (end <= 0) {\n      return \"\";\n    }\n\n    // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n    end >>>= 0;\n    start >>>= 0;\n    if (end <= start) {\n      return \"\";\n    }\n    if (!encoding) encoding = \"utf8\";\n    while (true) {\n      switch (encoding) {\n        case \"hex\":\n          return hexSlice(this, start, end);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Slice(this, start, end);\n        case \"ascii\":\n          return asciiSlice(this, start, end);\n        case \"latin1\":\n        case \"binary\":\n          return latin1Slice(this, start, end);\n        case \"base64\":\n          return base64Slice(this, start, end);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return utf16leSlice(this, start, end);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (encoding + \"\").toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n\n  // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n  // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n  // reliably in a browserify context because there could be multiple different\n  // copies of the 'buffer' package in use. This method works even for Buffer\n  // instances that were created from another copy of the `buffer` package.\n  // See: https://github.com/feross/buffer/issues/154\n  Buffer.prototype._isBuffer = true;\n  function swap(b, n, m) {\n    const i = b[n];\n    b[n] = b[m];\n    b[m] = i;\n  }\n  Buffer.prototype.swap16 = function swap16() {\n    const len = this.length;\n    if (len % 2 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n    }\n    for (let i = 0; i < len; i += 2) {\n      swap(this, i, i + 1);\n    }\n    return this;\n  };\n  Buffer.prototype.swap32 = function swap32() {\n    const len = this.length;\n    if (len % 4 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n    }\n    for (let i = 0; i < len; i += 4) {\n      swap(this, i, i + 3);\n      swap(this, i + 1, i + 2);\n    }\n    return this;\n  };\n  Buffer.prototype.swap64 = function swap64() {\n    const len = this.length;\n    if (len % 8 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n    }\n    for (let i = 0; i < len; i += 8) {\n      swap(this, i, i + 7);\n      swap(this, i + 1, i + 6);\n      swap(this, i + 2, i + 5);\n      swap(this, i + 3, i + 4);\n    }\n    return this;\n  };\n  Buffer.prototype.toString = function toString() {\n    const length = this.length;\n    if (length === 0) return \"\";\n    if (arguments.length === 0) return utf8Slice(this, 0, length);\n    return slowToString.apply(this, arguments);\n  };\n  Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n  Buffer.prototype.equals = function equals(b) {\n    if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n    if (this === b) return true;\n    return Buffer.compare(this, b) === 0;\n  };\n  Buffer.prototype.inspect = function inspect() {\n    let str = \"\";\n    const max = exports.INSPECT_MAX_BYTES;\n    str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n    if (this.length > max) str += \" ... \";\n    return \"<Buffer \" + str + \">\";\n  };\n  if (customInspectSymbol) {\n    Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n  }\n  Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n    if (isInstance(target, Uint8Array)) {\n      target = Buffer.from(target, target.offset, target.byteLength);\n    }\n    if (!Buffer.isBuffer(target)) {\n      throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n    }\n    if (start === undefined) {\n      start = 0;\n    }\n    if (end === undefined) {\n      end = target ? target.length : 0;\n    }\n    if (thisStart === undefined) {\n      thisStart = 0;\n    }\n    if (thisEnd === undefined) {\n      thisEnd = this.length;\n    }\n    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n      throw new RangeError(\"out of range index\");\n    }\n    if (thisStart >= thisEnd && start >= end) {\n      return 0;\n    }\n    if (thisStart >= thisEnd) {\n      return -1;\n    }\n    if (start >= end) {\n      return 1;\n    }\n    start >>>= 0;\n    end >>>= 0;\n    thisStart >>>= 0;\n    thisEnd >>>= 0;\n    if (this === target) return 0;\n    let x = thisEnd - thisStart;\n    let y = end - start;\n    const len = Math.min(x, y);\n    const thisCopy = this.slice(thisStart, thisEnd);\n    const targetCopy = target.slice(start, end);\n    for (let i = 0; i < len; ++i) {\n      if (thisCopy[i] !== targetCopy[i]) {\n        x = thisCopy[i];\n        y = targetCopy[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n\n  // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n  // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n  //\n  // Arguments:\n  // - buffer - a Buffer to search\n  // - val - a string, Buffer, or number\n  // - byteOffset - an index into `buffer`; will be clamped to an int32\n  // - encoding - an optional encoding, relevant is val is a string\n  // - dir - true for indexOf, false for lastIndexOf\n  function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n    // Empty buffer means no match\n    if (buffer.length === 0) return -1;\n\n    // Normalize byteOffset\n    if (typeof byteOffset === \"string\") {\n      encoding = byteOffset;\n      byteOffset = 0;\n    } else if (byteOffset > 2147483647) {\n      byteOffset = 2147483647;\n    } else if (byteOffset < -2147483648) {\n      byteOffset = -2147483648;\n    }\n    byteOffset = +byteOffset; // Coerce to Number.\n    if (numberIsNaN(byteOffset)) {\n      // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n      byteOffset = dir ? 0 : buffer.length - 1;\n    }\n\n    // Normalize byteOffset: negative offsets start from the end of the buffer\n    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n    if (byteOffset >= buffer.length) {\n      if (dir) return -1;else byteOffset = buffer.length - 1;\n    } else if (byteOffset < 0) {\n      if (dir) byteOffset = 0;else return -1;\n    }\n\n    // Normalize val\n    if (typeof val === \"string\") {\n      val = Buffer.from(val, encoding);\n    }\n\n    // Finally, search either indexOf (if dir is true) or lastIndexOf\n    if (Buffer.isBuffer(val)) {\n      // Special case: looking for empty string/buffer always fails\n      if (val.length === 0) {\n        return -1;\n      }\n      return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n    } else if (typeof val === \"number\") {\n      val = val & 255; // Search for a byte value [0-255]\n      if (typeof Uint8Array.prototype.indexOf === \"function\") {\n        if (dir) {\n          return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n        } else {\n          return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n        }\n      }\n      return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n    }\n    throw new TypeError(\"val must be string, number or Buffer\");\n  }\n  function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n    let indexSize = 1;\n    let arrLength = arr.length;\n    let valLength = val.length;\n    if (encoding !== undefined) {\n      encoding = String(encoding).toLowerCase();\n      if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n        if (arr.length < 2 || val.length < 2) {\n          return -1;\n        }\n        indexSize = 2;\n        arrLength /= 2;\n        valLength /= 2;\n        byteOffset /= 2;\n      }\n    }\n    function read(buf, i) {\n      if (indexSize === 1) {\n        return buf[i];\n      } else {\n        return buf.readUInt16BE(i * indexSize);\n      }\n    }\n    let i;\n    if (dir) {\n      let foundIndex = -1;\n      for (i = byteOffset; i < arrLength; i++) {\n        if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n          if (foundIndex === -1) foundIndex = i;\n          if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n        } else {\n          if (foundIndex !== -1) i -= i - foundIndex;\n          foundIndex = -1;\n        }\n      }\n    } else {\n      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n      for (i = byteOffset; i >= 0; i--) {\n        let found = true;\n        for (let j = 0; j < valLength; j++) {\n          if (read(arr, i + j) !== read(val, j)) {\n            found = false;\n            break;\n          }\n        }\n        if (found) return i;\n      }\n    }\n    return -1;\n  }\n  Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n    return this.indexOf(val, byteOffset, encoding) !== -1;\n  };\n  Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n  };\n  Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n  };\n  function hexWrite(buf, string, offset, length) {\n    offset = Number(offset) || 0;\n    const remaining = buf.length - offset;\n    if (!length) {\n      length = remaining;\n    } else {\n      length = Number(length);\n      if (length > remaining) {\n        length = remaining;\n      }\n    }\n    const strLen = string.length;\n    if (length > strLen / 2) {\n      length = strLen / 2;\n    }\n    let i;\n    for (i = 0; i < length; ++i) {\n      const parsed = parseInt(string.substr(i * 2, 2), 16);\n      if (numberIsNaN(parsed)) return i;\n      buf[offset + i] = parsed;\n    }\n    return i;\n  }\n  function utf8Write(buf, string, offset, length) {\n    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  function asciiWrite(buf, string, offset, length) {\n    return blitBuffer(asciiToBytes(string), buf, offset, length);\n  }\n  function base64Write(buf, string, offset, length) {\n    return blitBuffer(base64ToBytes(string), buf, offset, length);\n  }\n  function ucs2Write(buf, string, offset, length) {\n    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  Buffer.prototype.write = function write(string, offset, length, encoding) {\n    // Buffer#write(string)\n    if (offset === undefined) {\n      encoding = \"utf8\";\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, encoding)\n    } else if (length === undefined && typeof offset === \"string\") {\n      encoding = offset;\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, offset[, length][, encoding])\n    } else if (isFinite(offset)) {\n      offset = offset >>> 0;\n      if (isFinite(length)) {\n        length = length >>> 0;\n        if (encoding === undefined) encoding = \"utf8\";\n      } else {\n        encoding = length;\n        length = undefined;\n      }\n    } else {\n      throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    }\n    const remaining = this.length - offset;\n    if (length === undefined || length > remaining) length = remaining;\n    if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n      throw new RangeError(\"Attempt to write outside buffer bounds\");\n    }\n    if (!encoding) encoding = \"utf8\";\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"hex\":\n          return hexWrite(this, string, offset, length);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Write(this, string, offset, length);\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return asciiWrite(this, string, offset, length);\n        case \"base64\":\n          // Warning: maxLength not taken into account in base64Write\n          return base64Write(this, string, offset, length);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return ucs2Write(this, string, offset, length);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  };\n  Buffer.prototype.toJSON = function toJSON() {\n    return {\n      type: \"Buffer\",\n      data: Array.prototype.slice.call(this._arr || this, 0)\n    };\n  };\n  function base64Slice(buf, start, end) {\n    if (start === 0 && end === buf.length) {\n      return base64.fromByteArray(buf);\n    } else {\n      return base64.fromByteArray(buf.slice(start, end));\n    }\n  }\n  function utf8Slice(buf, start, end) {\n    end = Math.min(buf.length, end);\n    const res = [];\n    let i = start;\n    while (i < end) {\n      const firstByte = buf[i];\n      let codePoint = null;\n      let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n      if (i + bytesPerSequence <= end) {\n        let secondByte, thirdByte, fourthByte, tempCodePoint;\n        switch (bytesPerSequence) {\n          case 1:\n            if (firstByte < 128) {\n              codePoint = firstByte;\n            }\n            break;\n          case 2:\n            secondByte = buf[i + 1];\n            if ((secondByte & 192) === 128) {\n              tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n              if (tempCodePoint > 127) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 3:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n              if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 4:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            fourthByte = buf[i + 3];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n              if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n                codePoint = tempCodePoint;\n              }\n            }\n        }\n      }\n      if (codePoint === null) {\n        // we did not generate a valid codePoint so insert a\n        // replacement char (U+FFFD) and advance only 1 byte\n        codePoint = 65533;\n        bytesPerSequence = 1;\n      } else if (codePoint > 65535) {\n        // encode to utf16 (surrogate pair dance)\n        codePoint -= 65536;\n        res.push(codePoint >>> 10 & 1023 | 55296);\n        codePoint = 56320 | codePoint & 1023;\n      }\n      res.push(codePoint);\n      i += bytesPerSequence;\n    }\n    return decodeCodePointsArray(res);\n  }\n\n  // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n  // the lowest limit is Chrome, with 0x10000 args.\n  // We go 1 magnitude less, for safety\n  const MAX_ARGUMENTS_LENGTH = 4096;\n  function decodeCodePointsArray(codePoints) {\n    const len = codePoints.length;\n    if (len <= MAX_ARGUMENTS_LENGTH) {\n      return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n    }\n\n    // Decode in chunks to avoid \"call stack size exceeded\".\n    let res = \"\";\n    let i = 0;\n    while (i < len) {\n      res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n    }\n    return res;\n  }\n  function asciiSlice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i] & 127);\n    }\n    return ret;\n  }\n  function latin1Slice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i]);\n    }\n    return ret;\n  }\n  function hexSlice(buf, start, end) {\n    const len = buf.length;\n    if (!start || start < 0) start = 0;\n    if (!end || end < 0 || end > len) end = len;\n    let out = \"\";\n    for (let i = start; i < end; ++i) {\n      out += hexSliceLookupTable[buf[i]];\n    }\n    return out;\n  }\n  function utf16leSlice(buf, start, end) {\n    const bytes = buf.slice(start, end);\n    let res = \"\";\n    // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n    for (let i = 0; i < bytes.length - 1; i += 2) {\n      res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n    }\n    return res;\n  }\n  Buffer.prototype.slice = function slice(start, end) {\n    const len = this.length;\n    start = ~~start;\n    end = end === undefined ? len : ~~end;\n    if (start < 0) {\n      start += len;\n      if (start < 0) start = 0;\n    } else if (start > len) {\n      start = len;\n    }\n    if (end < 0) {\n      end += len;\n      if (end < 0) end = 0;\n    } else if (end > len) {\n      end = len;\n    }\n    if (end < start) end = start;\n    const newBuf = this.subarray(start, end);\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(newBuf, Buffer.prototype);\n    return newBuf;\n  };\n\n  /*\n   * Need to make sure that buffer isn't trying to write out of bounds.\n   */\n  function checkOffset(offset, ext, length) {\n    if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n    if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n  }\n  Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      checkOffset(offset, byteLength, this.length);\n    }\n    let val = this[offset + --byteLength];\n    let mul = 1;\n    while (byteLength > 0 && (mul *= 256)) {\n      val += this[offset + --byteLength] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    return this[offset];\n  };\n  Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] | this[offset + 1] << 8;\n  };\n  Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] << 8 | this[offset + 1];\n  };\n  Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n  };\n  Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n  };\n  Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n    const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n    return BigInt(lo) + (BigInt(hi) << BigInt(32));\n  });\n  Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n    return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  });\n  Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let i = byteLength;\n    let mul = 1;\n    let val = this[offset + --i];\n    while (i > 0 && (mul *= 256)) {\n      val += this[offset + --i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    if (!(this[offset] & 128)) return this[offset];\n    return (255 - this[offset] + 1) * -1;\n  };\n  Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset] | this[offset + 1] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset + 1] | this[offset] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n  };\n  Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n  };\n  Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n    return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n  });\n  Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = (first << 24) +\n    // Overflow\n    this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n  });\n  Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, true, 23, 4);\n  };\n  Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, false, 23, 4);\n  };\n  Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, true, 52, 8);\n  };\n  Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, false, 52, 8);\n  };\n  function checkInt(buf, value, offset, ext, max, min) {\n    if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n    if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n  }\n  Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let mul = 1;\n    let i = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  function wrtBigUInt64LE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    return offset;\n  }\n  function wrtBigUInt64BE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset + 7] = lo;\n    lo = lo >> 8;\n    buf[offset + 6] = lo;\n    lo = lo >> 8;\n    buf[offset + 5] = lo;\n    lo = lo >> 8;\n    buf[offset + 4] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset + 3] = hi;\n    hi = hi >> 8;\n    buf[offset + 2] = hi;\n    hi = hi >> 8;\n    buf[offset + 1] = hi;\n    hi = hi >> 8;\n    buf[offset] = hi;\n    return offset + 8;\n  }\n  Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = 0;\n    let mul = 1;\n    let sub = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    let sub = 0;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n    if (value < 0) value = 255 + value + 1;\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n    return offset + 4;\n  };\n  Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    if (value < 0) value = 4294967295 + value + 1;\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  function checkIEEE754(buf, value, offset, ext, max, min) {\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n    if (offset < 0) throw new RangeError(\"Index out of range\");\n  }\n  function writeFloat(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 4);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 23, 4);\n    return offset + 4;\n  }\n  Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, false, noAssert);\n  };\n  function writeDouble(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 8);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 52, 8);\n    return offset + 8;\n  }\n  Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, false, noAssert);\n  };\n\n  // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n  Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n    if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n    if (!start) start = 0;\n    if (!end && end !== 0) end = this.length;\n    if (targetStart >= target.length) targetStart = target.length;\n    if (!targetStart) targetStart = 0;\n    if (end > 0 && end < start) end = start;\n\n    // Copy 0 bytes; we're done\n    if (end === start) return 0;\n    if (target.length === 0 || this.length === 0) return 0;\n\n    // Fatal error conditions\n    if (targetStart < 0) {\n      throw new RangeError(\"targetStart out of bounds\");\n    }\n    if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n    if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n\n    // Are we oob?\n    if (end > this.length) end = this.length;\n    if (target.length - targetStart < end - start) {\n      end = target.length - targetStart + start;\n    }\n    const len = end - start;\n    if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n      // Use built-in when available, missing from IE11\n      this.copyWithin(targetStart, start, end);\n    } else {\n      Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n    }\n    return len;\n  };\n\n  // Usage:\n  //    buffer.fill(number[, offset[, end]])\n  //    buffer.fill(buffer[, offset[, end]])\n  //    buffer.fill(string[, offset[, end]][, encoding])\n  Buffer.prototype.fill = function fill(val, start, end, encoding) {\n    // Handle string cases:\n    if (typeof val === \"string\") {\n      if (typeof start === \"string\") {\n        encoding = start;\n        start = 0;\n        end = this.length;\n      } else if (typeof end === \"string\") {\n        encoding = end;\n        end = this.length;\n      }\n      if (encoding !== undefined && typeof encoding !== \"string\") {\n        throw new TypeError(\"encoding must be a string\");\n      }\n      if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n        throw new TypeError(\"Unknown encoding: \" + encoding);\n      }\n      if (val.length === 1) {\n        const code = val.charCodeAt(0);\n        if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n          // Fast path: If `val` fits into a single byte, use that numeric value.\n          val = code;\n        }\n      }\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n    } else if (typeof val === \"boolean\") {\n      val = Number(val);\n    }\n\n    // Invalid ranges are not set to a default, so can range check early.\n    if (start < 0 || this.length < start || this.length < end) {\n      throw new RangeError(\"Out of range index\");\n    }\n    if (end <= start) {\n      return this;\n    }\n    start = start >>> 0;\n    end = end === undefined ? this.length : end >>> 0;\n    if (!val) val = 0;\n    let i;\n    if (typeof val === \"number\") {\n      for (i = start; i < end; ++i) {\n        this[i] = val;\n      }\n    } else {\n      const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n      const len = bytes.length;\n      if (len === 0) {\n        throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n      }\n      for (i = 0; i < end - start; ++i) {\n        this[i + start] = bytes[i % len];\n      }\n    }\n    return this;\n  };\n\n  // CUSTOM ERRORS\n  // =============\n\n  // Simplified versions from Node, changed for Buffer-only usage\n  const errors = {};\n  function E(sym, getMessage, Base) {\n    errors[sym] = class NodeError extends Base {\n      constructor() {\n        super();\n        Object.defineProperty(this, \"message\", {\n          value: getMessage.apply(this, arguments),\n          writable: true,\n          configurable: true\n        });\n\n        // Add the error code to the name to include it in the stack trace.\n        this.name = `${this.name} [${sym}]`;\n        // Access the stack to generate the error message including the error code\n        // from the name.\n        this.stack; // eslint-disable-line no-unused-expressions\n        // Reset the name to the actual name.\n        delete this.name;\n      }\n      get code() {\n        return sym;\n      }\n      set code(value) {\n        Object.defineProperty(this, \"code\", {\n          configurable: true,\n          enumerable: true,\n          value,\n          writable: true\n        });\n      }\n      toString() {\n        return `${this.name} [${sym}]: ${this.message}`;\n      }\n    };\n  }\n  E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`;\n    }\n    return \"Attempt to access memory outside buffer bounds\";\n  }, RangeError);\n  E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n  }, TypeError);\n  E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`;\n    let received = input;\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input));\n    } else if (typeof input === \"bigint\") {\n      received = String(input);\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received);\n      }\n      received += \"n\";\n    }\n    msg += ` It must be ${range}. Received ${received}`;\n    return msg;\n  }, RangeError);\n  function addNumericalSeparator(val) {\n    let res = \"\";\n    let i = val.length;\n    const start = val[0] === \"-\" ? 1 : 0;\n    for (; i >= start + 4; i -= 3) {\n      res = `_${val.slice(i - 3, i)}${res}`;\n    }\n    return `${val.slice(0, i)}${res}`;\n  }\n\n  // CHECK FUNCTIONS\n  // ===============\n\n  function checkBounds(buf, offset, byteLength) {\n    validateNumber(offset, \"offset\");\n    if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n      boundsError(offset, buf.length - (byteLength + 1));\n    }\n  }\n  function checkIntBI(value, min, max, buf, offset, byteLength) {\n    if (value > max || value < min) {\n      const n = typeof min === \"bigint\" ? \"n\" : \"\";\n      let range;\n      {\n        if (min === 0 || min === BigInt(0)) {\n          range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n        } else {\n          range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n        }\n      }\n      throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n    }\n    checkBounds(buf, offset, byteLength);\n  }\n  function validateNumber(value, name) {\n    if (typeof value !== \"number\") {\n      throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n    }\n  }\n  function boundsError(value, length, type) {\n    if (Math.floor(value) !== value) {\n      validateNumber(value, type);\n      throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n    }\n    if (length < 0) {\n      throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n    }\n    throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n  }\n\n  // HELPER FUNCTIONS\n  // ================\n\n  const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n  function base64clean(str) {\n    // Node takes equal signs as end of the Base64 encoding\n    str = str.split(\"=\")[0];\n    // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n    str = str.trim().replace(INVALID_BASE64_RE, \"\");\n    // Node converts strings with length < 2 to ''\n    if (str.length < 2) return \"\";\n    // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n    while (str.length % 4 !== 0) {\n      str = str + \"=\";\n    }\n    return str;\n  }\n  function utf8ToBytes(string, units) {\n    units = units || Infinity;\n    let codePoint;\n    const length = string.length;\n    let leadSurrogate = null;\n    const bytes = [];\n    for (let i = 0; i < length; ++i) {\n      codePoint = string.charCodeAt(i);\n\n      // is surrogate component\n      if (codePoint > 55295 && codePoint < 57344) {\n        // last char was a lead\n        if (!leadSurrogate) {\n          // no lead yet\n          if (codePoint > 56319) {\n            // unexpected trail\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          } else if (i + 1 === length) {\n            // unpaired lead\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          }\n\n          // valid lead\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // 2 leads in a row\n        if (codePoint < 56320) {\n          if ((units -= 3) > -1) bytes.push(239, 191, 189);\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // valid surrogate pair\n        codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n      } else if (leadSurrogate) {\n        // valid bmp char, but last char was a lead\n        if ((units -= 3) > -1) bytes.push(239, 191, 189);\n      }\n      leadSurrogate = null;\n\n      // encode utf8\n      if (codePoint < 128) {\n        if ((units -= 1) < 0) break;\n        bytes.push(codePoint);\n      } else if (codePoint < 2048) {\n        if ((units -= 2) < 0) break;\n        bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n      } else if (codePoint < 65536) {\n        if ((units -= 3) < 0) break;\n        bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else if (codePoint < 1114112) {\n        if ((units -= 4) < 0) break;\n        bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else {\n        throw new Error(\"Invalid code point\");\n      }\n    }\n    return bytes;\n  }\n  function asciiToBytes(str) {\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      // Node's code seems to be doing this and not & 0x7F..\n      byteArray.push(str.charCodeAt(i) & 255);\n    }\n    return byteArray;\n  }\n  function utf16leToBytes(str, units) {\n    let c, hi, lo;\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      if ((units -= 2) < 0) break;\n      c = str.charCodeAt(i);\n      hi = c >> 8;\n      lo = c % 256;\n      byteArray.push(lo);\n      byteArray.push(hi);\n    }\n    return byteArray;\n  }\n  function base64ToBytes(str) {\n    return base64.toByteArray(base64clean(str));\n  }\n  function blitBuffer(src, dst, offset, length) {\n    let i;\n    for (i = 0; i < length; ++i) {\n      if (i + offset >= dst.length || i >= src.length) break;\n      dst[i + offset] = src[i];\n    }\n    return i;\n  }\n\n  // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n  // the `instanceof` check but they should be treated as of that type.\n  // See: https://github.com/feross/buffer/issues/166\n  function isInstance(obj, type) {\n    return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n  }\n  function numberIsNaN(obj) {\n    // For IE11 support\n    return obj !== obj; // eslint-disable-line no-self-compare\n  }\n\n  // Create lookup table for `toString('hex')`\n  // See: https://github.com/feross/buffer/issues/219\n  const hexSliceLookupTable = function () {\n    const alphabet = \"0123456789abcdef\";\n    const table = new Array(256);\n    for (let i = 0; i < 16; ++i) {\n      const i16 = i * 16;\n      for (let j = 0; j < 16; ++j) {\n        table[i16 + j] = alphabet[i] + alphabet[j];\n      }\n    }\n    return table;\n  }();\n\n  // Return not function with Error if BigInt not supported\n  function defineBigIntMethod(fn) {\n    return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n  }\n  function BufferBigIntNotDefined() {\n    throw new Error(\"BigInt not supported\");\n  }\n  return exports;\n}\n\nexport { dew as d };\n","import { d as dew } from './chunk-DtuTasat.js';\n\nconst exports = dew();\nexports['Buffer']; exports['SlowBuffer']; exports['INSPECT_MAX_BYTES']; exports['kMaxLength'];\n\nvar Buffer = exports.Buffer;\r\nvar INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;\r\nvar kMaxLength = exports.kMaxLength;\n\nexport { Buffer, INSPECT_MAX_BYTES, exports as default, kMaxLength };\n","export { Buffer } from \"buffer\";\n","'use strict';\n\n// Simplified https://gist.github.com/marlun78/885eb0021e980c6ce0fb\nfunction isFinite(value) {\n    return !(typeof value !== 'number' || value !== value || value === Infinity || value === -Infinity);\n}\n\nmodule.exports = isFinite;\n","'use strict';\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\nmodule.exports = MAX_SAFE_INTEGER;\n","'use strict';\n\nvar MAX_SAFE_INTEGER = require('./maxSafeInteger');\n\nfunction isSafeNumber(value) {\n    return typeof value === 'number' && Math.abs(value) <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isSafeNumber;\n","'use strict';\n\nvar isFinite = require('./isFinite');\nvar isSafeNumber = require('./isSafeNumber');\n\n/**\n * Converts an integer into a string with an ordinal postfix.\n * If number is decimal, the decimals will be removed.\n * @example toOrdinal(12) => '12th'\n * @param {number|string} number\n * @returns {string}\n */\nfunction toOrdinal(number) {\n    var num = parseInt(number, 10);\n\n    if (!isFinite(num)) {\n        throw new TypeError(\n            'Not a finite number: ' + number + ' (' + typeof number + ')'\n        );\n    }\n    if (!isSafeNumber(num)) {\n        throw new RangeError(\n            'Input is not a safe number, it’s either too large or too small.'\n        );\n    }\n    var str = String(num);\n    var lastTwoDigits = Math.abs(num % 100);\n    var betweenElevenAndThirteen = lastTwoDigits >= 11 && lastTwoDigits <= 13;\n    var lastChar = str.charAt(str.length - 1);\n    return str + (betweenElevenAndThirteen ? 'th'\n            : lastChar === '1' ? 'st'\n            : lastChar === '2' ? 'nd'\n            : lastChar === '3' ? 'rd'\n            : 'th');\n}\n\nmodule.exports = toOrdinal;\n","'use strict';\n\nvar ENDS_WITH_DOUBLE_ZERO_PATTERN = /(hundred|thousand|(m|b|tr|quadr)illion)$/;\nvar ENDS_WITH_TEEN_PATTERN = /teen$/;\nvar ENDS_WITH_Y_PATTERN = /y$/;\nvar ENDS_WITH_ZERO_THROUGH_TWELVE_PATTERN = /(zero|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve)$/;\nvar ordinalLessThanThirteen = {\n    zero: 'zeroth',\n    one: 'first',\n    two: 'second',\n    three: 'third',\n    four: 'fourth',\n    five: 'fifth',\n    six: 'sixth',\n    seven: 'seventh',\n    eight: 'eighth',\n    nine: 'ninth',\n    ten: 'tenth',\n    eleven: 'eleventh',\n    twelve: 'twelfth'\n};\n\n/**\n * Converts a number-word into an ordinal number-word.\n * @example makeOrdinal('one') => 'first'\n * @param {string} words\n * @returns {string}\n */\nfunction makeOrdinal(words) {\n    // Ends with *00 (100, 1000, etc.) or *teen (13, 14, 15, 16, 17, 18, 19)\n    if (ENDS_WITH_DOUBLE_ZERO_PATTERN.test(words) || ENDS_WITH_TEEN_PATTERN.test(words)) {\n        return words + 'th';\n    }\n    // Ends with *y (20, 30, 40, 50, 60, 70, 80, 90)\n    else if (ENDS_WITH_Y_PATTERN.test(words)) {\n        return words.replace(ENDS_WITH_Y_PATTERN, 'ieth');\n    }\n    // Ends with one through twelve\n    else if (ENDS_WITH_ZERO_THROUGH_TWELVE_PATTERN.test(words)) {\n        return words.replace(ENDS_WITH_ZERO_THROUGH_TWELVE_PATTERN, replaceWithOrdinalVariant);\n    }\n    return words;\n}\n\nfunction replaceWithOrdinalVariant(match, numberWord) {\n    return ordinalLessThanThirteen[numberWord];\n}\n\nmodule.exports = makeOrdinal;\n","'use strict';\n\nvar makeOrdinal = require('./makeOrdinal');\nvar isFinite = require('./isFinite');\nvar isSafeNumber = require('./isSafeNumber');\n\nvar TEN = 10;\nvar ONE_HUNDRED = 100;\nvar ONE_THOUSAND = 1000;\nvar ONE_MILLION = 1000000;\nvar ONE_BILLION = 1000000000;           //         1.000.000.000 (9)\nvar ONE_TRILLION = 1000000000000;       //     1.000.000.000.000 (12)\nvar ONE_QUADRILLION = 1000000000000000; // 1.000.000.000.000.000 (15)\nvar MAX = 9007199254740992;             // 9.007.199.254.740.992 (15)\n\nvar LESS_THAN_TWENTY = [\n    'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten',\n    'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'\n];\n\nvar TENTHS_LESS_THAN_HUNDRED = [\n    'zero', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'\n];\n\n/**\n * Converts an integer into words.\n * If number is decimal, the decimals will be removed.\n * @example toWords(12) => 'twelve'\n * @param {number|string} number\n * @param {boolean} [asOrdinal] - Deprecated, use toWordsOrdinal() instead!\n * @returns {string}\n */\nfunction toWords(number, asOrdinal) {\n    var words;\n    var num = parseInt(number, 10);\n\n    if (!isFinite(num)) {\n        throw new TypeError(\n            'Not a finite number: ' + number + ' (' + typeof number + ')'\n        );\n    }\n    if (!isSafeNumber(num)) {\n        throw new RangeError(\n            'Input is not a safe number, it’s either too large or too small.'\n        );\n    }\n    words = generateWords(num);\n    return asOrdinal ? makeOrdinal(words) : words;\n}\n\nfunction generateWords(number) {\n    var remainder, word,\n        words = arguments[1];\n\n    // We’re done\n    if (number === 0) {\n        return !words ? 'zero' : words.join(' ').replace(/,$/, '');\n    }\n    // First run\n    if (!words) {\n        words = [];\n    }\n    // If negative, prepend “minus”\n    if (number < 0) {\n        words.push('minus');\n        number = Math.abs(number);\n    }\n\n    if (number < 20) {\n        remainder = 0;\n        word = LESS_THAN_TWENTY[number];\n\n    } else if (number < ONE_HUNDRED) {\n        remainder = number % TEN;\n        word = TENTHS_LESS_THAN_HUNDRED[Math.floor(number / TEN)];\n        // In case of remainder, we need to handle it here to be able to add the “-”\n        if (remainder) {\n            word += '-' + LESS_THAN_TWENTY[remainder];\n            remainder = 0;\n        }\n\n    } else if (number < ONE_THOUSAND) {\n        remainder = number % ONE_HUNDRED;\n        word = generateWords(Math.floor(number / ONE_HUNDRED)) + ' hundred';\n\n    } else if (number < ONE_MILLION) {\n        remainder = number % ONE_THOUSAND;\n        word = generateWords(Math.floor(number / ONE_THOUSAND)) + ' thousand,';\n\n    } else if (number < ONE_BILLION) {\n        remainder = number % ONE_MILLION;\n        word = generateWords(Math.floor(number / ONE_MILLION)) + ' million,';\n\n    } else if (number < ONE_TRILLION) {\n        remainder = number % ONE_BILLION;\n        word = generateWords(Math.floor(number / ONE_BILLION)) + ' billion,';\n\n    } else if (number < ONE_QUADRILLION) {\n        remainder = number % ONE_TRILLION;\n        word = generateWords(Math.floor(number / ONE_TRILLION)) + ' trillion,';\n\n    } else if (number <= MAX) {\n        remainder = number % ONE_QUADRILLION;\n        word = generateWords(Math.floor(number / ONE_QUADRILLION)) +\n        ' quadrillion,';\n    }\n\n    words.push(word);\n    return generateWords(remainder, words);\n}\n\nmodule.exports = toWords;\n","'use strict';\n\nvar makeOrdinal = require('./makeOrdinal');\nvar toWords = require('./toWords');\n\n/**\n * Converts a number into ordinal words.\n * @example toWordsOrdinal(12) => 'twelfth'\n * @param {number|string} number\n * @returns {string}\n */\nfunction toWordsOrdinal(number) {\n    var words = toWords(number);\n    return makeOrdinal(words);\n}\n\nmodule.exports = toWordsOrdinal;\n","'use strict'; \n\nmodule.exports = {\n    toOrdinal: require('./toOrdinal'),\n    toWords: require('./toWords'),\n    toWordsOrdinal: require('./toWordsOrdinal')\n};\n","export { type Config } from \"./Config.js\";\nexport { DynamicSnippetsGenerator } from \"./DynamicSnippetsGenerator.js\";\nexport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator.js\";\n","import {\n    AbstractAstNode,\n    AbstractDynamicSnippetsGenerator,\n    FernGeneratorExec,\n    Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/index.js\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator.js\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n    DynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator\n> {\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        super(new DynamicSnippetsGeneratorContext({ ir, config, options }));\n    }\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        return super.generate(request, options);\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        return super.generateSync(request, options);\n    }\n\n    public async generateSnippetAst(request: FernIr.dynamic.EndpointSnippetRequest): Promise<AbstractAstNode> {\n        return super.generateSnippetAst(request);\n    }\n\n    protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n        return new EndpointSnippetGenerator({ context });\n    }\n}\n","// Force cache invalidation for CI - server URL templating feature\nexport { addPrefixToString } from \"./addPrefixToString.js\";\nexport { applyOpenAPIOverlay, type Overlay, type OverlayAction } from \"./applyOpenAPIOverlay.js\";\nexport {\n    assert,\n    assertDefined,\n    assertNever,\n    assertNeverNoThrow,\n    assertNonNull,\n    assertString,\n    assertVoidNoThrow\n} from \"./assert.js\";\nexport { delay } from \"./delay/delay.js\";\nexport { withMinimumTime } from \"./delay/withMinimumTime.js\";\nexport { EMPTY_ARRAY, EMPTY_OBJECT } from \"./empty.js\";\nexport * as Examples from \"./examples.js\";\nexport { extractErrorMessage } from \"./extractErrorMessage.js\";\nexport { getDuplicates } from \"./getDuplicates.js\";\nexport { identity } from \"./identity.js\";\nexport { isNonNullish } from \"./isNonNullish.js\";\nexport { MediaType } from \"./mediaType.js\";\nexport { mergeWithOverrides } from \"./mergeWithOverrides.js\";\nexport { noop } from \"./noop.js\";\nexport {\n    haveSameNullishness,\n    nullIfNullish,\n    nullIfSomeNullish,\n    undefinedIfNullish,\n    undefinedIfSomeNullish\n} from \"./nullishUtils.js\";\nexport { type ObjectPropertiesVisitor, visitObject, visitObjectAsync } from \"./ObjectPropertiesVisitor.js\";\nexport { type Entries, entries } from \"./objects/entries.js\";\nexport { isPlainObject } from \"./objects/isPlainObject.js\";\nexport { keys } from \"./objects/keys.js\";\nexport { mapValues } from \"./objects/mapValues.js\";\nexport { type Values, values } from \"./objects/values.js\";\nexport { parseEndpointLocator } from \"./parseEndpointLocator.js\";\nexport { PLATFORM, type Platform } from \"./platform.js\";\nexport { removeSuffix } from \"./removeSuffix.js\";\nexport { replaceEnvVariables } from \"./replaceEnvVars.js\";\nexport { SymbolRegistry, type SymbolRegistryOptions } from \"./SymbolRegistry.js\";\nexport { SKIP_MARKER, sanitizeNullValues } from \"./sanitizeNullValues.js\";\nexport { diffSemverOrThrow, parseSemverOrThrow } from \"./semverUtils.js\";\nexport { type SetRequired } from \"./setRequired.js\";\nexport { stripLeadingSlash } from \"./stripLeadingSlash.js\";\nexport { titleCase } from \"./titleCase.js\";\nexport type { ContainerRunner, Digit, Letter, LowercaseLetter, UppercaseLetter } from \"./types.js\";\nexport { validateAgainstJsonSchema } from \"./validateAgainstJsonSchema.js\";\nexport { visitDiscriminatedUnion } from \"./visitDiscriminatedUnion.js\";\nexport type { WithoutQuestionMarks } from \"./withoutQuestionMarks.js\";\n","/**\n * @license\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"es\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nexport { default as add } from './add.js';\nexport { default as after } from './after.js';\nexport { default as ary } from './ary.js';\nexport { default as assign } from './assign.js';\nexport { default as assignIn } from './assignIn.js';\nexport { default as assignInWith } from './assignInWith.js';\nexport { default as assignWith } from './assignWith.js';\nexport { default as at } from './at.js';\nexport { default as attempt } from './attempt.js';\nexport { default as before } from './before.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as bindKey } from './bindKey.js';\nexport { default as camelCase } from './camelCase.js';\nexport { default as capitalize } from './capitalize.js';\nexport { default as castArray } from './castArray.js';\nexport { default as ceil } from './ceil.js';\nexport { default as chain } from './chain.js';\nexport { default as chunk } from './chunk.js';\nexport { default as clamp } from './clamp.js';\nexport { default as clone } from './clone.js';\nexport { default as cloneDeep } from './cloneDeep.js';\nexport { default as cloneDeepWith } from './cloneDeepWith.js';\nexport { default as cloneWith } from './cloneWith.js';\nexport { default as commit } from './commit.js';\nexport { default as compact } from './compact.js';\nexport { default as concat } from './concat.js';\nexport { default as cond } from './cond.js';\nexport { default as conforms } from './conforms.js';\nexport { default as conformsTo } from './conformsTo.js';\nexport { default as constant } from './constant.js';\nexport { default as countBy } from './countBy.js';\nexport { default as create } from './create.js';\nexport { default as curry } from './curry.js';\nexport { default as curryRight } from './curryRight.js';\nexport { default as debounce } from './debounce.js';\nexport { default as deburr } from './deburr.js';\nexport { default as defaultTo } from './defaultTo.js';\nexport { default as defaults } from './defaults.js';\nexport { default as defaultsDeep } from './defaultsDeep.js';\nexport { default as defer } from './defer.js';\nexport { default as delay } from './delay.js';\nexport { default as difference } from './difference.js';\nexport { default as differenceBy } from './differenceBy.js';\nexport { default as differenceWith } from './differenceWith.js';\nexport { default as divide } from './divide.js';\nexport { default as drop } from './drop.js';\nexport { default as dropRight } from './dropRight.js';\nexport { default as dropRightWhile } from './dropRightWhile.js';\nexport { default as dropWhile } from './dropWhile.js';\nexport { default as each } from './each.js';\nexport { default as eachRight } from './eachRight.js';\nexport { default as endsWith } from './endsWith.js';\nexport { default as entries } from './entries.js';\nexport { default as entriesIn } from './entriesIn.js';\nexport { default as eq } from './eq.js';\nexport { default as escape } from './escape.js';\nexport { default as escapeRegExp } from './escapeRegExp.js';\nexport { default as every } from './every.js';\nexport { default as extend } from './extend.js';\nexport { default as extendWith } from './extendWith.js';\nexport { default as fill } from './fill.js';\nexport { default as filter } from './filter.js';\nexport { default as find } from './find.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findKey } from './findKey.js';\nexport { default as findLast } from './findLast.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as findLastKey } from './findLastKey.js';\nexport { default as first } from './first.js';\nexport { default as flatMap } from './flatMap.js';\nexport { default as flatMapDeep } from './flatMapDeep.js';\nexport { default as flatMapDepth } from './flatMapDepth.js';\nexport { default as flatten } from './flatten.js';\nexport { default as flattenDeep } from './flattenDeep.js';\nexport { default as flattenDepth } from './flattenDepth.js';\nexport { default as flip } from './flip.js';\nexport { default as floor } from './floor.js';\nexport { default as flow } from './flow.js';\nexport { default as flowRight } from './flowRight.js';\nexport { default as forEach } from './forEach.js';\nexport { default as forEachRight } from './forEachRight.js';\nexport { default as forIn } from './forIn.js';\nexport { default as forInRight } from './forInRight.js';\nexport { default as forOwn } from './forOwn.js';\nexport { default as forOwnRight } from './forOwnRight.js';\nexport { default as fromPairs } from './fromPairs.js';\nexport { default as functions } from './functions.js';\nexport { default as functionsIn } from './functionsIn.js';\nexport { default as get } from './get.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as gt } from './gt.js';\nexport { default as gte } from './gte.js';\nexport { default as has } from './has.js';\nexport { default as hasIn } from './hasIn.js';\nexport { default as head } from './head.js';\nexport { default as identity } from './identity.js';\nexport { default as inRange } from './inRange.js';\nexport { default as includes } from './includes.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as initial } from './initial.js';\nexport { default as intersection } from './intersection.js';\nexport { default as intersectionBy } from './intersectionBy.js';\nexport { default as intersectionWith } from './intersectionWith.js';\nexport { default as invert } from './invert.js';\nexport { default as invertBy } from './invertBy.js';\nexport { default as invoke } from './invoke.js';\nexport { default as invokeMap } from './invokeMap.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isArrayLike } from './isArrayLike.js';\nexport { default as isArrayLikeObject } from './isArrayLikeObject.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isBuffer } from './isBuffer.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isEqualWith } from './isEqualWith.js';\nexport { default as isError } from './isError.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isInteger } from './isInteger.js';\nexport { default as isLength } from './isLength.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isMatchWith } from './isMatchWith.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isNative } from './isNative.js';\nexport { default as isNil } from './isNil.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isObject } from './isObject.js';\nexport { default as isObjectLike } from './isObjectLike.js';\nexport { default as isPlainObject } from './isPlainObject.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isSafeInteger } from './isSafeInteger.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isString } from './isString.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isWeakSet } from './isWeakSet.js';\nexport { default as iteratee } from './iteratee.js';\nexport { default as join } from './join.js';\nexport { default as kebabCase } from './kebabCase.js';\nexport { default as keyBy } from './keyBy.js';\nexport { default as keys } from './keys.js';\nexport { default as keysIn } from './keysIn.js';\nexport { default as last } from './last.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as lodash } from './wrapperLodash.js';\nexport { default as lowerCase } from './lowerCase.js';\nexport { default as lowerFirst } from './lowerFirst.js';\nexport { default as lt } from './lt.js';\nexport { default as lte } from './lte.js';\nexport { default as map } from './map.js';\nexport { default as mapKeys } from './mapKeys.js';\nexport { default as mapValues } from './mapValues.js';\nexport { default as matches } from './matches.js';\nexport { default as matchesProperty } from './matchesProperty.js';\nexport { default as max } from './max.js';\nexport { default as maxBy } from './maxBy.js';\nexport { default as mean } from './mean.js';\nexport { default as meanBy } from './meanBy.js';\nexport { default as memoize } from './memoize.js';\nexport { default as merge } from './merge.js';\nexport { default as mergeWith } from './mergeWith.js';\nexport { default as method } from './method.js';\nexport { default as methodOf } from './methodOf.js';\nexport { default as min } from './min.js';\nexport { default as minBy } from './minBy.js';\nexport { default as mixin } from './mixin.js';\nexport { default as multiply } from './multiply.js';\nexport { default as negate } from './negate.js';\nexport { default as next } from './next.js';\nexport { default as noop } from './noop.js';\nexport { default as now } from './now.js';\nexport { default as nth } from './nth.js';\nexport { default as nthArg } from './nthArg.js';\nexport { default as omit } from './omit.js';\nexport { default as omitBy } from './omitBy.js';\nexport { default as once } from './once.js';\nexport { default as orderBy } from './orderBy.js';\nexport { default as over } from './over.js';\nexport { default as overArgs } from './overArgs.js';\nexport { default as overEvery } from './overEvery.js';\nexport { default as overSome } from './overSome.js';\nexport { default as pad } from './pad.js';\nexport { default as padEnd } from './padEnd.js';\nexport { default as padStart } from './padStart.js';\nexport { default as parseInt } from './parseInt.js';\nexport { default as partial } from './partial.js';\nexport { default as partialRight } from './partialRight.js';\nexport { default as partition } from './partition.js';\nexport { default as pick } from './pick.js';\nexport { default as pickBy } from './pickBy.js';\nexport { default as plant } from './plant.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as pull } from './pull.js';\nexport { default as pullAll } from './pullAll.js';\nexport { default as pullAllBy } from './pullAllBy.js';\nexport { default as pullAllWith } from './pullAllWith.js';\nexport { default as pullAt } from './pullAt.js';\nexport { default as random } from './random.js';\nexport { default as range } from './range.js';\nexport { default as rangeRight } from './rangeRight.js';\nexport { default as rearg } from './rearg.js';\nexport { default as reduce } from './reduce.js';\nexport { default as reduceRight } from './reduceRight.js';\nexport { default as reject } from './reject.js';\nexport { default as remove } from './remove.js';\nexport { default as repeat } from './repeat.js';\nexport { default as replace } from './replace.js';\nexport { default as rest } from './rest.js';\nexport { default as result } from './result.js';\nexport { default as reverse } from './reverse.js';\nexport { default as round } from './round.js';\nexport { default as sample } from './sample.js';\nexport { default as sampleSize } from './sampleSize.js';\nexport { default as set } from './set.js';\nexport { default as setWith } from './setWith.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as size } from './size.js';\nexport { default as slice } from './slice.js';\nexport { default as snakeCase } from './snakeCase.js';\nexport { default as some } from './some.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as sortedIndexBy } from './sortedIndexBy.js';\nexport { default as sortedIndexOf } from './sortedIndexOf.js';\nexport { default as sortedLastIndex } from './sortedLastIndex.js';\nexport { default as sortedLastIndexBy } from './sortedLastIndexBy.js';\nexport { default as sortedLastIndexOf } from './sortedLastIndexOf.js';\nexport { default as sortedUniq } from './sortedUniq.js';\nexport { default as sortedUniqBy } from './sortedUniqBy.js';\nexport { default as split } from './split.js';\nexport { default as spread } from './spread.js';\nexport { default as startCase } from './startCase.js';\nexport { default as startsWith } from './startsWith.js';\nexport { default as stubArray } from './stubArray.js';\nexport { default as stubFalse } from './stubFalse.js';\nexport { default as stubObject } from './stubObject.js';\nexport { default as stubString } from './stubString.js';\nexport { default as stubTrue } from './stubTrue.js';\nexport { default as subtract } from './subtract.js';\nexport { default as sum } from './sum.js';\nexport { default as sumBy } from './sumBy.js';\nexport { default as tail } from './tail.js';\nexport { default as take } from './take.js';\nexport { default as takeRight } from './takeRight.js';\nexport { default as takeRightWhile } from './takeRightWhile.js';\nexport { default as takeWhile } from './takeWhile.js';\nexport { default as tap } from './tap.js';\nexport { default as template } from './template.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as throttle } from './throttle.js';\nexport { default as thru } from './thru.js';\nexport { default as times } from './times.js';\nexport { default as toArray } from './toArray.js';\nexport { default as toFinite } from './toFinite.js';\nexport { default as toInteger } from './toInteger.js';\nexport { default as toIterator } from './toIterator.js';\nexport { default as toJSON } from './toJSON.js';\nexport { default as toLength } from './toLength.js';\nexport { default as toLower } from './toLower.js';\nexport { default as toNumber } from './toNumber.js';\nexport { default as toPairs } from './toPairs.js';\nexport { default as toPairsIn } from './toPairsIn.js';\nexport { default as toPath } from './toPath.js';\nexport { default as toPlainObject } from './toPlainObject.js';\nexport { default as toSafeInteger } from './toSafeInteger.js';\nexport { default as toString } from './toString.js';\nexport { default as toUpper } from './toUpper.js';\nexport { default as transform } from './transform.js';\nexport { default as trim } from './trim.js';\nexport { default as trimEnd } from './trimEnd.js';\nexport { default as trimStart } from './trimStart.js';\nexport { default as truncate } from './truncate.js';\nexport { default as unary } from './unary.js';\nexport { default as unescape } from './unescape.js';\nexport { default as union } from './union.js';\nexport { default as unionBy } from './unionBy.js';\nexport { default as unionWith } from './unionWith.js';\nexport { default as uniq } from './uniq.js';\nexport { default as uniqBy } from './uniqBy.js';\nexport { default as uniqWith } from './uniqWith.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as unset } from './unset.js';\nexport { default as unzip } from './unzip.js';\nexport { default as unzipWith } from './unzipWith.js';\nexport { default as update } from './update.js';\nexport { default as updateWith } from './updateWith.js';\nexport { default as upperCase } from './upperCase.js';\nexport { default as upperFirst } from './upperFirst.js';\nexport { default as value } from './value.js';\nexport { default as valueOf } from './valueOf.js';\nexport { default as values } from './values.js';\nexport { default as valuesIn } from './valuesIn.js';\nexport { default as without } from './without.js';\nexport { default as words } from './words.js';\nexport { default as wrap } from './wrap.js';\nexport { default as wrapperAt } from './wrapperAt.js';\nexport { default as wrapperChain } from './wrapperChain.js';\nexport { default as wrapperCommit } from './commit.js';\nexport { default as wrapperLodash } from './wrapperLodash.js';\nexport { default as wrapperNext } from './next.js';\nexport { default as wrapperPlant } from './plant.js';\nexport { default as wrapperReverse } from './wrapperReverse.js';\nexport { default as wrapperToIterator } from './toIterator.js';\nexport { default as wrapperValue } from './wrapperValue.js';\nexport { default as xor } from './xor.js';\nexport { default as xorBy } from './xorBy.js';\nexport { default as xorWith } from './xorWith.js';\nexport { default as zip } from './zip.js';\nexport { default as zipObject } from './zipObject.js';\nexport { default as zipObjectDeep } from './zipObjectDeep.js';\nexport { default as zipWith } from './zipWith.js';\nexport { default } from './lodash.default.js';\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nexport default noop;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nexport default strictIndexOf;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nexport default createCompounder;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduce;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default basePropertyOf;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nexport default words;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nexport default cacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nexport default setToArray;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport default arrayIncludesWith;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseUniq;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nexport default createSet;\n","import baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nexport default uniqWith;\n","/**\n * Asserts that a condition is truthy, throwing an exception with the specified message if it is falsy.\n */\nexport function assert(condition: unknown, message?: string): asserts condition {\n    if (!condition) {\n        throw new Error(message ?? \"Expected condition to be truthy but got falsy.\");\n    }\n}\n\nexport function assertDefined<T>(val: T, message?: string): asserts val is Exclude<T, undefined> {\n    if (val === undefined) {\n        throw new Error(message ?? \"Expected value to be defined but got undefined.\");\n    }\n}\n\nexport function assertNonNull<T>(val: T, message?: string): asserts val is Exclude<T, null> {\n    if (val === null) {\n        throw new Error(message ?? \"Expected value to be non-null but got null.\");\n    }\n}\n\nexport function assertString(val: unknown, message?: string): asserts val is string {\n    if (typeof val !== \"string\") {\n        throw new Error(message ?? `Expected value to be a string but got ${typeof val}.`);\n    }\n}\n\nexport function assertNever(x: never): never {\n    throw new Error(\"Unexpected value: \" + JSON.stringify(x));\n}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertNeverNoThrow(_: never): void {}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertVoidNoThrow(_x: void): void {}\n","// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function noop(): void {}\n","export function keys<T extends object>(object: T): (keyof T)[] {\n    return Object.keys(object) as (keyof T)[];\n}\n","export type Entries<T> = [keyof T, T[keyof T]][];\n\nexport function entries<T extends object>(object: T): Entries<T> {\n    return Object.entries(object) as Entries<T>;\n}\n","import { assertDefined, assertNever } from \"./assert.js\";\n\ntype SymbolId = string;\ntype SymbolName = string;\n\ntype ConflictResolutionStrategy = \"underscore-suffix\" | \"numbered-suffix\";\n\nexport interface SymbolRegistryOptions {\n    reservedSymbolNames?: SymbolName[];\n    conflictResolutionStrategy?: ConflictResolutionStrategy;\n}\n\n/**\n * A registry that maps symbol IDs to unique symbol names, preventing naming conflicts.\n * When conflicts occur, names are automatically resolved using the configured strategy.\n */\nexport class SymbolRegistry {\n    public static defaultOptions: Required<SymbolRegistryOptions> = {\n        reservedSymbolNames: [],\n        conflictResolutionStrategy: \"underscore-suffix\"\n    };\n\n    private readonly symbolSet: Set<SymbolName>;\n    private readonly symbolMap: Map<SymbolId, SymbolName>;\n    private readonly conflictResolutionStrategy: ConflictResolutionStrategy;\n\n    public constructor(options?: SymbolRegistryOptions) {\n        this.symbolSet = new Set(options?.reservedSymbolNames ?? SymbolRegistry.defaultOptions.reservedSymbolNames);\n        this.symbolMap = new Map();\n        this.conflictResolutionStrategy =\n            options?.conflictResolutionStrategy ?? SymbolRegistry.defaultOptions.conflictResolutionStrategy;\n    }\n\n    public getSymbolNameByIdOrThrow(symbolId: SymbolId) {\n        const symbolName = this.getSymbolNameById(symbolId);\n        assertDefined(symbolName, `Symbol with ID '${symbolId}' not found for in registry.`);\n        return symbolName;\n    }\n\n    public getSymbolNameById(symbolId: SymbolId) {\n        return this.symbolMap.get(symbolId);\n    }\n\n    /**\n     * Registers a new symbol with the given ID and name candidates.\n     * Returns the first available name from candidates, or a conflict-resolved version.\n     * @throws Error if the symbol ID is already registered\n     */\n    public registerSymbol(symbolId: SymbolId, nameCandidates: [string, ...string[]]) {\n        const isAlreadyRegistered = this.isSymbolIdRegistered(symbolId);\n        if (isAlreadyRegistered) {\n            throw new Error(`Symbol with ID '${symbolId}' is already registered.`);\n        }\n        const symbolName = this.getAvailableSymbolName(nameCandidates);\n        this.symbolMap.set(symbolId, symbolName);\n        this.symbolSet.add(symbolName);\n        return symbolName;\n    }\n\n    private getAvailableSymbolName(candidates: [string, ...string[]]): string {\n        for (const symbolName of candidates) {\n            if (!this.isSymbolNameRegistered(symbolName)) {\n                return symbolName;\n            }\n        }\n\n        const [baseSymbolName] = candidates;\n        let symbolName = baseSymbolName;\n\n        if (this.conflictResolutionStrategy === \"numbered-suffix\") {\n            let counter = 2;\n            while (this.isSymbolNameRegistered(symbolName)) {\n                symbolName = `${baseSymbolName}${counter++}`;\n            }\n        } else if (this.conflictResolutionStrategy === \"underscore-suffix\") {\n            while (this.isSymbolNameRegistered(symbolName)) {\n                symbolName += \"_\";\n            }\n        } else {\n            assertNever(this.conflictResolutionStrategy);\n        }\n\n        return symbolName;\n    }\n\n    /**\n     * Checks whether a symbol name is already registered or reserved.\n     */\n    public isSymbolNameRegistered(symbolName: SymbolName): boolean {\n        return this.symbolSet.has(symbolName);\n    }\n\n    /**\n     * Checks whether a symbol ID is already registered.\n     */\n    public isSymbolIdRegistered(symbolId: SymbolId) {\n        return this.symbolMap.has(symbolId);\n    }\n\n    /**\n     * Returns all registered symbols with their IDs and names.\n     */\n    public getAllSymbols() {\n        return Array.from(this.symbolMap.entries()).map(([id, name]) => ({ id, name }));\n    }\n}\n","import { assertNever } from \"./assert.js\";\n\nexport type DiscriminatedUnionVisitor<T extends Record<Discriminant, string>, U, Discriminant extends string> = {\n    [D in T[Discriminant]]: (value: Extract<T, Record<Discriminant, D>>) => U;\n} & {\n    _other?: (value: Record<Discriminant, string>) => U;\n};\n\nexport function visitDiscriminatedUnion<T extends Record<\"type\", string>>(\n    item: T\n): { _visit: <U>(visitor: DiscriminatedUnionVisitor<T, U, \"type\">) => U };\nexport function visitDiscriminatedUnion<T extends Record<Discriminant, string>, Discriminant extends string>(\n    item: T,\n    discriminant: Discriminant\n): { _visit: <U>(visitor: DiscriminatedUnionVisitor<T, U, Discriminant>) => U };\nexport function visitDiscriminatedUnion<T extends Record<Discriminant, string>, Discriminant extends string>(\n    item: T,\n    discriminant: Discriminant = \"type\" as Discriminant\n): { _visit: <U>(visitor: DiscriminatedUnionVisitor<T, U, Discriminant>) => U } {\n    return {\n        _visit: (visitor) => {\n            const visit = visitor[item[discriminant]];\n            if (visit != null) {\n                return visit(item as Extract<T, Record<Discriminant, string>>);\n            } else {\n                if (visitor._other == null) {\n                    assertNever(item as never);\n                }\n                return visitor._other(item);\n            }\n        }\n    };\n}\n\nexport default visitDiscriminatedUnion;\n","export { AbstractAstNode } from \"./AbstractAstNode.js\";\nexport { AbstractFormatter, NopFormatter } from \"./AbstractFormatter.js\";\nexport { AbstractWriter } from \"./AbstractWriter.js\";\nexport {\n    type Argument,\n    type Arguments,\n    hasNamedArgument,\n    isNamedArgument,\n    type NamedArgument,\n    type UnnamedArgument\n} from \"./Argument.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Ternary } from \"./Ternary.js\";\n","import { tag } from \"../utils/stacktrace.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport abstract class AbstractAstNode {\n    /**\n     * Every AST node knows how to write itself to a string.\n     */\n    public abstract write(writer: AbstractWriter): void;\n\n    public constructor() {\n        // when FERN_STACK_TRACK is defined this will track the stack trace of the current AstNode.\n        // otherwise this has absolutely no effect whatsoever.\n        tag(this);\n    }\n}\n","/**\n * Global flag that enables or disables stack tracing functionality throughout the application.\n * This is controlled via the FERN_STACK_TRACK environment variable.\n *\n * When enabled (truthy environment variable value), stack traces will be captured and processed\n * by the stacktrace functions in this module. When disabled, the stacktrace() function returns\n * an empty array for performance optimization.\n *\n * @example\n * // Enable tracing by setting the environment variable\n * // FERN_STACK_TRACK=1 <cmdline>\n */\nconst key = process.env[\"FERN_STACK_TRACK\"]?.toLowerCase() ?? \"\";\n\nexport const enableStackTracking = key !== \"\" && key !== \"0\" && key !== \"false\";\n\n/** The style of comments desired for the stack tracking comments\n *\n * can be \"single\", \"multiline\", or \"box\".\n * if not set to one of those, defaults to \"single\".\n */\nexport const trackingType = [\"single\", \"multiline\", \"box\"].includes(key) ? key : \"single\";\n\nif (enableStackTracking) {\n    // we're going to put a hard max limit on the stack trace to prevent infinite recursion and excessive stack generation\n    Error.stackTraceLimit = 50;\n}\n\n/**\n * Configuration options for controlling stack trace capture and filtering behavior.\n */\ninterface StackTraceOptions {\n    /**\n     * Maximum number of stack frames to return after filtering.\n     *\n     * Maximum may never exceed 50.\n     * @default 50\n     */\n    maxFrames?: number;\n\n    /**\n     * Number of frames to skip from the beginning of the filtered stack trace.\n     * Useful for omitting wrapper functions from the output.\n     * @default 0\n     */\n    skip?: number;\n\n    /**\n     * Array of function name substrings that trigger an early stop when encountered.\n     * When a frame's function name includes any of these strings, that frame and all\n     * subsequent frames will be excluded from the output.\n     *\n     * implicitly includes \"runInteractiveTask\"\n     * @default []\n     */\n    stopOn?: string[];\n\n    /**\n     * Array of file path substrings to filter out. Any frame whose path contains\n     * any of these strings will be excluded from the output.\n     * @default []\n     */\n    filterPaths?: string[];\n\n    /**\n     * Array of function name substrings to filter out. Any frame whose function name\n     * contains any of these strings will be excluded from the output.\n     *\n     * implicitly includes \"SdkGeneratorCLI\", \"runCli\",\"Frames.trace\",\"Frames.tag\", \"at\", \"stacktrace\"\n     * @default []\n     */\n    filterFunctions?: string[];\n\n    /**\n     * Whether to filter out Node.js internal frames (paths starting with \"node:\").\n     * @default true\n     */\n    filterNode?: boolean;\n\n    /**\n     * Whether to filter out .js files, which typically indicate non-source files\n     * without source map information.\n     * @default true\n     */\n    filterJs?: boolean;\n\n    /**\n     * A function to format the file path of the stack trace frame.\n     * @default (filename) => filename\n     */\n    formatFilename?: (filename: string) => string;\n}\n\n/**\n * Represents a single parsed stack trace frame containing function, file path, and position information.\n */\nexport interface StackTraceFrame {\n    /**\n     * The function name or context. May include special formatting like \"alias()=> { ... }\"\n     * for certain Object methods, or be an empty string for anonymous contexts.\n     */\n    fn: string;\n\n    /**\n     * The file path where this frame originated. This will typically be the full path\n     * to the source file.\n     */\n    path: string;\n\n    /**\n     * The line and column position in the format \"line:column\" (e.g., \"42:13\").\n     */\n    position: string;\n}\n\nconst globalFunctionFilters = new Set<string>([\"SdkGeneratorCLI\", \"runCli\", \"LoggerImpl\", \"Array.forEach\"]);\nconst globalFileFilters = new Set<string>([\"stacktrace\"]);\n\n/**\n * Adds a function name to the global function filters for stack traces\n * @param filter - The function name to add to the global function filters.\n */\nexport function addGlobalFunctionFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFunctionFilters.add(filter);\n    }\n}\n\n/**\n * Adds a file path to the global file filters for stack traces.\n * @param filter - The file path to add to the global file filters.\n */\nexport function addGlobalFileFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFileFilters.add(filter);\n    }\n}\n\n/**\n * Captures and parses the current call stack, returning an array of stack frames with filtering options.\n *\n * This function creates a new Error object to capture the stack trace, then parses each frame\n * to extract function names, file paths, and positions. It applies multiple filtering strategies\n * to exclude unwanted frames (e.g., Node.js internals, .js files, specific functions).\n *\n * The function only operates when `enableStackTracking` is true. If tracing is disabled, it returns\n * an empty array for performance optimization.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns Array of parsed stack trace frames, filtered and limited according to the options\n *\n * @example\n * // Capture the first 10 frames, skipping the first 2\n * const frames = stacktrace({ maxFrames: 10, skip: 2 });\n *\n * @example\n * // Capture frames until hitting \"main\" function, filter out test files\n * const frames = stacktrace({\n *   stopOn: [\"main\"],\n *   filterPaths: [\"/test/\"],\n *   filterFunctions: [\"runTests\"]\n * });\n *\n * @remarks\n * The function applies filters in the following order:\n * 1. Parses each stack frame using regex to extract function, path, line, and column\n * 2. Applies early-stop logic when encountering functions in the `stopOn` array\n * 3. Formats special function names (e.g., \"Object.alias\" → \"alias()=> { ... }\")\n * 4. Filters out:\n *    - The stacktrace function itself (\"at\", \"stacktrace\")\n *    - Functions matching `filterFunctions` (substring match)\n *    - Node.js internal frames (if `filterNode` is true)\n *    - .js files (if `filterJs` is true)\n *    - Paths matching `filterPaths` (substring match)\n * 5. Applies `skip` and `maxFrames` to limit the output\n */\nexport function stacktrace({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    formatFilename = (filename) => filename\n}: StackTraceOptions = {}): StackTraceFrame[] {\n    if (!enableStackTracking) {\n        return [];\n    }\n    filterFunctions = [...filterFunctions, ...globalFunctionFilters];\n    filterPaths = [...filterPaths, ...globalFileFilters];\n    stopOn = [...stopOn, \"runInteractiveTask\"];\n    let stop = false;\n    return (\n        (new Error().stack ?? \"\")\n            .split(\"\\n\")\n            .map((line) => {\n                const match = line.match(/at\\s+(.*)\\s+\\((.*):(\\d+):(\\d+)\\)/);\n                if (match && match.length === 5) {\n                    let [, fn, path, line, column] = match;\n                    if (!fn || !path || !line || !column) {\n                        return undefined;\n                    }\n\n                    if (stop || stopOn.some((s) => fn?.includes(s))) {\n                        stop = true;\n                        return undefined;\n                    }\n\n                    switch (fn) {\n                        case \"Object.<anonymous>\":\n                            fn = \"\";\n                            break;\n                        case \"Object.object\":\n                        case \"Object.alias\":\n                        case \"Object.union\":\n                        case \"Object.enum\":\n                        case \"Object.undiscriminatedUnion\":\n                            fn = `${fn.substring(fn.indexOf(\".\") + 1)}()=> { ... }`;\n                            break;\n                    }\n                    return {\n                        fn,\n                        path: formatFilename(path),\n                        position: `${line}:${column}`\n                    } as StackTraceFrame;\n                }\n                return undefined;\n            })\n            .filter(\n                (each) =>\n                    each &&\n                    !filterFunctions.some((f) => each.fn.includes(f)) && // substring match for filter functions\n                    !(filterNode && each.path?.startsWith(\"node:\")) && // starts with node:\n                    !(filterJs && each.path?.endsWith(\".js\")) && // ends with .js (meaning likely not a source file - no source map info)\n                    !filterPaths.some((p) => each.path.includes(p)) // substring match for filter paths\n            ) as StackTraceFrame[]\n    ).slice(skip, skip + maxFrames);\n}\n\n/**\n * Returns a formatted stack trace string at the current location for debugging purposes.\n *\n * This is a convenience function that wraps `stacktrace()` and formats the output as a\n * human-readable string. It's particularly useful for logging or debugging to understand\n * the execution flow and call hierarchy.\n *\n * The function supports both single-line and multi-line output formats. Single-line format\n * concatenates all frames into one line (useful for compact logging), while multi-line format\n * adds newlines and indentation for better readability.\n *\n * @param options - Configuration options for stack trace capture, filtering, and formatting\n * @param options.multiline - Whether to format the output with newlines and indentation.\n *                            When true, each frame is on its own line with 4-space indent.\n *                            When false (default), all frames are concatenated on one line.\n * @returns A formatted string containing the stack trace information, prefixed with \"stacktrace - \"\n *\n * @example\n * // Single-line format (compact)\n * console.log(at());\n * // Output: \"stacktrace - myFunction - /path/to/file.ts:42:13anotherFunc - /path/to/other.ts:17:5\"\n *\n * @example\n * // Multi-line format (readable)\n * console.log(at({ multiline: true, maxFrames: 5 }));\n * // Output:\n * // stacktrace -\n * //     myFunction - /path/to/file.ts:42:13\n * //     anotherFunc - /path/to/other.ts:17:5\n * //     main - /path/to/index.ts:10:1\n *\n * @example\n * // Custom filtering for specific use case\n * console.log(at({\n *   maxFrames: 10,\n *   skip: 1,\n *   filterPaths: [\"foo.ts\"],\n *   multiline: true\n * }));\n *\n * @remarks\n * This function automatically skips itself from the stack trace output by default.\n * The \"at\" function name is filtered by the underlying `stacktrace()` function.\n */\nexport function at({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [\"runInteractiveTask\"],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}): string {\n    return enableStackTracking\n        ? `${stacktrace({ maxFrames, skip, filterPaths, filterFunctions, stopOn, filterNode, filterJs, formatFilename })\n              .map((each) => `${multiline ? \"\\n    \" : \" > \"}${each.fn} - ${each.path}:${each.position}`)\n              .join(\"\")}`\n        : \"\";\n}\n\n/** This class allows the developer to attach stack trace information to objects  */\nexport class StackTraces {\n    private readonly maxFrames: number;\n    private readonly skip: number;\n    private readonly filterPaths: string[];\n    private readonly filterFunctions: string[];\n    private readonly stopOn: string[];\n    private readonly filterNode: boolean;\n    private readonly filterJs: boolean;\n    private readonly multiline: boolean;\n    private readonly formatFilename: (filename: string) => string;\n    private tracking = new WeakMap<object, Set<StackTraceFrame>>();\n\n    constructor({\n        maxFrames = 50,\n        skip = 0,\n        filterPaths = [],\n        filterFunctions = [],\n        stopOn = [],\n        filterNode = true,\n        filterJs = true,\n        multiline = false,\n        formatFilename = (filename) => filename\n    }: StackTraceOptions & { multiline?: boolean } = {}) {\n        this.maxFrames = maxFrames;\n        this.skip = skip;\n        this.filterPaths = filterPaths;\n        this.filterFunctions = filterFunctions;\n        this.stopOn = stopOn;\n        this.filterNode = filterNode;\n        this.filterJs = filterJs;\n        this.multiline = multiline;\n        this.formatFilename = formatFilename;\n    }\n\n    /**\n     * Tags the current stack trace with the given object.\n     *\n     * This can be called multiple times to add more stack trace information to the object.\n     *\n     * @param obj - The object to tag the stack trace with.\n     */\n    tag(obj: object): void {\n        const current = this.tracking.get(obj) || new Set<StackTraceFrame>();\n        stacktrace({\n            maxFrames: this.maxFrames,\n            skip: this.skip,\n            filterPaths: this.filterPaths,\n            filterFunctions: this.filterFunctions,\n            stopOn: this.stopOn,\n            filterNode: this.filterNode,\n            filterJs: this.filterJs,\n            formatFilename: this.formatFilename\n        }).forEach((frame) => current.add(frame));\n        this.tracking.set(obj, current);\n    }\n\n    /**\n     * Returns a formatted stack trace string for the given object.\n     * @param obj - The object to get the stack trace for.\n     * @returns A formatted string containing the stack trace information.\n     */\n    trace(obj: object): string {\n        if (!enableStackTracking) {\n            return \"\";\n        }\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return \"\";\n        }\n\n        return [...frames]\n            .map((each) => `${this.multiline ? \"\\n    \" : \"\"}${each.fn} - ${each.path}:${each.position}`)\n            .join(\"\");\n    }\n\n    /**\n     * Gets the stack trace frames for the given object.\n     *\n     * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n     *       Otherwise this will return an empty array.\n     *\n     * @param obj - The object to get the stack trace frames for.\n     * @returns The stack trace frames for the given object.\n     */\n    frames(obj: object): StackTraceFrame[] {\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return [];\n        }\n        return [...frames];\n    }\n\n    /**\n     * Frees the stack trace information for the given object.\n     * @param obj - The object to free the stack trace information for.\n     */\n    free(obj: object): void {\n        this.tracking.delete(obj);\n    }\n\n    /**\n     * Clears all stack trace information.\n     */\n    clear(): void {\n        this.tracking = new WeakMap<object, Set<StackTraceFrame>>();\n    }\n}\n\nlet stackTraces: StackTraces | undefined;\n/**\n * Starts tracking the stack trace of the current object.\n *\n * Note: This will only start tracking when FERN_STACK_TRACK is defined.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns The stack traces object.\n */\nexport function startTracking({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}) {\n    if (!enableStackTracking) {\n        return;\n    }\n    stackTraces ??= new StackTraces({\n        maxFrames,\n        skip,\n        filterPaths,\n        filterFunctions,\n        stopOn,\n        filterNode,\n        filterJs,\n        multiline,\n        formatFilename\n    });\n}\n\n/**\n * Tags the current stack trace with the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to tag the stack trace with.\n */\nexport function tag(obj: object) {\n    stackTraces?.tag(obj);\n}\n\n/**\n * Returns a formatted stack trace string for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to get the stack trace for.\n * @returns A formatted string containing the stack trace information.\n */\nexport function trace(obj: object) {\n    return stackTraces?.trace(obj) ?? \"\";\n}\n\n/**\n * Frees the stack trace information for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to free the stack trace information for.\n */\nexport function free(obj: object) {\n    stackTraces?.free(obj);\n}\n\n/**\n * Gets the stack trace frames for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will return an empty array.\n *\n * @param obj - The object to get the stack trace frames for.\n * @returns The stack trace frames for the given object.\n */\nexport function getFramesForTaggedObject(obj: object): StackTraceFrame[] {\n    return stackTraces?.frames(obj) ?? [];\n}\n","import { enableStackTracking } from \"../utils/index.js\";\nimport {\n    getFramesForTaggedObject,\n    StackTraceFrame,\n    stacktrace,\n    startTracking,\n    trackingType\n} from \"../utils/stacktrace.js\";\nimport { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\n\nconst TAB_SIZE = 4;\n// this will start tracking only when FERN_STACK_TRACK is defined\n// otherwise this has absolutely no effect whatsoever.\nstartTracking({ skip: 0, maxFrames: 15, filterFunctions: [\"Abstract\"] });\n\nexport class AbstractWriter {\n    /* The buffer of lines being written */\n    protected readonly lineBuffer: string[] = [];\n\n    /* The contents being written */\n    public get buffer() {\n        if (enableStackTracking && this.nodeStackFrames.length > 0) {\n            // if we're emitting tracking comments, let's ensure we get the last little bit of info.\n            // by appending a newline to the buffer before returning it.\n            // (this can be useful when using toString() to get a node's content.)\n            this.writeInternal(\"\\n\");\n        }\n        return this.lineBuffer.join(\"\\n\") + (this.lastCharacterIsNewline ? \"\\n\" : \"\");\n    }\n\n    /* Indentation level (multiple of 4) */\n    private indentLevel = 0;\n    /* Whether anything has been written to the buffer */\n    private hasWrittenAnything = false;\n    /* Whether the last character written was a semi colon */\n    private lastCharacterIsSemicolon = false;\n    /* Whether the last character written was a newline */\n    private lastCharacterIsNewline = false;\n    /* The stack traces associated with the current node */\n    private nodeStackFrames: StackTraceFrame[] = [];\n\n    /**\n     * Writes arbitrary text and nodes\n     * @param text\n     */\n    public write(...parts: (string | AbstractAstNode | undefined)[]): void {\n        for (const text of parts) {\n            if (text != null) {\n                if (typeof text === \"string\") {\n                    const textEndsInNewline = text.length > 0 && text.endsWith(\"\\n\");\n                    // temporarily remove the trailing newline, since we don't want to add the indent prefix after it\n                    const textWithoutNewline = textEndsInNewline ? text.substring(0, text.length - 1) : text;\n\n                    const indent = this.getIndentString();\n                    let indentedText = textWithoutNewline.replaceAll(\"\\n\", `\\n${indent}`);\n                    if (this.isAtStartOfLine()) {\n                        indentedText = indent + indentedText;\n                    }\n                    if (textEndsInNewline) {\n                        indentedText += \"\\n\";\n                    }\n                    this.writeInternal(indentedText);\n                } else {\n                    this.writeNode(text);\n                }\n            }\n        }\n    }\n\n    public writeStatement(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...parts);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes arbitrary text without indentation\n     * @param text\n     */\n    public writeNoIndent(text: string): void {\n        const currIndentLevel = this.indentLevel;\n        this.indentLevel = 0;\n        this.write(text);\n        this.indentLevel = currIndentLevel;\n    }\n\n    /**\n     * Writes a node\n     * @param node\n     */\n    public writeNode(node: AbstractAstNode): void {\n        if (enableStackTracking) {\n            this.nodeStackFrames.push(...getFramesForTaggedObject(node));\n        }\n        node.write(this);\n\n        // if we're using box or multiline comments, write a newline after every node so it emits a comment for the node\n        // since we're dumping a lot of data anyway, might as well be explicit about it.\n        if (enableStackTracking && trackingType !== \"single\") {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    /**\n     * Writes a node or string\n     * @param input\n     */\n    public writeNodeOrString(input: AbstractAstNode | string): void {\n        if (typeof input === \"string\") {\n            this.write(input);\n            return;\n        }\n\n        this.writeNode(input);\n    }\n\n    /**\n     * Writes a node but then suffixes with a `;` and new line\n     * @param node\n     */\n    public writeNodeStatement(node: AbstractAstNode): void {\n        this.writeNode(node);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes text but then suffixes with a `;`\n     * @param node\n     */\n    public writeTextStatement(text: string): void {\n        const codeBlock = new CodeBlock(text);\n        codeBlock.write(this);\n        if (!text.endsWith(\";\")) {\n            this.write(\";\");\n        }\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlow(prefix: string, statement: AbstractAstNode): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlowWithoutStatement(prefix: string): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    /**\n     * Ends a control flow block\n     */\n    public endControlFlow(): void {\n        this.popScope();\n    }\n\n    /**\n     * Starts a control flow without a newline from the previous control flow block\n     * @param prefix\n     * @param statement\n     */\n    public contiguousControlFlow(prefix: string, statement: AbstractAstNode): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow alternative block\n     * @param prefix\n     */\n    public alternativeControlFlow(prefix: string): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    public pushScope() {\n        this.writeLine(\"{\");\n        this.indent();\n    }\n\n    public popScope(withNewline = true) {\n        this.dedent();\n        this.writeNewLineIfLastLineNot();\n        if (withNewline) {\n            this.writeLine(\"}\");\n        } else {\n            this.write(\"}\");\n        }\n    }\n\n    /* Only writes a newline if last line in the buffer is not a newline */\n    public writeLine(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...(parts.length === 0 ? [\"\"] : parts));\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /* Always writes newline */\n    public newLine(): void {\n        this.writeInternal(\"\\n\");\n    }\n\n    public writeSemicolonIfLastCharacterIsNot(): void {\n        if (!this.lastCharacterIsSemicolon) {\n            this.writeInternal(\";\");\n        }\n    }\n\n    public writeNewLineIfLastLineNot(): void {\n        if (!this.lastCharacterIsNewline) {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    public indent(): void {\n        this.indentLevel++;\n    }\n\n    public dedent(): void {\n        this.indentLevel--;\n    }\n\n    public delimit<T extends AbstractAstNode>({\n        nodes,\n        delimiter,\n        writeFunction\n    }: {\n        nodes: T[];\n        delimiter: string;\n        writeFunction: (node: T) => void;\n    }): void {\n        if (nodes.length > 0) {\n            const firstNode = nodes[0];\n            if (firstNode != null) {\n                writeFunction(firstNode);\n            }\n            for (let i = 1; i < nodes.length; i++) {\n                this.write(delimiter);\n                const node = nodes[i];\n                if (node != null) {\n                    writeFunction(node);\n                }\n            }\n        }\n    }\n\n    public toString(): string {\n        return this.buffer;\n    }\n\n    /*******************************\n     * Helper Methods\n     *******************************/\n    private writeInternal(text: string) {\n        if (text.length === 0) {\n            return;\n        }\n\n        const appendToLastLine = !this.lastCharacterIsNewline;\n\n        this.hasWrittenAnything = true;\n        this.lastCharacterIsNewline = text.endsWith(\"\\n\");\n        this.lastCharacterIsSemicolon = text.endsWith(\";\");\n\n        const lines = text.split(\"\\n\");\n\n        const appendTrackingComment =\n            enableStackTracking && !this.shouldSkipTracking(lines) && this.lastCharacterIsNewline;\n\n        if (appendToLastLine) {\n            this.lastLine = `${this.lastLine}${lines.shift() || \"\"}`;\n        }\n\n        if (this.lastCharacterIsNewline) {\n            lines.pop();\n        }\n\n        this.lineBuffer.push(...lines);\n\n        if (appendTrackingComment) {\n            this.appendTrackingComment();\n        }\n    }\n\n    /**\n     * Sets the last line of the buffer\n     * @param line - The line to set\n     */\n    protected set lastLine(line: string) {\n        if (this.lineBuffer.length > 0) {\n            this.lineBuffer[this.lineBuffer.length - 1] = line;\n        } else {\n            this.lineBuffer.push(line);\n        }\n    }\n\n    /**\n     * Gets the last line of the buffer\n     * @returns The last line of the buffer\n     */\n    protected get lastLine() {\n        return this.lineBuffer[this.lineBuffer.length - 1] || \"\";\n    }\n\n    /**\n     * Determines if the tracking comment should be skipped\n     * @param lines - The that are being written out\n     *\n     * @returns True if the tracking comment should be skipped\n     */\n    protected shouldSkipTracking(lines: string[]) {\n        return false;\n    }\n\n    /**\n     * Formats the stack trace frames into a string\n     * @param stack - The stack trace to format\n     * @param prefix - The prefix to add to the stack trace\n     * @returns The formatted stack trace\n     */\n    protected formatStack(stack: StackTraceFrame[], prefix = \"\") {\n        return stack.map((each) => `${prefix ? `(${prefix}) ` : \"\"} ${each.fn} - ${each.path} : ${each.position}`);\n    }\n\n    /**\n     * Filters out frames that start with the name of the current class\n     *\n     * This will filter out frames that start with the name of the current class that inherits from AbstractWriter.\n     *\n     * You can override this function to filter out more things.\n     * @param stack - The stack trace to filter\n     * @returns The filtered stack trace\n     */\n    protected filterStack(stack: StackTraceFrame[]) {\n        return stack.filter((each) => !each.fn.startsWith(`${this.constructor.name}.`));\n    }\n\n    /**\n     * Prepares the stack trace and calls the appropriate tracking comment formatter\n     */\n    protected appendTrackingComment() {\n        const stack = [\n            // adds the stack frames of the current function call\n            ...this.formatStack(this.filterStack(stacktrace({ maxFrames: 15, skip: 3 }))),\n\n            // adds the stack frames of any AstNodes that have been written since the last tracking comment\n            ...this.formatStack(this.filterStack(this.nodeStackFrames), \"node\")\n        ];\n        // reset the ast node stack frames\n        this.nodeStackFrames.length = 0;\n\n        switch (trackingType) {\n            case \"single\":\n                return this.singleLineTrackingComment(stack);\n\n            case \"multiline\":\n                return this.multiLineTrackingComment(stack);\n\n            case \"box\":\n                return this.boxTrackingComment(stack);\n        }\n    }\n\n    /**\n     * Creates a single line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected singleLineTrackingComment(stack: string[]) {\n        this.lastLine = `${this.lastLine} // ${stack.join(\" \")}`;\n    }\n    /**\n     * Creates a multi line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected multiLineTrackingComment(stack: string[]) {\n        this.lineBuffer.push(...stack.map((each) => `    // ${each}`));\n    }\n    /**\n     * Creates a box tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected boxTrackingComment(stack: string[]) {\n        this.lineBuffer.push(\"/*\", ...stack.map((each) => `    ${each}`), \"*/\");\n    }\n\n    private isAtStartOfLine(): boolean {\n        return this.lastCharacterIsNewline || !this.hasWrittenAnything;\n    }\n\n    private getIndentString(): string {\n        return \" \".repeat(this.indentLevel * this.getTabSize());\n    }\n\n    protected getTabSize(): number {\n        return TAB_SIZE;\n    }\n}\n","export { getPackageName } from \"./getPackageName.js\";\nexport { getSdkVersion } from \"./getSdkVersion.js\";\nexport {\n    addGlobalFileFilter,\n    addGlobalFunctionFilter,\n    at,\n    enableStackTracking,\n    getFramesForTaggedObject,\n    StackTraces,\n    stacktrace\n} from \"./stacktrace.js\";\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg<T extends AbstractWriter> = string | AbstractAstNode | ((writer: T) => void);\n}\n\nexport class CodeBlock<T extends AbstractWriter> extends AbstractAstNode {\n    private value: CodeBlock.Arg<T>;\n\n    constructor(value: CodeBlock.Arg<T>) {\n        super();\n        this.value = value;\n    }\n\n    public write(writer: T): void {\n        if (typeof this.value === \"string\") {\n            writer.write(this.value);\n            // if function\n        } else if (typeof this.value === \"function\") {\n            this.value(writer);\n        } else {\n            this.value.write(writer);\n        }\n    }\n}\n","export { AbstractDynamicSnippetsGenerator } from \"./AbstractDynamicSnippetsGenerator.js\";\nexport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nexport { type DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nexport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nexport { type Options, Style } from \"./Options.js\";\nexport { Result } from \"./Result.js\";\nexport { Scope } from \"./Scope.js\";\nexport { type TypeInstance } from \"./TypeInstance.js\";\nexport { DynamicSnippetsTestRunner } from \"./test-utils/DynamicSnippetsTestRunner.js\";\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { AbstractAstNode } from \"../ast/index.js\";\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { AbstractEndpointSnippetGenerator } from \"./AbstractEndpointSnippetGenerator.js\";\nimport { Options } from \"./Options.js\";\nimport { Result } from \"./Result.js\";\n\nexport abstract class AbstractDynamicSnippetsGenerator<\n    Context extends AbstractDynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator extends AbstractEndpointSnippetGenerator<Context>\n> {\n    public constructor(public readonly context: Context) {}\n\n    protected abstract createSnippetGenerator(context: Context): EndpointSnippetGenerator;\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = await snippetGenerator.generateSnippet({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<AbstractAstNode> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        let lastError: Error | undefined = undefined;\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const ast = await snippetGenerator.generateSnippetAst({ endpoint, request, options });\n                return ast;\n            } catch (error) {\n                lastError = error as Error;\n            }\n        }\n        if (lastError != null) {\n            throw lastError;\n        }\n        throw new Error(\n            `Failed to generate snippet AST for endpoint: ${request.endpoint.method} ${request.endpoint.path}`\n        );\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = snippetGenerator.generateSnippetSync({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    /**\n     * Resolves endpoints based on the request and options.\n     * If an endpointId is specified in options, returns only that specific endpoint.\n     * Otherwise, resolves all endpoints matching the endpoint location (method + path).\n     */\n    private resolveEndpoints({\n        request,\n        options\n    }: {\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): FernIr.dynamic.Endpoint[] {\n        if (options.endpointId != null) {\n            const endpoint = this.context.resolveEndpointById(options.endpointId);\n            if (endpoint == null) {\n                throw new Error(`No endpoint found with ID \"${options.endpointId}\"`);\n            }\n            return [endpoint];\n        }\n        return this.context.resolveEndpointLocationOrThrow(request.endpoint);\n    }\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { ErrorReporter } from \"./ErrorReporter.js\";\n\nexport class Result {\n    public reporter: ErrorReporter | undefined;\n    public snippet: string | undefined;\n    public err: Error | undefined;\n\n    constructor() {\n        this.snippet = undefined;\n        this.reporter = undefined;\n        this.err = undefined;\n    }\n\n    public update({ context, snippet }: { context: AbstractDynamicSnippetsGeneratorContext; snippet: string }): void {\n        if (this.shouldUpdate({ snippet, reporter: context.errors })) {\n            this.reporter = context.errors.clone();\n            this.snippet = snippet;\n        }\n    }\n\n    public getResponseOrThrow({\n        endpoint\n    }: {\n        endpoint: FernIr.dynamic.EndpointLocation;\n    }): FernIr.dynamic.EndpointSnippetResponse {\n        if (this.snippet != null && this.reporter != null) {\n            return {\n                snippet: this.snippet,\n                errors: this.reporter.toDynamicSnippetErrors()\n            };\n        }\n        throw this.err ?? new Error(`Failed to generate snippet for endpoint \"${endpoint.method} ${endpoint.path}\"`);\n    }\n\n    private shouldUpdate({ snippet, reporter }: { snippet: string; reporter: ErrorReporter }): boolean {\n        if (this.reporter == null || (this.reporter.size() > 0 && reporter.size() === 0)) {\n            return true;\n        }\n        return snippet.length > (this.snippet?.length ?? 0);\n    }\n}\n","import { assertNever, keys } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { HttpEndpointReferenceParser } from \"@fern-api/fern-definition-schema\";\n\nimport { FernGeneratorExec } from \"../GeneratorNotificationService.js\";\nimport { DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nimport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nimport { Options } from \"./Options.js\";\nimport { TypeInstance } from \"./TypeInstance.js\";\n\nexport abstract class AbstractDynamicSnippetsGeneratorContext {\n    public config: FernGeneratorExec.GeneratorConfig;\n    public options: Options;\n    public errors: ErrorReporter;\n\n    private _ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    private httpEndpointReferenceParser: HttpEndpointReferenceParser;\n\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        this._ir = ir;\n        this.config = config;\n        this.options = options;\n        this.errors = new ErrorReporter();\n        this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n    }\n\n    public abstract clone(): AbstractDynamicSnippetsGeneratorContext;\n\n    public associateQueryParametersByWireValue({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    throw this.newParameterNotRecognizedError(key);\n                }\n                // If this query parameter supports allow-multiple, the user-provided values\n                // must be wrapped in an array.\n                const typeInstanceValue =\n                    this.isListTypeReference(parameter.typeReference) && !Array.isArray(value) ? [value] : value;\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value: typeInstanceValue\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    public associateByWireValueOrDefault({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            this.errors.scope(parameter.name.wireValue);\n            try {\n                let value = values[parameter.name.wireValue];\n\n                if (value == null) {\n                    if (parameter.typeReference.type === \"primitive\" && parameter.typeReference.value === \"STRING\") {\n                        // synthesize a parameter value for string parameters that are missing data\n                        value = `<${parameter.name.wireValue}>`;\n                    } else {\n                        this.errors.add({\n                            severity: Severity.Critical,\n                            message: this.newParameterNotRecognizedError(parameter.name.wireValue).message\n                        });\n                        continue;\n                    }\n                }\n\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n\n        return instances;\n    }\n\n    public associateByWireValue({\n        parameters,\n        values,\n        ignoreMissingParameters\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n        ignoreMissingParameters?: boolean;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    if (ignoreMissingParameters) {\n                        // Required for request payloads that include more information than\n                        // just the target parameters (e.g. union base properties).\n                        continue;\n                    }\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: this.newParameterNotRecognizedError(key).message\n                    });\n                    continue;\n                }\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    /**\n     * Similar to `associateByWireValue` but it builds TypeInstance objects by iterating over schema parameters rather\n     * than snippet values. Skips non-nullable parameters that are missing from the snippet object.\n     */\n    public getExampleObjectProperties({\n        parameters,\n        snippetObject\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        snippetObject: unknown;\n    }): TypeInstance[] {\n        const objectRecord = (\n            typeof snippetObject === \"object\" && snippetObject !== null && !Array.isArray(snippetObject)\n                ? snippetObject\n                : {}\n        ) as Record<string, unknown>;\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            const value = objectRecord[parameter.name.wireValue];\n            if (value == null) {\n                if (parameter.typeReference.type === \"nullable\") {\n                    instances.push({\n                        name: parameter.name,\n                        typeReference: parameter.typeReference,\n                        value: null\n                    });\n                }\n            } else {\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            }\n        }\n        return instances;\n    }\n\n    public getSingleFileValue({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): string | undefined {\n        const fileValue = record[property.wireValue];\n        if (fileValue == null) {\n            return undefined;\n        }\n        if (typeof fileValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file value to be a string, got ${typeof fileValue}`\n            });\n            return undefined;\n        }\n        return fileValue;\n    }\n\n    public getFileArrayValues({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): string[] | undefined {\n        const fileArrayValue = record[property.wireValue];\n        if (fileArrayValue == null) {\n            return undefined;\n        }\n        if (!Array.isArray(fileArrayValue)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file array value to be an array of strings, got ${typeof fileArrayValue}`\n            });\n            return undefined;\n        }\n        const stringValues: string[] = [];\n        for (const value of fileArrayValue) {\n            if (typeof value !== \"string\") {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message: `Expected file array value to be an array of strings, got ${typeof value}`\n                });\n                return undefined;\n            }\n            stringValues.push(value);\n        }\n        return stringValues;\n    }\n\n    public getRecord(value: unknown): Record<string, unknown> | undefined {\n        if (typeof value !== \"object\" || Array.isArray(value)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object with key, value pairs but got: ${\n                    Array.isArray(value) ? \"array\" : typeof value\n                }`\n            });\n            return undefined;\n        }\n        if (value == null) {\n            return {};\n        }\n        return value as Record<string, unknown>;\n    }\n\n    public resolveNamedType({ typeId }: { typeId: FernIr.dynamic.TypeId }): FernIr.dynamic.NamedType | undefined {\n        const namedType = this._ir.types[typeId];\n        if (namedType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Type identified by \"${typeId}\" could not be found`\n            });\n            return undefined;\n        }\n        return namedType;\n    }\n\n    public resolveDiscriminatedUnionTypeInstance({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): DiscriminatedUnionTypeInstance | undefined {\n        const record = this.getRecord(value);\n        if (record == null) {\n            return undefined;\n        }\n\n        const discriminantFieldName = discriminatedUnion.discriminant.wireValue;\n        const discriminantValue = record[discriminantFieldName];\n        if (discriminantValue == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newParameterNotRecognizedError(discriminantFieldName).message\n            });\n            return undefined;\n        }\n        if (typeof discriminantValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected discriminant value to be a string but got: ${typeof discriminantValue}`\n            });\n            return undefined;\n        }\n\n        const singleDiscriminatedUnionType = discriminatedUnion.types[discriminantValue];\n        if (singleDiscriminatedUnionType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `No type found for discriminant value \"${discriminantValue}\"`\n            });\n            return undefined;\n        }\n\n        // Remove the discriminant from the record so that the value is valid for the type.\n        const { [discriminantFieldName]: _, ...filtered } = record;\n\n        return {\n            singleDiscriminatedUnionType,\n            discriminantValue: singleDiscriminatedUnionType.discriminantValue,\n            value: filtered\n        };\n    }\n\n    public resolveEndpointOrThrow(rawEndpoint: string): FernIr.dynamic.Endpoint[] {\n        const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(rawEndpoint);\n        if (parsedEndpoint == null) {\n            throw new Error(`Failed to parse endpoint reference \"${rawEndpoint}\"`);\n        }\n        return this.resolveEndpointLocationOrThrow(parsedEndpoint);\n    }\n\n    public resolveEndpointLocation(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints: FernIr.dynamic.Endpoint[] = [];\n        for (const endpoint of Object.values(this._ir.endpoints)) {\n            if (this.parsedEndpointMatches({ endpoint, parsedEndpoint: location })) {\n                endpoints.push(endpoint);\n            }\n        }\n\n        return endpoints;\n    }\n\n    public resolveEndpointLocationOrThrow(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints = this.resolveEndpointLocation(location);\n        if (endpoints.length === 0) {\n            throw new Error(`Failed to find endpoint identified by \"${location.method} ${location.path}\"`);\n        }\n        return endpoints;\n    }\n\n    public resolveEndpointById(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint | undefined {\n        return this._ir.endpoints[endpointId];\n    }\n\n    public resolveEndpointByIdOrThrow(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint {\n        const endpoint = this.resolveEndpointById(endpointId);\n        if (endpoint == null) {\n            throw new Error(`Failed to find endpoint with ID \"${endpointId}\"`);\n        }\n        return endpoint;\n    }\n\n    public needsRequestParameter({\n        request,\n        inlinePathParameters,\n        inlineFileProperties\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n        inlineFileProperties: boolean;\n    }): boolean {\n        if (this.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n            return true;\n        }\n        if (request.queryParameters != null && request.queryParameters.length > 0) {\n            return true;\n        }\n        if (request.headers != null && request.headers.length > 0) {\n            return true;\n        }\n        if (request.body != null) {\n            return this.includeRequestBodyInWrappedRequest({ body: request.body, inlineFileProperties });\n        }\n        if (request.metadata?.onlyPathParameters) {\n            return false;\n        }\n        return true;\n    }\n\n    public includePathParametersInWrappedRequest({\n        request,\n        inlinePathParameters\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n    }): boolean {\n        return inlinePathParameters && (request.metadata?.includePathParameters ?? false);\n    }\n\n    public isFileUploadRequestBody(\n        body: FernIr.dynamic.InlinedRequestBody\n    ): body is FernIr.dynamic.InlinedRequestBody.FileUpload {\n        switch (body.type) {\n            case \"fileUpload\":\n                return true;\n            case \"properties\":\n            case \"referenced\":\n                return false;\n            default:\n                assertNever(body);\n        }\n    }\n\n    public resolveEnvironmentName(environmentID: string): FernIr.Name | undefined {\n        if (this._ir.environments == null) {\n            return undefined;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            case \"multipleBaseUrls\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            default:\n                assertNever(environments);\n        }\n    }\n\n    public isSingleEnvironmentID(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.EnvironmentId {\n        return typeof environment === \"string\";\n    }\n\n    public isMultiEnvironmentValues(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n        return typeof environment === \"object\";\n    }\n\n    public validateMultiEnvironmentUrlValues(\n        multiEnvironmentUrlValues: FernIr.dynamic.MultipleEnvironmentUrlValues\n    ): boolean {\n        if (this._ir.environments == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message:\n                    \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n            });\n            return false;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message:\n                        \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n                });\n                return false;\n            }\n            case \"multipleBaseUrls\": {\n                const firstEnvironment = environments.environments[0];\n                if (firstEnvironment == null) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Multiple environments are not supported; use the baseUrl option instead\"\n                    });\n                    return false;\n                }\n                const expectedKeys = new Set(keys(firstEnvironment.urls));\n                for (const key of keys(multiEnvironmentUrlValues)) {\n                    if (expectedKeys.has(key)) {\n                        expectedKeys.delete(key);\n                    }\n                }\n                if (expectedKeys.size > 0) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: `The provided environments are invalid; got: [${Object.keys(multiEnvironmentUrlValues).join(\", \")}], expected: [${keys(firstEnvironment.urls).join(\", \")}]`\n                    });\n                    return false;\n                }\n                return true;\n            }\n        }\n    }\n\n    public getValueAsNumber({ value }: { value: unknown }): number | undefined {\n        if (typeof value !== \"number\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"number\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsBoolean({ value }: { value: unknown }): boolean | undefined {\n        if (typeof value !== \"boolean\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"boolean\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsString({ value }: { value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"string\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return this.isOptional(typeReference.value);\n            case \"optional\":\n                return true;\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public isNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return true;\n            case \"optional\":\n                return this.isNullable(typeReference.value);\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public newAuthMismatchError({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): Error {\n        return new Error(`Expected auth type ${auth.type}, got ${values.type}`);\n    }\n\n    public newParameterNotRecognizedError(parameterName: string): Error {\n        return new Error(`\"${parameterName}\" is not a recognized parameter for this endpoint`);\n    }\n\n    public newTypeMismatchError({ expected, value }: { expected: string; value: unknown }): Error {\n        return new Error(`Expected ${expected}, got ${typeof value}`);\n    }\n\n    private includeRequestBodyInWrappedRequest({\n        body,\n        inlineFileProperties\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        switch (body.type) {\n            case \"properties\":\n            case \"referenced\":\n                return true;\n            case \"fileUpload\":\n                return this.includeFileUploadBodyInWrappedRequest({ fileUpload: body, inlineFileProperties });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private includeFileUploadBodyInWrappedRequest({\n        fileUpload,\n        inlineFileProperties\n    }: {\n        fileUpload: FernIr.dynamic.FileUploadRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        return (\n            this.fileUploadHasBodyProperties({ fileUpload }) ||\n            (inlineFileProperties && this.fileUploadHasFileProperties({ fileUpload }))\n        );\n    }\n\n    private fileUploadHasBodyProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return false;\n                case \"bodyProperty\":\n                    return true;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private fileUploadHasFileProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return true;\n                case \"bodyProperty\":\n                    return false;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private isListTypeReference(typeReference: FernIr.dynamic.TypeReference): boolean {\n        if (typeReference.type === \"optional\") {\n            return this.isListTypeReference(typeReference.value);\n        }\n        return typeReference.type === \"list\" || typeReference.type === \"set\";\n    }\n\n    private parsedEndpointMatches({\n        endpoint,\n        parsedEndpoint\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        parsedEndpoint: { method: string; path: string; namespace?: string };\n    }): boolean {\n        return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n    }\n}\n","export { EXAMPLE_REFERENCE_PREFIX, YAML_SCHEMA_VERSION } from \"./constants.js\";\nexport { type NodePath, type NodePathItem } from \"./NodePath.js\";\nexport * as RawSchemas from \"./schemas/index.js\";\nexport { type DefinitionFileSchema, type PackageMarkerFileSchema, type RootApiFileSchema } from \"./schemas/index.js\";\nexport * from \"./utils/auth/index.js\";\nexport * from \"./utils/generics/index.js\";\nexport { getRequestBody } from \"./utils/getRequestBody.js\";\nexport { getResponseBodyType } from \"./utils/getResponseBodyType.js\";\nexport { HttpEndpointReferenceParser } from \"./utils/HttpEndpointReferenceParser.js\";\nexport { isInlineRequestBody } from \"./utils/isInlineRequestBody.js\";\nexport { isOpenApiSourceSchema } from \"./utils/isOpenApiSourceSchema.js\";\nexport { isRawProtobufSourceSchema } from \"./utils/isRawProtobufSourceSchema.js\";\nexport { isRawTextType } from \"./utils/isRawTextType.js\";\nexport { type BytesRequest, parseBytesRequest } from \"./utils/parseBytesRequest.js\";\nexport { parseFileUploadRequest, type RawFileUploadRequest } from \"./utils/parseFileUploadRequest.js\";\nexport { parseRawBytesType, type RawBytesType } from \"./utils/parseRawBytesType.js\";\nexport { parseRawFileType, type RawFileType } from \"./utils/parseRawFileType.js\";\nexport { parseRawTextType, type RawTextType } from \"./utils/parseRawTextType.js\";\nexport { RawPrimitiveType } from \"./utils/RawPrimitiveType.js\";\nexport { recursivelyVisitRawTypeReference } from \"./utils/recursivelyVisitRawTypeReference.js\";\nexport { visitExampleCodeSampleSchema } from \"./utils/visitExampleCodeSampleSchema.js\";\nexport { type ExampleResponseSchemaVisitor, visitExampleResponseSchema } from \"./utils/visitExampleResponseSchema.js\";\nexport {\n    isAnyAuthSchemes,\n    isSingleAuthScheme,\n    type RawApiAuthVisitor,\n    visitRawApiAuth\n} from \"./utils/visitRawApiAuth.js\";\nexport {\n    type AuthSchemeDeclarationVisitor,\n    isHeaderAuthScheme,\n    visitRawAuthSchemeDeclaration\n} from \"./utils/visitRawAuthSchemeDeclaration.js\";\nexport {\n    isRawMultipleBaseUrlsEnvironment,\n    isRawSingleBaseUrlEnvironment,\n    visitRawEnvironmentDeclaration\n} from \"./utils/visitRawEnvironmentDeclaration.js\";\nexport {\n    isVariablePathParameter,\n    type PathParameterDeclarationVisitor,\n    visitRawPathParameter\n} from \"./utils/visitRawPathParameter.js\";\nexport {\n    isRawAliasDefinition,\n    isRawDiscriminatedUnionDefinition,\n    isRawEnumDefinition,\n    isRawObjectDefinition,\n    isRawUndiscriminatedUnionDefinition,\n    type RawTypeDeclarationVisitor,\n    visitRawTypeDeclaration\n} from \"./utils/visitRawTypeDeclaration.js\";\nexport { FernContainerRegex, visitRawTypeReference } from \"./utils/visitRawTypeReference.js\";\n","export declare namespace HttpEndpointReferenceParser {\n    interface Parsed {\n        path: string;\n        method: Method;\n        namespace: string | undefined;\n    }\n\n    type Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\";\n\n    export type ValidationResult = Valid | Invalid;\n\n    interface Valid {\n        type: \"valid\";\n    }\n\n    interface Invalid {\n        type: \"invalid\";\n    }\n}\n\n/**\n * Parses an HTTP endpoint reference like `POST /users/get` or `namespace::POST /users/get`\n */\nexport class HttpEndpointReferenceParser {\n    //eslint-disable-next-line\n    private REFERENCE_REGEX = /^(?:(\\w+)::)?(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n\n    public validate(reference: string): HttpEndpointReferenceParser.ValidationResult {\n        const validFormat = this.REFERENCE_REGEX.test(reference);\n        if (!validFormat) {\n            return { type: \"invalid\" };\n        }\n        return { type: \"valid\" };\n    }\n\n    public tryParse(reference: string): HttpEndpointReferenceParser.Parsed | undefined {\n        const validationResponse = this.validate(reference);\n        if (validationResponse.type === \"invalid\") {\n            return undefined;\n        }\n        const match = reference.match(this.REFERENCE_REGEX);\n        if (match == null || match[2] == null || match[3] == null) {\n            return undefined;\n        }\n        return {\n            namespace: match[1], // undefined if no namespace prefix\n            method: match[2] as HttpEndpointReferenceParser.Method,\n            path: match[3]\n        };\n    }\n}\n","export const Severity = {\n    Critical: \"CRITICAL\",\n    Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n    type Path = readonly PathItem[];\n\n    type PathItem = string | ArrayPathItem;\n\n    type Severity = (typeof Severity)[keyof typeof Severity];\n\n    interface ArrayPathItem {\n        index: number;\n    }\n\n    interface Error {\n        path?: Path;\n        severity: Severity;\n        message: string;\n    }\n}\n\ninterface Error_ {\n    severity: \"CRITICAL\" | \"WARNING\";\n    path: string[] | undefined;\n    message: string;\n}\n\nexport class ErrorReporter {\n    private errors: ErrorReporter.Error[];\n    private path: ErrorReporter.PathItem[];\n\n    constructor() {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n        this.errors.push({\n            ...err,\n            path: [...this.path]\n        });\n    }\n\n    public scope(path: ErrorReporter.PathItem): void {\n        this.path.push(path);\n    }\n\n    public unscope(): void {\n        this.path.pop();\n    }\n\n    public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n        return this.errors.filter((err) => err.severity === severity);\n    }\n\n    public empty(): boolean {\n        return this.errors.length === 0;\n    }\n\n    public size(): number {\n        return this.errors.length;\n    }\n\n    public clone(): ErrorReporter {\n        const clone = new ErrorReporter();\n        clone.errors = [...this.errors];\n        clone.path = [...this.path];\n        return clone;\n    }\n\n    public reset(): void {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public toDynamicSnippetErrors(): Error_[] {\n        return this.errors.map((err) => ({\n            severity: err.severity,\n            path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n            message: err.message\n        }));\n    }\n\n    private pathToStringArray(path: ErrorReporter.Path): string[] {\n        const result: string[] = [];\n        for (const item of path) {\n            if (typeof item === \"string\") {\n                result.push(item);\n                continue;\n            }\n            result[result.length - 1] += `[${item.index}]`;\n        }\n        return result;\n    }\n}\n","export const Scope = {\n    PathParameters: \"pathParameters\",\n    QueryParameters: \"queryParameters\",\n    Headers: \"headers\",\n    RequestBody: \"requestBody\"\n} as const;\n\nexport type Scope = (typeof Scope)[keyof typeof Scope];\n","import {\n    AbstractDynamicSnippetsGeneratorContext,\n    FernGeneratorExec,\n    Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { assertDefined, assertNever, entries, visitDiscriminatedUnion } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { BaseSwiftCustomConfigSchema, NameRegistry, Referencer, swift } from \"@fern-api/swift-codegen\";\nimport { pascalCase } from \"../util/pascal-case.js\";\nimport { DynamicTypeLiteralMapper } from \"./DynamicTypeLiteralMapper.js\";\nimport { FilePropertyMapper } from \"./FilePropertyMapper.js\";\nimport { registerDiscriminatedUnionVariants } from \"./register-discriminated-unions.js\";\nimport { registerLiteralEnums, registerLiteralEnumsForObjectProperties } from \"./register-literal-enums.js\";\nimport { registerUndiscriminatedUnionVariants } from \"./register-undiscriminated-unions.js\";\n\nexport class DynamicSnippetsGeneratorContext extends AbstractDynamicSnippetsGeneratorContext {\n    public ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    public customConfig: BaseSwiftCustomConfigSchema | undefined;\n    public dynamicTypeLiteralMapper: DynamicTypeLiteralMapper;\n    public filePropertyMapper: FilePropertyMapper;\n    public nameRegistry: NameRegistry;\n\n    public constructor({\n        ir,\n        config,\n        options\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        super({ ir: ir, config, options });\n        this.ir = ir;\n        this.customConfig =\n            config.customConfig != null ? (config.customConfig as BaseSwiftCustomConfigSchema) : undefined;\n        this.dynamicTypeLiteralMapper = new DynamicTypeLiteralMapper({ context: this });\n        this.filePropertyMapper = new FilePropertyMapper({ context: this });\n        this.nameRegistry = NameRegistry.create();\n        this.registerSourceSymbols(this.nameRegistry, ir);\n    }\n\n    private registerSourceSymbols(nameRegistry: NameRegistry, ir: FernIr.dynamic.DynamicIntermediateRepresentation) {\n        const apiNamePascalCase = pascalCase(this.config.workspaceName);\n        const registeredSourceModuleSymbol = nameRegistry.registerSourceModuleSymbol({\n            configModuleName: this.customConfig?.moduleName,\n            apiNamePascalCase,\n            asIsSymbols: Object.values(swift.SourceAsIsFileSpecs).flatMap(\n                (spec: swift.AsIsFileSpec<swift.AsIsSymbolName>) => spec.symbols\n            )\n        });\n        nameRegistry.registerRootClientSymbol({\n            configClientClassName: this.customConfig?.clientClassName,\n            registeredSourceModuleName: registeredSourceModuleSymbol.name\n        });\n        entries(swift.SourceTemplateFileSpecs).forEach(([templateId]) => {\n            switch (templateId) {\n                case \"ClientError\":\n                    nameRegistry.registerErrorEnumSymbol(registeredSourceModuleSymbol.name);\n                    break;\n                case \"HTTPClient\":\n                    nameRegistry.registerSourceStaticSymbol(templateId, { type: \"class\" });\n                    break;\n                default:\n                    assertNever(templateId);\n            }\n        });\n        nameRegistry.registerEnvironmentSymbol({\n            configEnvironmentEnumName: this.customConfig?.environmentEnumName,\n            registeredSourceModuleName: registeredSourceModuleSymbol.name\n        });\n\n        // Must first register top-level symbols\n        const registeredSchemaTypes = Object.entries(ir.types).map(([typeId, namedType]) => {\n            const symbolShape = visitDiscriminatedUnion(namedType, \"type\")._visit<swift.TypeSymbolShape>({\n                alias: () => ({ type: \"struct\" }),\n                enum: () => ({ type: \"enum-with-raw-values\" }),\n                object: () => ({ type: \"struct\" }),\n                discriminatedUnion: () => ({ type: \"enum-with-associated-values\" }),\n                undiscriminatedUnion: () => ({ type: \"enum-with-associated-values\" }),\n                _other: () => ({ type: \"other\" })\n            });\n            const schemaTypeSymbol = nameRegistry.registerSchemaTypeSymbol(\n                typeId,\n                namedType.declaration.name.pascalCase.unsafeName,\n                symbolShape\n            );\n            return { namedType, registeredSymbol: schemaTypeSymbol };\n        });\n\n        registeredSchemaTypes.forEach(({ namedType, registeredSymbol }) => {\n            registerDiscriminatedUnionVariants({\n                parentSymbol: registeredSymbol,\n                registry: nameRegistry,\n                namedType\n            });\n            registerLiteralEnums({\n                parentSymbol: registeredSymbol,\n                registry: nameRegistry,\n                namedType,\n                context: this\n            });\n            registerUndiscriminatedUnionVariants({\n                parentSymbol: registeredSymbol,\n                registry: nameRegistry,\n                namedType,\n                context: this\n            });\n        });\n\n        nameRegistry.registerRequestsContainerSymbol();\n\n        Object.entries(ir.endpoints).forEach(([endpointId, endpoint]) => {\n            if (endpoint.request.type === \"inlined\") {\n                if (endpoint.request.body?.type === \"properties\") {\n                    const requestTypeSymbol = nameRegistry.registerRequestTypeSymbol({\n                        endpointId,\n                        requestNamePascalCase: endpoint.request.declaration.name.pascalCase.unsafeName\n                    });\n                    registerLiteralEnumsForObjectProperties({\n                        parentSymbol: requestTypeSymbol,\n                        registry: nameRegistry,\n                        properties: endpoint.request.body.value\n                    });\n                }\n                if (endpoint.request.body?.type === \"fileUpload\") {\n                    nameRegistry.registerRequestTypeSymbol({\n                        endpointId,\n                        requestNamePascalCase: endpoint.request.declaration.name.pascalCase.unsafeName\n                    });\n                }\n            }\n        });\n\n        return nameRegistry;\n    }\n\n    public getNamedTypeOrThrow(typeId: string): FernIr.dynamic.NamedType {\n        const namedType = this.ir.types[typeId];\n        assertDefined(namedType, `Type declaration with the id '${typeId}' not found`);\n        return namedType;\n    }\n\n    public getPropertiesOfDiscriminatedUnionVariant(typeId: string): FernIr.dynamic.NamedParameter[] {\n        const namedType = this.getNamedTypeOrThrow(typeId);\n        return visitDiscriminatedUnion(namedType, \"type\")._visit({\n            alias: () => [],\n            enum: () => [],\n            object: (otd) => otd.properties,\n            discriminatedUnion: () => [],\n            undiscriminatedUnion: () => [],\n            _other: () => []\n        });\n    }\n\n    public getSwiftTypeReferenceFromScope(\n        typeReference: FernIr.dynamic.TypeReference,\n        fromSymbol: swift.Symbol\n    ): swift.TypeReference {\n        const referencer = this.createReferencer(fromSymbol);\n        return visitDiscriminatedUnion(typeReference, \"type\")._visit({\n            list: (ref) => swift.TypeReference.array(this.getSwiftTypeReferenceFromScope(ref.value, fromSymbol)),\n            literal: (ref) => {\n                return visitDiscriminatedUnion(ref.value, \"type\")._visit({\n                    boolean: () => referencer.referenceAsIsType(\"JSONValue\"),\n                    string: (literalType) => {\n                        const symbol = this.nameRegistry.getNestedLiteralEnumSymbolOrThrow(\n                            fromSymbol,\n                            literalType.value\n                        );\n                        return referencer.referenceType(symbol);\n                    },\n                    _other: () => referencer.referenceAsIsType(\"JSONValue\")\n                });\n            },\n            map: (ref) =>\n                swift.TypeReference.dictionary(\n                    this.getSwiftTypeReferenceFromScope(ref.key, fromSymbol),\n                    this.getSwiftTypeReferenceFromScope(ref.value, fromSymbol)\n                ),\n            named: (ref) => {\n                const toSymbol = this.nameRegistry.getSchemaTypeSymbolOrThrow(ref.value);\n                const symbolRef = this.nameRegistry.reference({ fromSymbol, toSymbol });\n                return swift.TypeReference.symbol(symbolRef);\n            },\n            nullable: (ref) =>\n                this.customConfig?.nullableAsOptional\n                    ? swift.TypeReference.optional(this.getSwiftTypeReferenceFromScope(ref.value, fromSymbol))\n                    : swift.TypeReference.nullable(this.getSwiftTypeReferenceFromScope(ref.value, fromSymbol)),\n            optional: (ref) => swift.TypeReference.optional(this.getSwiftTypeReferenceFromScope(ref.value, fromSymbol)),\n            primitive: (ref) => {\n                return visitDiscriminatedUnion(ref, \"value\")._visit({\n                    STRING: () => referencer.referenceSwiftType(\"String\"),\n                    BOOLEAN: () => referencer.referenceSwiftType(\"Bool\"),\n                    INTEGER: () => referencer.referenceSwiftType(\"Int\"),\n                    UINT: () => referencer.referenceSwiftType(\"UInt\"),\n                    UINT_64: () => referencer.referenceSwiftType(\"UInt64\"),\n                    LONG: () => referencer.referenceSwiftType(\"Int64\"),\n                    FLOAT: () => referencer.referenceSwiftType(\"Float\"),\n                    DOUBLE: () => referencer.referenceSwiftType(\"Double\"),\n                    BIG_INTEGER: () => referencer.referenceSwiftType(\"String\"),\n                    DATE: () => referencer.referenceAsIsType(\"CalendarDate\"),\n                    DATE_TIME: () => referencer.referenceFoundationType(\"Date\"),\n                    BASE_64: () => referencer.referenceSwiftType(\"String\"),\n                    UUID: () => referencer.referenceFoundationType(\"UUID\"),\n                    _other: () => referencer.referenceAsIsType(\"JSONValue\")\n                });\n            },\n            set: () => referencer.referenceAsIsType(\"JSONValue\"),\n            unknown: () => referencer.referenceAsIsType(\"JSONValue\"),\n            _other: () => referencer.referenceAsIsType(\"JSONValue\")\n        });\n    }\n\n    public createReferencer(fromSymbol: swift.Symbol) {\n        return new Referencer(this.nameRegistry, fromSymbol);\n    }\n\n    public clone(): DynamicSnippetsGeneratorContext {\n        return new DynamicSnippetsGeneratorContext({\n            ir: this.ir,\n            config: this.config,\n            options: this.options\n        });\n    }\n}\n","export * from \"./custom-config/index.js\";\nexport * from \"./helpers/index.js\";\nexport * from \"./name-registry/index.js\";\nexport * as swift from \"./swift.js\";\nexport * from \"./syntax/index.js\";\n","export * as EnumWithAssociatedValues from \"./enum-with-associated-values.js\";\n","import { camelCase, upperFirst } from \"lodash-es\";\nimport { toWords } from \"number-to-words\";\n\nimport { pascalCase } from \"../pascal-case.js\";\n\n/**\n * Generates a PascalCase name from a value (for type/struct names).\n */\nexport function sanitizeToPascalCase(value: string): string {\n    const sanitized = sanitizeForIdentifier(value);\n    return pascalCase(sanitized);\n}\n\n/**\n * Generates a camelCase name from a value (for property/case names).\n */\nexport function sanitizeToCamelCase(value: string): string {\n    const sanitized = sanitizeForIdentifier(value);\n    return camelCase(sanitized);\n}\n\nexport function sanitizeForIdentifier(originalValue: string): string {\n    if (originalValue === \"\") {\n        return \"empty\";\n    }\n\n    let sanitizedValue = originalValue;\n\n    // Convert leading numbers to words first\n    if (/^\\d/.test(sanitizedValue)) {\n        const result = convertLeadingNumberToWords(sanitizedValue);\n        sanitizedValue = result.numberAsWords + upperFirst(result.rest);\n    }\n\n    const isAlreadyValid = /^[a-zA-Z][a-zA-Z0-9]*$/.test(sanitizedValue);\n    if (!isAlreadyValid) {\n        // Remove invalid characters from the left first to avoid unwanted capitalization\n        sanitizedValue = sanitizedValue.replace(/^[^a-zA-Z0-9]+/, \"\");\n        // Apply camelCase to preserve word boundaries\n        sanitizedValue = camelCase(sanitizedValue);\n    }\n\n    // Double-check if it still starts with a digit (shouldn't happen, but safety check)\n    if (/^\\d/.test(sanitizedValue)) {\n        sanitizedValue = \"value\" + sanitizedValue;\n    }\n\n    if (sanitizedValue === \"\") {\n        return \"value\";\n    }\n\n    return sanitizedValue;\n}\n\nfunction convertLeadingNumberToWords(value: string): { numberAsWords: string; rest: string } {\n    // Extract leading digits\n    const match = value.match(/^(\\d+)/);\n    if (!match || !match[1]) {\n        return { numberAsWords: \"\", rest: value };\n    }\n\n    const leadingNumber = match[1];\n    const rest = value.slice(leadingNumber.length);\n\n    try {\n        // Convert the number to words and remove spaces/hyphens\n        const numberAsWords = toWords(parseInt(leadingNumber, 10));\n        return { numberAsWords, rest };\n    } catch {\n        // If conversion fails, fall back to digit-by-digit\n        const digitWords: Record<string, string> = {\n            \"0\": \"zero\",\n            \"1\": \"one\",\n            \"2\": \"two\",\n            \"3\": \"three\",\n            \"4\": \"four\",\n            \"5\": \"five\",\n            \"6\": \"six\",\n            \"7\": \"seven\",\n            \"8\": \"eight\",\n            \"9\": \"nine\"\n        };\n        const words = leadingNumber\n            .split(\"\")\n            .map((digit) => digitWords[digit] || digit)\n            .join(\"\");\n        return { numberAsWords: words, rest };\n    }\n}\n","import { camelCase, upperFirst } from \"lodash-es\";\n\nexport function pascalCase(str: string) {\n    return upperFirst(camelCase(str));\n}\n","export * as LiteralEnum from \"./literal-enum.js\";\n","import { camelCase } from \"lodash-es\";\n\nimport { pascalCase } from \"../pascal-case.js\";\n\n/**\n * Generates a safe name for a string literal enum from the literal value.\n */\nexport function generateName(literalValue: string): string {\n    const sanitizedLiteralValue = sanitizeLiteralValue(literalValue);\n    return pascalCase(sanitizedLiteralValue);\n}\n\n/**\n * Generates a safe enum case label for a string literal enum from the literal value.\n */\nexport function generateEnumCaseLabel(literalValue: string): string {\n    const sanitizedLiteralValue = sanitizeLiteralValue(literalValue);\n    return camelCase(sanitizedLiteralValue);\n}\n\n/**\n * Sanitizes a literal value to produce a clean alphanumeric string suitable for Swift identifiers.\n * Uses \"value\" as fallback for anything that doesn't result in a clean identifier.\n */\nexport function sanitizeLiteralValue(originalValue: string): string {\n    if (originalValue === \"\") {\n        return \"empty\";\n    }\n    let sanitizedValue = originalValue;\n    const isAlreadyValid = /^[a-zA-Z][a-zA-Z0-9]*$/.test(originalValue);\n    if (!isAlreadyValid) {\n        // Remove invalid characters from the left first to avoid unwanted capitalization\n        sanitizedValue = sanitizedValue.replace(/^[^a-zA-Z0-9]+/, \"\");\n        // Apply camelCase to preserve word boundaries\n        sanitizedValue = camelCase(sanitizedValue);\n    }\n    // If it starts with a digit, use \"value\"\n    if (/^\\d/.test(sanitizedValue)) {\n        return \"value\";\n    }\n    if (sanitizedValue === \"\") {\n        return \"value\";\n    }\n    return sanitizedValue;\n}\n","import { swift } from \"../index.js\";\nimport { NameRegistry } from \"../name-registry/index.js\";\n\nexport class Referencer {\n    private readonly nameRegistry: NameRegistry;\n    private readonly fromSymbol: swift.Symbol | string;\n\n    public constructor(nameRegistry: NameRegistry, fromSymbol: swift.Symbol | string) {\n        this.nameRegistry = nameRegistry;\n        this.fromSymbol = fromSymbol;\n    }\n\n    public referenceSwiftType(symbolName: swift.SwiftTypeSymbolName) {\n        const symbolRef = this.nameRegistry.reference({\n            fromSymbol: this.fromSymbol,\n            toSymbol: swift.Symbol.swiftType(symbolName)\n        });\n        return swift.TypeReference.symbol(symbolRef);\n    }\n\n    public referenceFoundationType(symbolName: swift.FoundationTypeSymbolName) {\n        const symbolRef = this.nameRegistry.reference({\n            fromSymbol: this.fromSymbol,\n            toSymbol: swift.Symbol.foundationType(symbolName)\n        });\n        return swift.TypeReference.symbol(symbolRef);\n    }\n\n    public referenceAsIsType(symbolName: swift.AsIsSymbolName) {\n        const symbol = this.nameRegistry.getAsIsSymbolOrThrow(symbolName);\n        const symbolRef = this.nameRegistry.reference({\n            fromSymbol: this.fromSymbol,\n            toSymbol: symbol\n        });\n        return swift.TypeReference.symbol(symbolRef);\n    }\n\n    public referenceSourceTemplateType(templateId: swift.SourceTemplateFileId) {\n        const symbol = this.nameRegistry.getSourceTemplateSymbolOrThrow(templateId);\n        const symbolRef = this.nameRegistry.reference({\n            fromSymbol: this.fromSymbol,\n            toSymbol: symbol\n        });\n        return swift.TypeReference.symbol(symbolRef);\n    }\n\n    public referenceType(symbol: swift.Symbol | string) {\n        const symbolRef = this.nameRegistry.reference({\n            fromSymbol: this.fromSymbol,\n            toSymbol: symbol\n        });\n        return swift.TypeReference.symbol(symbolRef);\n    }\n\n    public resolveToSymbolIfSymbolType(typeReference: swift.TypeReference) {\n        const reference = typeReference.getReferenceIfSymbolType();\n        if (reference === null) {\n            return null;\n        }\n        return this.nameRegistry.resolveReference({\n            fromSymbol: this.fromSymbol,\n            reference\n        });\n    }\n\n    public resolvesToTheAsIsType(typeReference: swift.TypeReference, asIsSymbolName: swift.AsIsSymbolName) {\n        const resolvedSymbol = this.resolveToSymbolIfSymbolType(typeReference);\n        const registeredSymbol = this.nameRegistry.getAsIsSymbolOrThrow(asIsSymbolName);\n        return resolvedSymbol?.id === registeredSymbol.id;\n    }\n\n    public resolvesToASwiftType(typeReference: swift.TypeReference) {\n        const symbol = this.resolveToSymbolIfSymbolType(typeReference);\n        return symbol?.isSwiftSymbol ?? false;\n    }\n\n    public resolvesToTheSwiftType(typeReference: swift.TypeReference, swiftSymbolName: swift.SwiftTypeSymbolName) {\n        const symbol = this.resolveToSymbolIfSymbolType(typeReference);\n        return symbol?.id === swift.Symbol.swiftType(swiftSymbolName).id;\n    }\n\n    public resolvesToAFoundationType(typeReference: swift.TypeReference) {\n        const symbol = this.resolveToSymbolIfSymbolType(typeReference);\n        return symbol?.isFoundationSymbol ?? false;\n    }\n\n    public resolvesToTheFoundationType(\n        typeReference: swift.TypeReference,\n        foundationSymbolName: swift.FoundationTypeSymbolName\n    ) {\n        const symbol = this.resolveToSymbolIfSymbolType(typeReference);\n        return symbol?.id === swift.Symbol.foundationType(foundationSymbolName).id;\n    }\n\n    public resolvesToACustomType(typeReference: swift.TypeReference) {\n        const symbol = this.resolveToSymbolIfSymbolType(typeReference);\n        return symbol?.isCustomSymbol ?? false;\n    }\n\n    public resolvesToAnEnumWithRawValues(typeReference: swift.TypeReference) {\n        const symbol = this.resolveToSymbolIfSymbolType(typeReference);\n        return symbol?.shape.type === \"enum-with-raw-values\";\n    }\n}\n","export * as UndiscriminatedUnion from \"./undiscriminated-union.js\";\n","import { assertNever, assertNonNull } from \"@fern-api/core-utils\";\nimport { camelCase, upperFirst } from \"lodash-es\";\nimport { NameRegistry, swift } from \"../../index.js\";\n\nconst CASE_LABELS_BY_SWIFT_SYMBOL_NAME: Record<swift.SwiftTypeSymbolName, string> = {\n    String: \"string\",\n    Bool: \"bool\",\n    Int: \"int\",\n    Int64: \"int64\",\n    UInt: \"uint\",\n    UInt64: \"uint64\",\n    Float: \"float\",\n    Double: \"double\",\n    Void: \"void\",\n    Encoder: \"encoder\",\n    Decoder: \"decoder\",\n    Any: \"any\"\n};\n\nconst CASE_LABELS_BY_FOUNDATION_SYMBOL_NAME: Record<swift.FoundationTypeSymbolName, string> = {\n    Data: \"data\",\n    Date: \"date\",\n    UUID: \"uuid\"\n};\n\nexport function inferCaseNameForTypeReference(\n    parentSymbol: swift.Symbol,\n    typeReference: swift.TypeReference,\n    registry: NameRegistry\n): string {\n    if (typeReference.variant.type === \"symbol\") {\n        const symbolRef = typeReference.variant.symbol;\n        const symbol = registry.resolveReference({ fromSymbol: parentSymbol, reference: symbolRef });\n        assertNonNull(symbol, `Cannot find symbol ${symbolRef} for type reference ${typeReference.variant.type}`);\n        const symbolName = symbol.name;\n        if (swift.Symbol.isSwiftSymbol(symbol.id) && swift.Symbol.isSwiftSymbolName(symbolName)) {\n            return CASE_LABELS_BY_SWIFT_SYMBOL_NAME[symbolName];\n        } else if (swift.Symbol.isFoundationSymbol(symbol.id) && swift.Symbol.isFoundationSymbolName(symbolName)) {\n            return CASE_LABELS_BY_FOUNDATION_SYMBOL_NAME[symbolName];\n        } else {\n            return camelCase(symbolName);\n        }\n    } else if (typeReference.variant.type === \"generic\") {\n        const argumentTypeCaseNames = typeReference.variant.arguments.map((argument) =>\n            inferCaseNameForTypeReference(parentSymbol, argument, registry)\n        );\n        return `${inferCaseNameForTypeReference(parentSymbol, typeReference.variant.reference, registry)}Of${upperFirst(argumentTypeCaseNames.join(\"And\"))}`;\n    } else if (typeReference.variant.type === \"array\") {\n        const elementTypeCaseName = inferCaseNameForTypeReference(\n            parentSymbol,\n            typeReference.variant.elementType,\n            registry\n        );\n        return `${elementTypeCaseName}Array`;\n    } else if (typeReference.variant.type === \"dictionary\") {\n        const keyTypeCaseName = inferCaseNameForTypeReference(parentSymbol, typeReference.variant.keyType, registry);\n        const valueTypeCaseName = inferCaseNameForTypeReference(\n            parentSymbol,\n            typeReference.variant.valueType,\n            registry\n        );\n        return `${keyTypeCaseName}To${upperFirst(valueTypeCaseName)}Dictionary`;\n    } else if (typeReference.variant.type === \"optional\") {\n        const valueTypeCaseName = inferCaseNameForTypeReference(\n            parentSymbol,\n            typeReference.variant.valueType,\n            registry\n        );\n        return `optional${upperFirst(valueTypeCaseName)}`;\n    } else if (typeReference.variant.type === \"nullable\") {\n        const valueTypeCaseName = inferCaseNameForTypeReference(\n            parentSymbol,\n            typeReference.variant.valueType,\n            registry\n        );\n        return `nullable${upperFirst(valueTypeCaseName)}`;\n    } else if (typeReference.variant.type === \"tuple\") {\n        const memberTypeCaseNames = typeReference.variant.elements.map((element) =>\n            inferCaseNameForTypeReference(parentSymbol, element, registry)\n        );\n        return `tuple${upperFirst(memberTypeCaseNames.join(\"And\"))}`;\n    } else if (typeReference.variant.type === \"member-access\") {\n        const targetTypeCaseName = inferCaseNameForTypeReference(parentSymbol, typeReference.variant.target, registry);\n        return `${targetTypeCaseName}${upperFirst(typeReference.variant.memberName)}`;\n    } else {\n        assertNever(typeReference.variant);\n    }\n}\n","import { assertDefined, assertNever, SymbolRegistry as Namespace } from \"@fern-api/core-utils\";\nimport { uniqWith } from \"lodash-es\";\nimport { LiteralEnum } from \"../helpers/index.js\";\nimport { swift } from \"../index.js\";\nimport { RequestsNamespace } from \"./requests-namespace.js\";\nimport { SourceModuleNamespace } from \"./source-module-namespace.js\";\nimport { TestModuleNamespace } from \"./test-module-namespace.js\";\n\ntype UndiscriminatedUnionVariant = {\n    caseName: string;\n    swiftType: swift.TypeReference;\n    docsContent: string | undefined;\n};\n\ntype DiscriminatedUnionVariant = {\n    caseName: string;\n    symbolName: string;\n    discriminantWireValue: string;\n    docsContent: string | undefined;\n};\n\nexport class NameRegistry {\n    public static create(): NameRegistry {\n        return new NameRegistry();\n    }\n\n    private readonly symbolRegistry: swift.SymbolRegistry;\n    private readonly sourceModuleNamespace: SourceModuleNamespace;\n    private readonly testModuleNamespace: TestModuleNamespace;\n    private readonly requestsNamespace: RequestsNamespace;\n    private readonly sourceStaticSymbolsByName: Map<string, swift.Symbol>;\n    private readonly testStaticSymbolsByName: Map<string, swift.Symbol>;\n    private readonly requestTypeSymbols: swift.Symbol[];\n    private readonly subClientSymbols: swift.Symbol[];\n    private readonly nestedLiteralEnumSymbolsByParentSymbolId: Map<string, Map<string, swift.Symbol>>;\n    private readonly discriminatedUnionVariantsByParentSymbolId: Map<string, DiscriminatedUnionVariant[]>;\n    private readonly undiscriminatedUnionVariantsByParentSymbolId: Map<string, UndiscriminatedUnionVariant[]>;\n\n    private constructor() {\n        this.symbolRegistry = swift.SymbolRegistry.create();\n        this.sourceModuleNamespace = new SourceModuleNamespace();\n        this.testModuleNamespace = new TestModuleNamespace();\n        this.requestsNamespace = new RequestsNamespace();\n        this.sourceStaticSymbolsByName = new Map();\n        this.testStaticSymbolsByName = new Map();\n        this.requestTypeSymbols = [];\n        this.subClientSymbols = [];\n        this.nestedLiteralEnumSymbolsByParentSymbolId = new Map();\n        this.discriminatedUnionVariantsByParentSymbolId = new Map();\n        this.undiscriminatedUnionVariantsByParentSymbolId = new Map();\n    }\n\n    public getAsIsSymbolOrThrow(symbolName: swift.AsIsSymbolName): swift.Symbol {\n        const symbol = this.sourceStaticSymbolsByName.get(symbolName);\n        assertDefined(symbol, `As is symbol not found for name \"${symbolName}\"`);\n        return symbol;\n    }\n\n    public getSourceTemplateSymbolOrThrow(templateId: swift.SourceTemplateFileId): swift.Symbol {\n        switch (templateId) {\n            case \"ClientError\": {\n                return this.getErrorEnumSymbolOrThrow();\n            }\n            case \"HTTPClient\": {\n                const symbolId = this.symbolRegistry.inferSymbolIdForSourceModuleType(templateId);\n                return swift.Symbol.create(symbolId, templateId, { type: \"class\" });\n            }\n            default:\n                assertNever(templateId);\n        }\n    }\n\n    /**\n     * Registers a unique symbol name for the source module.\n     * Tries preferred name first, then falls back to standard candidates.\n     */\n    public registerSourceModuleSymbol({\n        configModuleName,\n        apiNamePascalCase,\n        asIsSymbols\n    }: {\n        configModuleName: string | undefined;\n        apiNamePascalCase: string;\n        asIsSymbols: { name: string; shape: swift.TypeSymbolShape }[];\n    }): swift.Symbol {\n        const candidates: [string, ...string[]] = [\n            `${apiNamePascalCase}`,\n            `${apiNamePascalCase}Api`,\n            `${apiNamePascalCase}Module`\n        ];\n        if (typeof configModuleName === \"string\") {\n            candidates.unshift(configModuleName);\n        }\n        const tempNamespace = new Namespace({ reservedSymbolNames: [\"Swift\", \"Foundation\"] });\n        const moduleSymbolName = tempNamespace.registerSymbol(\"Module\", candidates);\n        const moduleSymbol = this.symbolRegistry.registerSourceModule(moduleSymbolName);\n        asIsSymbols.forEach((asIsSymbol) => {\n            const symbolName = asIsSymbol.name;\n            this.registerSourceStaticSymbol(symbolName, asIsSymbol.shape);\n        });\n        return moduleSymbol;\n    }\n\n    public getRegisteredSourceModuleSymbolOrThrow(): swift.Symbol {\n        return this.symbolRegistry.getRegisteredSourceModuleSymbolOrThrow();\n    }\n\n    public registerSourceStaticSymbol(symbolName: string, shape: swift.TypeSymbolShape) {\n        this.symbolRegistry.registerSourceModuleType(symbolName, shape);\n        this.sourceModuleNamespace.addStaticSymbolName(symbolName);\n        const symbolId = this.symbolRegistry.inferSymbolIdForSourceModuleType(symbolName);\n        const symbol = swift.Symbol.create(symbolId, symbolName, shape);\n        this.sourceStaticSymbolsByName.set(symbolName, symbol);\n    }\n\n    /**\n     * Registers a unique symbol name for the test module.\n     * Tries preferred name first, then falls back to standard candidates.\n     */\n    public registerTestModuleSymbol({\n        sourceModuleName,\n        asIsSymbols\n    }: {\n        sourceModuleName: string;\n        asIsSymbols: { name: string; shape: swift.TypeSymbolShape }[];\n    }): swift.Symbol {\n        const candidates: [string, ...string[]] = [\n            `${sourceModuleName}Tests`,\n            `${sourceModuleName}Test`,\n            `${sourceModuleName}TestsModule`\n        ];\n        const moduleSymbolName = (() => {\n            const ns = new Namespace();\n            ns.registerSymbol(\"Swift\", [\"Swift\"]);\n            ns.registerSymbol(\"Foundation\", [\"Foundation\"]);\n            ns.registerSymbol(sourceModuleName, [sourceModuleName]);\n            return ns.registerSymbol(`${sourceModuleName}Tests`, candidates);\n        })();\n        const moduleSymbol = this.symbolRegistry.registerTestModule(moduleSymbolName);\n        asIsSymbols.forEach((asIsSymbol) => {\n            const symbolName = asIsSymbol.name;\n            this.symbolRegistry.registerTestModuleType(symbolName, asIsSymbol.shape);\n            this.testModuleNamespace.addAsIsSymbol(symbolName);\n            const symbolId = this.symbolRegistry.inferSymbolIdForTestModuleType(symbolName);\n            const symbol = swift.Symbol.create(symbolId, symbolName, asIsSymbol.shape);\n            this.testStaticSymbolsByName.set(symbolName, symbol);\n        });\n        return moduleSymbol;\n    }\n\n    public getRegisteredTestModuleSymbolOrThrow(): swift.Symbol {\n        return this.symbolRegistry.getRegisteredTestModuleSymbolOrThrow();\n    }\n\n    /**\n     * Registers a unique symbol name for the root client class.\n     * Tries preferred name first, then falls back to standard candidates.\n     */\n    public registerRootClientSymbol({\n        configClientClassName,\n        registeredSourceModuleName\n    }: {\n        configClientClassName: string | undefined;\n        registeredSourceModuleName: string;\n    }): swift.Symbol {\n        const candidates: [string, ...string[]] = [\n            `${registeredSourceModuleName}Client`,\n            `${registeredSourceModuleName}ApiClient`,\n            `${registeredSourceModuleName}Service`\n        ];\n        if (typeof configClientClassName === \"string\") {\n            candidates.unshift(configClientClassName);\n        }\n        const symbolName = this.sourceModuleNamespace.addRootClientSymbolName(candidates);\n        return this.symbolRegistry.registerSourceModuleType(symbolName, { type: \"class\" });\n    }\n\n    public getRootClientSymbolOrThrow(): swift.Symbol {\n        const symbolName = this.sourceModuleNamespace.getRootClientSymbolNameOrThrow();\n        const symbolId = this.symbolRegistry.inferSymbolIdForSourceModuleType(symbolName);\n        return this.symbolRegistry.getSymbolByIdOrThrow(symbolId);\n    }\n\n    /**\n     * Registers and generates a unique symbol name for the environment enum.\n     * Tries preferred name first, then falls back to standard candidates.\n     */\n    public registerEnvironmentSymbol({\n        configEnvironmentEnumName,\n        registeredSourceModuleName\n    }: {\n        configEnvironmentEnumName: string | undefined;\n        registeredSourceModuleName: string;\n    }): swift.Symbol {\n        const candidates: [string, ...string[]] = [\n            `${registeredSourceModuleName}Environment`,\n            `${registeredSourceModuleName}Environ`,\n            `${registeredSourceModuleName}Env`\n        ];\n        if (typeof configEnvironmentEnumName === \"string\") {\n            candidates.unshift(configEnvironmentEnumName);\n        }\n        const symbolName = this.sourceModuleNamespace.addEnvironmentSymbolName(candidates);\n        return this.symbolRegistry.registerSourceModuleType(symbolName, { type: \"enum-with-raw-values\" });\n    }\n\n    public getEnvironmentSymbolOrThrow(): swift.Symbol {\n        const symbolName = this.sourceModuleNamespace.getEnvironmentSymbolNameOrThrow();\n        const symbolId = this.symbolRegistry.inferSymbolIdForSourceModuleType(symbolName);\n        return this.symbolRegistry.getSymbolByIdOrThrow(symbolId);\n    }\n\n    public registerErrorEnumSymbol(registeredSourceModuleName: string): swift.Symbol {\n        const candidates: [string, ...string[]] = [\n            `${registeredSourceModuleName}Error`,\n            `${registeredSourceModuleName}ClientError`\n        ];\n        const symbolName = this.sourceModuleNamespace.addErrorEnumSymbolName(candidates);\n        return this.symbolRegistry.registerSourceModuleType(symbolName, { type: \"enum-with-associated-values\" });\n    }\n\n    public getErrorEnumSymbolOrThrow(): swift.Symbol {\n        const symbolName = this.sourceModuleNamespace.getErrorEnumSymbolNameOrThrow();\n        const symbolId = this.symbolRegistry.inferSymbolIdForSourceModuleType(symbolName);\n        return this.symbolRegistry.getSymbolByIdOrThrow(symbolId);\n    }\n\n    public registerRequestsContainerSymbol(): swift.Symbol {\n        const symbolName = this.sourceModuleNamespace.addRequestsContainerSymbolName([\n            \"Requests\",\n            \"RequestTypes\",\n            \"InlineRequests\"\n        ]);\n        return this.symbolRegistry.registerSourceModuleType(symbolName, { type: \"enum-container\" });\n    }\n\n    public getRequestsContainerSymbolOrThrow(): swift.Symbol {\n        const symbolName = this.sourceModuleNamespace.getRequestsContainerSymbolNameOrThrow();\n        const symbolId = this.symbolRegistry.inferSymbolIdForSourceModuleType(symbolName);\n        return this.symbolRegistry.getSymbolByIdOrThrow(symbolId);\n    }\n\n    /**\n     * Registers and generates a unique symbol name for an inline request type.\n     * Generates different fallback candidates based on whether the request name already ends with \"Request\".\n     *\n     * @param endpointId The unique identifier of the endpoint\n     * @param requestNamePascalCase The request name in PascalCase\n     */\n    public registerRequestTypeSymbol({\n        endpointId,\n        requestNamePascalCase\n    }: {\n        endpointId: string;\n        requestNamePascalCase: string;\n    }): swift.Symbol {\n        const fallbackCandidates: string[] = [`${requestNamePascalCase}Type`];\n        if (requestNamePascalCase.endsWith(\"Request\")) {\n            fallbackCandidates.push(`${requestNamePascalCase}Body`, `${requestNamePascalCase}BodyType`);\n        } else {\n            fallbackCandidates.push(\n                `${requestNamePascalCase}Request`,\n                `${requestNamePascalCase}RequestBody`,\n                `${requestNamePascalCase}RequestBodyType`\n            );\n        }\n        const parentSymbol = this.getRequestsContainerSymbolOrThrow();\n        const symbolName = this.requestsNamespace.addRequestTypeSymbol(endpointId, requestNamePascalCase, [\n            requestNamePascalCase,\n            ...fallbackCandidates\n        ]);\n        const symbol = this.symbolRegistry.registerNestedType({\n            parentSymbol,\n            symbolName,\n            shape: { type: \"struct\" }\n        });\n        this.requestTypeSymbols.push(symbol);\n        return symbol;\n    }\n\n    public getRequestTypeSymbolOrThrow(endpointId: string, requestNamePascalCase: string): swift.Symbol {\n        const symbolName = this.requestsNamespace.getRequestTypeNameOrThrow(endpointId, requestNamePascalCase);\n        const parentSymbol = this.getRequestsContainerSymbolOrThrow();\n        const symbolId = this.symbolRegistry.inferSymbolIdForNestedType(parentSymbol.id, symbolName);\n        return this.symbolRegistry.getSymbolByIdOrThrow(symbolId);\n    }\n\n    public getAllRequestTypeSymbols(): swift.Symbol[] {\n        return [...this.requestTypeSymbols];\n    }\n\n    /**\n     * Registers and generates a unique symbol name for a sub-client class.\n     * Generates fallback candidates by combining filepath parts with the subpackage name\n     * to create unique identifiers when simple names collide.\n     *\n     * @param subpackageId The unique identifier of the subpackage\n     * @param fernFilepathPartNamesPascalCase Array of filepath parts in PascalCase\n     * @param subpackageNamePascalCase The subpackage name in PascalCase\n     */\n    public registerSubClientSymbol({\n        subpackageId,\n        fernFilepathPartNamesPascalCase,\n        subpackageNamePascalCase\n    }: {\n        subpackageId: string;\n        fernFilepathPartNamesPascalCase: string[];\n        subpackageNamePascalCase: string;\n    }): swift.Symbol {\n        const reversedParts = fernFilepathPartNamesPascalCase.toReversed();\n        reversedParts.shift();\n        const fallbackCandidates = reversedParts.map(\n            (_, partIdx) =>\n                reversedParts\n                    .slice(0, partIdx + 1)\n                    .reverse()\n                    .join(\"\") +\n                subpackageNamePascalCase +\n                \"Client\"\n        );\n        const symbolName = this.sourceModuleNamespace.addSubClientSymbolName(subpackageId, [\n            `${subpackageNamePascalCase}Client`,\n            ...fallbackCandidates\n        ]);\n        const symbol = this.symbolRegistry.registerSourceModuleType(symbolName, { type: \"class\" });\n        this.subClientSymbols.push(symbol);\n        return symbol;\n    }\n\n    public getSubClientSymbolOrThrow(subpackageId: string): swift.Symbol {\n        const symbolName = this.sourceModuleNamespace.getSubClientSymbolNameOrThrow(subpackageId);\n        const symbolId = this.symbolRegistry.inferSymbolIdForSourceModuleType(symbolName);\n        return this.symbolRegistry.getSymbolByIdOrThrow(symbolId);\n    }\n\n    public getAllSubClientSymbols(): swift.Symbol[] {\n        return [...this.subClientSymbols];\n    }\n\n    /**\n     * Registers and generates a unique symbol name for a schema type (struct, enum, union, etc.).\n     * Tries candidate names in order: {Type}, {Type}Type, {Type}Model, {Type}Schema.\n     *\n     * @param typeId The unique identifier of the type\n     * @param typeDeclarationNamePascalCase The type declaration name in PascalCase\n     */\n    public registerSchemaTypeSymbol(\n        typeId: string,\n        typeDeclarationNamePascalCase: string,\n        shape: swift.TypeSymbolShape\n    ): swift.Symbol {\n        const symbolName = this.sourceModuleNamespace.addSchemaTypeSymbolName(typeId, [\n            typeDeclarationNamePascalCase,\n            `${typeDeclarationNamePascalCase}Type`,\n            `${typeDeclarationNamePascalCase}Model`,\n            `${typeDeclarationNamePascalCase}Schema`\n        ]);\n        return this.symbolRegistry.registerSourceModuleType(symbolName, shape);\n    }\n\n    public getSchemaTypeSymbolOrThrow(typeId: string): swift.Symbol {\n        const symbolName = this.sourceModuleNamespace.getSchemaTypeSymbolNameOrThrow(typeId);\n        const symbolId = this.symbolRegistry.inferSymbolIdForSourceModuleType(symbolName);\n        return this.symbolRegistry.getSymbolByIdOrThrow(symbolId);\n    }\n\n    public registerNestedLiteralEnumSymbol({\n        parentSymbol,\n        literalValue\n    }: {\n        parentSymbol: swift.Symbol | string;\n        literalValue: string;\n    }) {\n        const parentSymbolId = typeof parentSymbol === \"string\" ? parentSymbol : parentSymbol.id;\n\n        const enumsByLiteralValue =\n            this.nestedLiteralEnumSymbolsByParentSymbolId.get(parentSymbolId) ?? new Map<string, swift.Symbol>();\n        const existingSymbol = enumsByLiteralValue.get(literalValue);\n        if (existingSymbol) {\n            return existingSymbol;\n        }\n        const literalEnumSymbolsForParent = Array.from(enumsByLiteralValue.values());\n\n        const symbolName = (() => {\n            const ns = new Namespace({ reservedSymbolNames: [\"CodingKeys\"] });\n            literalEnumSymbolsForParent.forEach((s) => {\n                ns.registerSymbol(s.id, [s.name]);\n            });\n            const mainCandidate = LiteralEnum.generateName(literalValue);\n            return ns.registerSymbol(literalValue, [\n                mainCandidate,\n                `${mainCandidate}Literal`,\n                `${mainCandidate}Enum`,\n                `${mainCandidate}StringEnum`\n            ]);\n        })();\n\n        const newSymbol = this.symbolRegistry.registerNestedType({\n            parentSymbol,\n            symbolName,\n            shape: { type: \"enum-with-raw-values\" }\n        });\n        enumsByLiteralValue.set(literalValue, newSymbol);\n        this.nestedLiteralEnumSymbolsByParentSymbolId.set(parentSymbolId, enumsByLiteralValue);\n        return newSymbol;\n    }\n\n    public getNestedLiteralEnumSymbolOrThrow(parentSymbol: swift.Symbol | string, literalValue: string): swift.Symbol {\n        const parentSymbolId = typeof parentSymbol === \"string\" ? parentSymbol : parentSymbol.id;\n        const enumsByLiteralValue =\n            this.nestedLiteralEnumSymbolsByParentSymbolId.get(parentSymbolId) ?? new Map<string, swift.Symbol>();\n        const existingSymbol = enumsByLiteralValue.get(literalValue);\n        assertDefined(\n            existingSymbol,\n            `Nested literal enum symbol not found for literal value \"${literalValue}\" in parent symbol \"${parentSymbolId}\"`\n        );\n        return existingSymbol;\n    }\n\n    public getAllNestedLiteralEnumSymbolsOrThrow(parentSymbol: swift.Symbol | string): {\n        symbol: swift.Symbol;\n        literalValue: string;\n        caseLabel: string;\n    }[] {\n        const parentSymbolId = typeof parentSymbol === \"string\" ? parentSymbol : parentSymbol.id;\n        const enumsByLiteralValue =\n            this.nestedLiteralEnumSymbolsByParentSymbolId.get(parentSymbolId) ?? new Map<string, swift.Symbol>();\n        return Array.from(enumsByLiteralValue.entries())\n            .sort(([, symbol1], [, symbol2]) => symbol1.name.localeCompare(symbol2.name))\n            .map(([literalValue, symbol]) => ({\n                symbol,\n                literalValue,\n                caseLabel: LiteralEnum.generateEnumCaseLabel(literalValue)\n            }));\n    }\n\n    public registerDiscriminatedUnionVariants({\n        parentSymbol,\n        variants\n    }: {\n        parentSymbol: swift.Symbol | string;\n        variants: DiscriminatedUnionVariant[];\n    }) {\n        const parentSymbolId = typeof parentSymbol === \"string\" ? parentSymbol : parentSymbol.id;\n        const sortedVariants = [...variants].sort((a, b) => a.caseName.localeCompare(b.caseName));\n        this.discriminatedUnionVariantsByParentSymbolId.set(parentSymbolId, sortedVariants);\n        sortedVariants.forEach((variant) => {\n            this.symbolRegistry.registerNestedType({\n                parentSymbol,\n                symbolName: variant.symbolName,\n                shape: { type: \"struct\" }\n            });\n        });\n        return sortedVariants;\n    }\n\n    public getDiscriminatedUnionVariantSymbolOrThrow(\n        parentSymbol: swift.Symbol | string,\n        discriminantWireValue: string\n    ): swift.Symbol {\n        const parentSymbolId = typeof parentSymbol === \"string\" ? parentSymbol : parentSymbol.id;\n        const variants = this.discriminatedUnionVariantsByParentSymbolId.get(parentSymbolId) ?? [];\n        const variant = variants.find((v) => v.discriminantWireValue === discriminantWireValue);\n        assertDefined(\n            variant,\n            `Discriminated union variant symbol not found for discriminant wire value \"${discriminantWireValue}\" in parent symbol \"${parentSymbolId}\"`\n        );\n        const symbolId = this.symbolRegistry.inferSymbolIdForNestedType(parentSymbolId, variant.symbolName);\n        return swift.Symbol.create(symbolId, variant.symbolName, { type: \"struct\" });\n    }\n\n    public getAllDiscriminatedUnionVariantsOrThrow(parentSymbol: swift.Symbol | string): DiscriminatedUnionVariant[] {\n        const parentSymbolId = typeof parentSymbol === \"string\" ? parentSymbol : parentSymbol.id;\n        return this.discriminatedUnionVariantsByParentSymbolId.get(parentSymbolId) ?? [];\n    }\n\n    public registerUndiscriminatedUnionVariants({\n        parentSymbol,\n        variants\n    }: {\n        parentSymbol: swift.Symbol | string;\n        variants: UndiscriminatedUnionVariant[];\n    }) {\n        const parentSymbolId = typeof parentSymbol === \"string\" ? parentSymbol : parentSymbol.id;\n        const distinctVariants = uniqWith(variants, (a, b) => a.caseName === b.caseName);\n        distinctVariants.sort((a, b) => a.caseName.localeCompare(b.caseName));\n        this.undiscriminatedUnionVariantsByParentSymbolId.set(parentSymbolId, distinctVariants);\n        return distinctVariants;\n    }\n\n    public getAllUndiscriminatedUnionVariantsOrThrow(\n        parentSymbol: swift.Symbol | string\n    ): UndiscriminatedUnionVariant[] {\n        const parentSymbolId = typeof parentSymbol === \"string\" ? parentSymbol : parentSymbol.id;\n        const variants = this.undiscriminatedUnionVariantsByParentSymbolId.get(parentSymbolId) ?? [];\n        return variants;\n    }\n\n    public registerWireTestSuiteSymbol(subclientName: string) {\n        const symbolName = this.testModuleNamespace.registerWireTestSuiteSymbol(subclientName);\n        return this.symbolRegistry.registerTestModuleType(symbolName, { type: \"struct\" });\n    }\n\n    public getWireTestSuiteSymbolOrThrow(subclientName: string): swift.Symbol {\n        const symbolName = this.testModuleNamespace.getWireTestSuiteNameOrThrow(subclientName);\n        const symbolId = this.symbolRegistry.inferSymbolIdForTestModuleType(symbolName);\n        return this.symbolRegistry.getSymbolByIdOrThrow(symbolId);\n    }\n\n    public referenceFromSourceModuleScope(symbol: swift.Symbol | string) {\n        const moduleSymbol = this.getRegisteredSourceModuleSymbolOrThrow();\n        return this.symbolRegistry.reference({ fromSymbol: moduleSymbol, toSymbol: symbol });\n    }\n\n    public reference({ fromSymbol, toSymbol }: { fromSymbol: swift.Symbol | string; toSymbol: swift.Symbol | string }) {\n        return this.symbolRegistry.reference({ fromSymbol, toSymbol });\n    }\n\n    public resolveReference({ fromSymbol, reference }: { fromSymbol: swift.Symbol | string; reference: string }) {\n        return this.symbolRegistry.resolveReference({ fromSymbol, reference });\n    }\n}\n","import { SymbolRegistry as Namespace } from \"@fern-api/core-utils\";\n\nexport class RequestsNamespace {\n    private readonly namespace: Namespace;\n\n    public constructor() {\n        this.namespace = new Namespace();\n    }\n\n    public getRequestTypeNameOrThrow(endpointId: string, requestNamePascalCase: string) {\n        const nameId = this.requestTypeNameId(endpointId, requestNamePascalCase);\n        return this.namespace.getSymbolNameByIdOrThrow(nameId);\n    }\n\n    public addRequestTypeSymbol(\n        endpointId: string,\n        requestNamePascalCase: string,\n        symbolNameCandidates: [string, ...string[]]\n    ) {\n        const nameId = this.requestTypeNameId(endpointId, requestNamePascalCase);\n        return this.namespace.registerSymbol(nameId, symbolNameCandidates);\n    }\n\n    private requestTypeNameId(endpointId: string, requestNamePascalCase: string): string {\n        return `${endpointId}_${requestNamePascalCase}`;\n    }\n}\n","import { SymbolRegistry as Namespace } from \"@fern-api/core-utils\";\n\nexport class SourceModuleNamespace {\n    private readonly namespace: Namespace;\n\n    public constructor() {\n        this.namespace = new Namespace();\n    }\n\n    public addStaticSymbolName(symbolName: string) {\n        const nameId = this.staticSymbolNameId(symbolName);\n        return this.namespace.registerSymbol(nameId, [symbolName]);\n    }\n\n    private staticSymbolNameId(symbolName: string): string {\n        return `Static:${symbolName}`;\n    }\n\n    public addRootClientSymbolName(symbolNameCandidates: [string, ...string[]]) {\n        const nameId = this.rootClientSymbolNameId();\n        return this.namespace.registerSymbol(nameId, symbolNameCandidates);\n    }\n\n    public getRootClientSymbolNameOrThrow() {\n        return this.namespace.getSymbolNameByIdOrThrow(this.rootClientSymbolNameId());\n    }\n\n    private rootClientSymbolNameId(): string {\n        return `RootClientClass`;\n    }\n\n    public addEnvironmentSymbolName(symbolNameCandidates: [string, ...string[]]) {\n        const nameId = this.environmentSymbolNameId();\n        return this.namespace.registerSymbol(nameId, symbolNameCandidates);\n    }\n\n    public getEnvironmentSymbolNameOrThrow() {\n        return this.namespace.getSymbolNameByIdOrThrow(this.environmentSymbolNameId());\n    }\n\n    private environmentSymbolNameId(): string {\n        return `EnvironmentEnum`;\n    }\n\n    public addErrorEnumSymbolName(symbolNameCandidates: [string, ...string[]]) {\n        const nameId = this.errorEnumSymbolNameId();\n        return this.namespace.registerSymbol(nameId, symbolNameCandidates);\n    }\n\n    public getErrorEnumSymbolNameOrThrow() {\n        return this.namespace.getSymbolNameByIdOrThrow(this.errorEnumSymbolNameId());\n    }\n\n    private errorEnumSymbolNameId(): string {\n        return `ErrorEnum`;\n    }\n\n    public addRequestsContainerSymbolName(symbolNameCandidates: [string, ...string[]]) {\n        const nameId = this.requestsContainerSymbolNameId();\n        return this.namespace.registerSymbol(nameId, symbolNameCandidates);\n    }\n\n    public getRequestsContainerSymbolNameOrThrow() {\n        return this.namespace.getSymbolNameByIdOrThrow(this.requestsContainerSymbolNameId());\n    }\n\n    private requestsContainerSymbolNameId(): string {\n        return `RequestsContainer`;\n    }\n\n    public addSubClientSymbolName(subpackageId: string, symbolNameCandidates: [string, ...string[]]) {\n        const nameId = this.subClientSymbolNameId(subpackageId);\n        return this.namespace.registerSymbol(nameId, symbolNameCandidates);\n    }\n\n    public getSubClientSymbolNameOrThrow(subpackageId: string) {\n        return this.namespace.getSymbolNameByIdOrThrow(this.subClientSymbolNameId(subpackageId));\n    }\n\n    private subClientSymbolNameId(subpackageId: string): string {\n        return `SubClient:${subpackageId}`;\n    }\n\n    public addSchemaTypeSymbolName(typeId: string, symbolNameCandidates: [string, ...string[]]) {\n        const nameId = this.schemaTypeSymbolNameId(typeId);\n        return this.namespace.registerSymbol(nameId, symbolNameCandidates);\n    }\n\n    public getSchemaTypeSymbolNameOrThrow(typeId: string) {\n        const nameId = this.schemaTypeSymbolNameId(typeId);\n        return this.namespace.getSymbolNameByIdOrThrow(nameId);\n    }\n\n    private schemaTypeSymbolNameId(typeId: string): string {\n        return `SchemaType:${typeId}`;\n    }\n}\n","import { SymbolRegistry as Namespace } from \"@fern-api/core-utils\";\n\nexport class TestModuleNamespace {\n    private readonly namespace: Namespace;\n\n    public constructor() {\n        this.namespace = new Namespace();\n    }\n\n    private asIsNameId(symbolName: string): string {\n        return `AsIs:${symbolName}`;\n    }\n\n    private wireTestSuiteNameId(typeId: string): string {\n        return `WireTestSuite:${typeId}`;\n    }\n\n    // Setters\n\n    public addAsIsSymbol(symbolName: string) {\n        const nameId = this.asIsNameId(symbolName);\n        this.namespace.registerSymbol(nameId, [symbolName]);\n    }\n\n    public registerWireTestSuiteSymbol(subclientName: string): string {\n        return this.namespace.registerSymbol(this.wireTestSuiteNameId(subclientName), [\n            `${subclientName}WireTests`,\n            `${subclientName}WireTestSuite`\n        ]);\n    }\n\n    public getWireTestSuiteNameOrThrow(subclientName: string): string {\n        return this.namespace.getSymbolNameByIdOrThrow(this.wireTestSuiteNameId(subclientName));\n    }\n}\n","import {\n    Class,\n    CodeBlock,\n    Comment,\n    ComputedProperty,\n    DocComment,\n    EnumWithAssociatedValues,\n    EnumWithRawValues,\n    Extension,\n    FunctionArgument,\n    FunctionParameter,\n    Initializer,\n    Method,\n    Property,\n    Struct\n} from \"./ast/index.js\";\n\nexport function class_(args: Class.Args): Class {\n    return new Class(args);\n}\n\nexport function codeBlock(args: CodeBlock.Args): CodeBlock {\n    return new CodeBlock(args);\n}\n\nexport function comment(args: Comment.Args): Comment {\n    return new Comment(args);\n}\n\nexport function computedProperty(args: ComputedProperty.Args): ComputedProperty {\n    return new ComputedProperty(args);\n}\n\nexport function docComment(args: DocComment.Args): DocComment {\n    return new DocComment(args);\n}\n\nexport function enumWithAssociatedValues(args: EnumWithAssociatedValues.Args): EnumWithAssociatedValues {\n    return new EnumWithAssociatedValues(args);\n}\n\nexport function enumWithRawValues(args: EnumWithRawValues.Args): EnumWithRawValues {\n    return new EnumWithRawValues(args);\n}\n\nexport function extension(args: Extension.Args): Extension {\n    return new Extension(args);\n}\n\nexport function functionArgument(args: FunctionArgument.Args): FunctionArgument {\n    return new FunctionArgument(args);\n}\n\nexport function functionParameter(args: FunctionParameter.Args): FunctionParameter {\n    return new FunctionParameter(args);\n}\n\nexport function initializer(args: Initializer.Args): Initializer {\n    return new Initializer(args);\n}\n\nexport function method(args: Method.Args): Method {\n    return new Method(args);\n}\n\nexport function property(args: Property.Args): Property {\n    return new Property(args);\n}\n\nexport function struct(args: Struct.Args): Struct {\n    return new Struct(args);\n}\n\nexport * from \"./ast/index.js\";\nexport * from \"./symbol/index.js\";\n","export { AccessLevel } from \"./AccessLevel.js\";\nexport { Class } from \"./Class.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Comment } from \"./Comment.js\";\nexport { ComputedProperty } from \"./ComputedProperty.js\";\nexport { DeclarationType } from \"./DeclarationType.js\";\nexport { DocComment } from \"./DocComment.js\";\nexport { EnumWithAssociatedValues } from \"./EnumWithAssociatedValues.js\";\nexport { EnumWithRawValues } from \"./EnumWithRawValues.js\";\nexport { Expression } from \"./Expression.js\";\nexport { Extension } from \"./Extension.js\";\nexport type { FileComponent } from \"./FileComponent.js\";\nexport { FunctionArgument } from \"./FunctionArgument.js\";\nexport { FunctionParameter } from \"./FunctionParameter.js\";\nexport { Initializer } from \"./Initializer.js\";\nexport { LineBreak } from \"./LineBreak.js\";\nexport { Method } from \"./Method.js\";\nexport { Pattern } from \"./Pattern.js\";\nexport { Property } from \"./Property.js\";\nexport { Protocol } from \"./Protocol.js\";\nexport { Statement } from \"./Statement.js\";\nexport { Struct } from \"./Struct.js\";\nexport { TypeReference } from \"./TypeReference.js\";\n","/**\n * Swift access levels for controlling code visibility and accessibility.\n */\nexport const AccessLevel = {\n    /**\n     * Most permissive. Accessible from other modules, allows subclassing and overriding.\n     */\n    Open: \"open\",\n\n    /**\n     * Accessible from other modules, but subclassing/overriding restricted to defining module.\n     */\n    Public: \"public\",\n\n    /**\n     * Accessible within the same package.\n     */\n    Package: \"package\",\n\n    /**\n     * Default access level. Accessible within the same module only.\n     */\n    Internal: \"internal\",\n\n    /**\n     * Accessible within the same source file only.\n     */\n    Fileprivate: \"fileprivate\",\n\n    /**\n     * Most restrictive. Accessible within the enclosing declaration only.\n     */\n    Private: \"private\"\n} as const;\n\nexport type AccessLevel = (typeof AccessLevel)[keyof typeof AccessLevel];\n","import { AccessLevel } from \"./AccessLevel.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DocComment } from \"./DocComment.js\";\nimport { Initializer } from \"./Initializer.js\";\nimport { Method } from \"./Method.js\";\nimport { Property } from \"./Property.js\";\nimport { Protocol } from \"./Protocol.js\";\n\nexport declare namespace Class {\n    interface Args {\n        name: string;\n        final?: true;\n        accessLevel?: AccessLevel;\n        conformances?: Protocol[];\n        properties: Property[];\n        initializers?: Initializer[];\n        methods?: Method[];\n        docs?: DocComment;\n    }\n}\n\nexport class Class extends AstNode {\n    public readonly name: string;\n    public readonly final?: true;\n    public readonly accessLevel?: AccessLevel;\n    public readonly conformances: Protocol[];\n    public readonly properties: Property[];\n    public readonly initializers: Initializer[];\n    public readonly methods: Method[];\n    public readonly docs?: DocComment;\n\n    public constructor({\n        accessLevel,\n        name,\n        final,\n        conformances,\n        properties,\n        initializers,\n        methods,\n        docs\n    }: Class.Args) {\n        super();\n        this.name = name;\n        this.final = final;\n        this.accessLevel = accessLevel;\n        this.conformances = conformances ?? [];\n        this.properties = properties;\n        this.initializers = initializers ?? [];\n        this.methods = methods ?? [];\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.write(writer);\n        }\n        if (this.accessLevel != null) {\n            writer.write(this.accessLevel);\n            writer.write(\" \");\n        }\n        if (this.final) {\n            writer.write(\"final \");\n        }\n        writer.write(`class ${this.name}`);\n        this.conformances.forEach((conformance, index) => {\n            if (index === 0) {\n                writer.write(\": \");\n            } else if (index > 0) {\n                writer.write(\", \");\n            }\n            writer.write(conformance);\n        });\n        writer.write(\" {\");\n        writer.newLine();\n        writer.indent();\n        this.properties.forEach((property) => {\n            property.write(writer);\n            writer.newLine();\n        });\n        if (this.initializers.length > 0) {\n            writer.newLine();\n            this.initializers.forEach((initializer, initializerIdx) => {\n                if (initializerIdx > 0) {\n                    writer.newLine();\n                }\n                initializer.write(writer);\n                writer.newLine();\n            });\n        }\n        if (this.methods.length > 0) {\n            writer.newLine();\n            this.methods.forEach((method, methodIdx) => {\n                if (methodIdx > 0) {\n                    writer.newLine();\n                }\n                method.write(writer);\n                writer.newLine();\n            });\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n}\n","export { AstNode } from \"./AstNode.js\";\nexport { Writer } from \"./Writer.js\";\n","import { AbstractAstNode } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { Writer } from \"./Writer.js\";\n\nexport abstract class AstNode extends AbstractAstNode {\n    public toString(): string {\n        const writer = new Writer();\n        this.write(writer);\n        return writer.toString();\n    }\n\n    public toStringWithIndentation(indentation: number): string {\n        const writer = new Writer();\n        for (let i = 1; i < indentation; i++) {\n            writer.indent();\n        }\n        this.write(writer);\n        for (let i = 1; i < indentation; i++) {\n            writer.dedent();\n        }\n        return writer.toString();\n    }\n}\n","import { AbstractWriter } from \"@fern-api/browser-compatible-base-generator\";\n\nexport class Writer extends AbstractWriter {\n    public toString(): string {\n        return this.buffer;\n    }\n}\n","import { CodeBlock as CommonCodeBlock } from \"@fern-api/browser-compatible-base-generator\";\nimport { noop } from \"@fern-api/core-utils\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { LineBreak } from \"./LineBreak.js\";\nimport { Statement } from \"./Statement.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Args = CommonCodeBlock.Arg<Writer>;\n}\n\nexport class CodeBlock extends AstNode {\n    private args: CodeBlock.Args;\n\n    public constructor(args: CodeBlock.Args) {\n        super();\n        this.args = args;\n    }\n\n    public write(writer: Writer): void {\n        const commonCodeBlock = new CommonCodeBlock(this.args);\n        writer.write(\"{\");\n        writer.newLine();\n        writer.indent();\n        commonCodeBlock.write(writer);\n        writer.dedent();\n        writer.write(\"}\");\n    }\n\n    public static empty(): CodeBlock {\n        return new CodeBlock(noop);\n    }\n\n    public static withStatements(statements: (Statement | LineBreak)[]): CodeBlock {\n        return new CodeBlock((writer) => {\n            statements.forEach((statement) => {\n                statement.write(writer);\n            });\n        });\n    }\n}\n","import { AstNode, Writer } from \"./core/index.js\";\n\nexport declare namespace Comment {\n    interface Args {\n        content: string;\n    }\n}\n\nexport class Comment extends AstNode {\n    private readonly content: string;\n\n    public constructor({ content }: Comment.Args) {\n        super();\n        this.content = content;\n    }\n\n    public write(writer: Writer): void {\n        const lines = this.content.split(\"\\n\");\n        lines.forEach((line) => {\n            writer.write(`// ${line}`);\n            writer.newLine();\n        });\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { escapeReservedKeyword } from \"../syntax/index.js\";\nimport { AccessLevel } from \"./AccessLevel.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DocComment } from \"./DocComment.js\";\nimport { Expression } from \"./Expression.js\";\nimport { Statement } from \"./Statement.js\";\nimport { TypeReference } from \"./TypeReference.js\";\n\nexport declare namespace ComputedProperty {\n    interface Args {\n        unsafeName: string;\n        accessLevel?: AccessLevel;\n        type: TypeReference;\n        body: Expression | CodeBlock;\n        docs?: DocComment;\n    }\n}\n\nexport class ComputedProperty extends AstNode {\n    public readonly unsafeName: string;\n    public readonly accessLevel?: AccessLevel;\n    public readonly type: TypeReference;\n    public readonly body: Expression | CodeBlock;\n    public readonly docs?: DocComment;\n\n    public constructor({ unsafeName, accessLevel, type, body, docs }: ComputedProperty.Args) {\n        super();\n        this.unsafeName = unsafeName;\n        this.accessLevel = accessLevel;\n        this.type = type;\n        this.body = body;\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.write(writer);\n        }\n        if (this.accessLevel != null) {\n            writer.write(this.accessLevel);\n            writer.write(\" \");\n        }\n        writer.write(\"var \");\n        writer.write(escapeReservedKeyword(this.unsafeName));\n        writer.write(\": \");\n        this.type.write(writer);\n        writer.write(\" \");\n        if (this.body instanceof CodeBlock) {\n            this.body.write(writer);\n        } else if (this.body instanceof Expression) {\n            const codeBlock = CodeBlock.withStatements([Statement.expressionStatement(this.body)]);\n            codeBlock.write(writer);\n        } else {\n            assertNever(this.body);\n        }\n    }\n}\n","export function escapeSwiftStringLiteral(rawValue: string): string {\n    return (\n        rawValue\n            // First handle unicode escapes - convert \\uXXXX to \\u{XXXX}\n            .replace(/\\\\u([0-9a-fA-F]{4})/g, \"\\\\u{$1}\")\n            // Handle special escape sequences that are invalid in Swift\n            // Use negative lookbehind to ensure the backslash isn't already escaped\n            .replace(/(?<!\\\\)\\\\f/g, \"\\\\u{000C}\") // form feed\n            .replace(/(?<!\\\\)\\\\v/g, \"\\\\u{000B}\") // vertical tab\n            .replace(/(?<!\\\\)\\\\0/g, \"\\\\u{0000}\") // null character\n            // Escape double quotes (but not if already escaped)\n            .replace(/(?<!\\\\)\"/g, '\\\\\"')\n        // \\n, \\r, \\t, \\\\ are already valid in Swift and don't need conversion\n    );\n}\n","const reservedKeywords = [\n    \"Any\",\n    \"as\",\n    \"associatedtype\",\n    \"break\",\n    \"case\",\n    \"catch\",\n    \"class\",\n    \"continue\",\n    \"default\",\n    \"defer\",\n    \"deinit\",\n    \"do\",\n    \"else\",\n    \"fallthrough\",\n    \"false\",\n    \"for\",\n    \"guard\",\n    \"enum\",\n    \"extension\",\n    \"fileprivate\",\n    \"func\",\n    \"if\",\n    \"import\",\n    \"in\",\n    \"init\",\n    \"inout\",\n    \"internal\",\n    \"is\",\n    \"let\",\n    \"nil\",\n    \"operator\",\n    \"private\",\n    \"precedencegroup\",\n    \"Protocol\",\n    \"protocol\",\n    \"public\",\n    \"repeat\",\n    \"rethrows\",\n    \"return\",\n    \"Self\",\n    \"self\",\n    \"static\",\n    \"struct\",\n    \"subscript\",\n    \"super\",\n    \"switch\",\n    \"throw\",\n    \"throws\",\n    \"true\",\n    \"try\",\n    \"Type\",\n    \"typealias\",\n    \"var\",\n    \"where\",\n    \"while\"\n] as const;\n\nconst reservedKeywordsSet = new Set(reservedKeywords);\n\nexport type ReservedKeyword = (typeof reservedKeywords)[number];\n\nexport function isReservedKeyword(word: string): word is ReservedKeyword {\n    return reservedKeywordsSet.has(word as ReservedKeyword);\n}\n\nexport function escapeReservedKeyword(word: string): string {\n    return isReservedKeyword(word) ? `\\`${word}\\`` : word;\n}\n\n/**\n * The `self` keyword cannot be used as a property name in Swift, and unlike other\n * reserved keywords, it cannot be escaped with backticks.\n */\nexport function sanitizeSelf(name: string): string {\n    return name === \"self\" ? \"self_\" : name;\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { escapeReservedKeyword } from \"../syntax/index.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { FunctionArgument } from \"./FunctionArgument.js\";\nimport { TypeReference } from \"./TypeReference.js\";\n\n/**\n * A reference to a variable or constant.\n */\ntype Reference = {\n    type: \"reference\";\n    unsafeName: string;\n};\n\ntype MemberAccess = {\n    type: \"member-access\";\n    target: Expression | TypeReference;\n    optionalChain?: true;\n    memberName: string;\n};\n\ntype Equals = {\n    type: \"equals\";\n    left: Expression;\n    right: Expression;\n};\n\n/**\n * A reference to an enum case with shorthand (dot) syntax.\n */\ntype EnumCaseShorthand = {\n    type: \"enum-case-shorthand\";\n    caseName: string;\n};\n\ntype FunctionCall = {\n    type: \"function-call\";\n    unsafeName: string;\n    arguments_?: FunctionArgument[];\n    multiline?: true;\n};\n\ntype StructInitialization = {\n    type: \"struct-initialization\";\n    unsafeName: string;\n    arguments_?: FunctionArgument[];\n    multiline?: true;\n};\n\ntype ClassInitialization = {\n    type: \"class-initialization\";\n    unsafeName: string;\n    arguments_?: FunctionArgument[];\n    multiline?: true;\n};\n\ntype MethodCall = {\n    type: \"method-call\";\n    target: Expression;\n    methodName: string;\n    arguments_?: FunctionArgument[];\n    multiline?: true;\n};\n\ntype MethodCallWithTrailingClosure = {\n    type: \"method-call-with-trailing-closure\";\n    target: Expression;\n    methodName: string;\n    closureBody: Expression;\n    multiline?: true;\n};\n\ntype ContextualMethodCall = {\n    type: \"contextual-method-call\";\n    methodName: string;\n    arguments_?: FunctionArgument[];\n    multiline?: true;\n};\n\ntype Try = {\n    type: \"try\";\n    expression: Expression;\n};\n\ntype OptionalTry = {\n    type: \"optional-try\";\n    expression: Expression;\n};\n\ntype ForceTry = {\n    type: \"force-try\";\n    expression: Expression;\n};\n\ntype Await = {\n    type: \"await\";\n    expression: Expression;\n};\n\ntype StringLiteral = {\n    type: \"string-literal\";\n    value: string;\n};\n\ntype NumberLiteral = {\n    type: \"number-literal\";\n    value: number;\n};\n\ntype BoolLiteral = {\n    type: \"bool-literal\";\n    value: boolean;\n};\n\ntype DateLiteral = {\n    type: \"date-literal\";\n    isoString: string;\n};\n\ntype CalendarDateLiteral = {\n    type: \"calendar-date-literal\";\n    isoString: string;\n};\n\ntype UUIDLiteral = {\n    type: \"uuid-literal\";\n    value: string;\n};\n\ntype DictionaryLiteral = {\n    type: \"dictionary-literal\";\n    entries?: [Expression, Expression][];\n    multiline?: true;\n};\n\ntype ArrayLiteral = {\n    type: \"array-literal\";\n    elements?: Expression[];\n    multiline?: true;\n};\n\ntype DataLiteral = {\n    type: \"data-literal\";\n    value: string;\n};\n\ntype RawValue = {\n    type: \"raw-value\";\n    value: string;\n};\n\ntype Nop = {\n    type: \"nop\";\n};\n\ntype InternalExpression =\n    | Reference\n    | MemberAccess\n    | Equals\n    | EnumCaseShorthand\n    | FunctionCall\n    | StructInitialization\n    | ClassInitialization\n    | MethodCall\n    | MethodCallWithTrailingClosure\n    | ContextualMethodCall\n    | Try\n    | OptionalTry\n    | ForceTry\n    | Await\n    | StringLiteral\n    | NumberLiteral\n    | BoolLiteral\n    | DateLiteral\n    | CalendarDateLiteral\n    | UUIDLiteral\n    | DictionaryLiteral\n    | ArrayLiteral\n    | DataLiteral\n    | RawValue\n    | Nop;\n\ntype WriteCallableExpressionParams = {\n    writer: Writer;\n    target: string;\n    arguments_?: FunctionArgument[];\n    multiline: boolean;\n};\n\nexport class Expression extends AstNode {\n    private internalExpression: InternalExpression;\n\n    private constructor(internalExpression: InternalExpression) {\n        super();\n        this.internalExpression = internalExpression;\n    }\n\n    public isNop() {\n        return this.internalExpression.type === \"nop\";\n    }\n\n    public isStructInitialization() {\n        return this.internalExpression.type === \"struct-initialization\";\n    }\n\n    public asStructInitializationOrThrow(): StructInitialization {\n        if (this.internalExpression.type !== \"struct-initialization\") {\n            throw new Error(\"Internal error; swift.Expression is not a struct initialization\");\n        }\n        return this.internalExpression;\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalExpression.type) {\n            case \"reference\":\n                writer.write(escapeReservedKeyword(this.internalExpression.unsafeName));\n                break;\n            case \"member-access\":\n                this.internalExpression.target.write(writer);\n                if (this.internalExpression.optionalChain) {\n                    writer.write(\"?\");\n                }\n                writer.write(\".\");\n                writer.write(this.internalExpression.memberName);\n                break;\n            case \"equals\":\n                this.internalExpression.left.write(writer);\n                writer.write(\" == \");\n                this.internalExpression.right.write(writer);\n                break;\n            case \"enum-case-shorthand\":\n                writer.write(\".\");\n                writer.write(this.internalExpression.caseName);\n                break;\n            case \"function-call\":\n                this.writeCallableExpression({\n                    writer,\n                    target: escapeReservedKeyword(this.internalExpression.unsafeName),\n                    arguments_: this.internalExpression.arguments_,\n                    multiline: !!this.internalExpression.multiline\n                });\n                break;\n            case \"struct-initialization\":\n                this.writeCallableExpression({\n                    writer,\n                    target: escapeReservedKeyword(this.internalExpression.unsafeName),\n                    arguments_: this.internalExpression.arguments_,\n                    multiline: !!this.internalExpression.multiline\n                });\n                break;\n            case \"class-initialization\":\n                this.writeCallableExpression({\n                    writer,\n                    target: escapeReservedKeyword(this.internalExpression.unsafeName),\n                    arguments_: this.internalExpression.arguments_,\n                    multiline: !!this.internalExpression.multiline\n                });\n                break;\n\n            case \"method-call\":\n                this.internalExpression.target.write(writer);\n                writer.write(\".\");\n                this.writeCallableExpression({\n                    writer,\n                    target: this.internalExpression.methodName,\n                    arguments_: this.internalExpression.arguments_,\n                    multiline: !!this.internalExpression.multiline\n                });\n                break;\n            case \"method-call-with-trailing-closure\":\n                this.internalExpression.target.write(writer);\n                writer.write(\".\");\n                writer.write(this.internalExpression.methodName);\n                writer.write(\" {\");\n                if (this.internalExpression.multiline) {\n                    writer.newLine();\n                    writer.indent();\n                } else {\n                    writer.write(\" \");\n                }\n                this.internalExpression.closureBody.write(writer);\n                if (this.internalExpression.multiline) {\n                    writer.newLine();\n                    writer.dedent();\n                } else {\n                    writer.write(\" \");\n                }\n                writer.write(\"}\");\n                break;\n            case \"contextual-method-call\":\n                writer.write(\".\");\n                this.writeCallableExpression({\n                    writer,\n                    target: this.internalExpression.methodName,\n                    arguments_: this.internalExpression.arguments_,\n                    multiline: !!this.internalExpression.multiline\n                });\n                break;\n            case \"try\":\n                writer.write(\"try \");\n                this.internalExpression.expression.write(writer);\n                break;\n            case \"optional-try\":\n                writer.write(\"try? \");\n                this.internalExpression.expression.write(writer);\n                break;\n            case \"force-try\":\n                writer.write(\"try! \");\n                this.internalExpression.expression.write(writer);\n                break;\n            case \"await\":\n                writer.write(\"await \");\n                this.internalExpression.expression.write(writer);\n                break;\n            case \"string-literal\":\n                writer.write(`\"${this.internalExpression.value}\"`);\n                break;\n            case \"number-literal\":\n                writer.write(this.internalExpression.value.toString());\n                break;\n            case \"bool-literal\":\n                writer.write(this.internalExpression.value ? \"true\" : \"false\");\n                break;\n            case \"date-literal\":\n                writer.write(`try! Date(\"${this.internalExpression.isoString}\", strategy: .iso8601)`);\n                break;\n            case \"calendar-date-literal\":\n                writer.write(`CalendarDate(\"${this.internalExpression.isoString}\")!`);\n                break;\n            case \"uuid-literal\":\n                writer.write(`UUID(uuidString: \"${this.internalExpression.value}\")!`);\n                break;\n            case \"dictionary-literal\":\n                this.writeDictionaryLiteral(writer, this.internalExpression);\n                break;\n            case \"array-literal\":\n                this.writeArrayLiteral(writer, this.internalExpression);\n                break;\n            case \"data-literal\":\n                writer.write(`Data(\"${this.internalExpression.value}\".utf8)`);\n                break;\n            case \"raw-value\":\n                writer.write(this.internalExpression.value);\n                break;\n            case \"nop\":\n                break;\n            default:\n                assertNever(this.internalExpression);\n        }\n    }\n\n    private writeCallableExpression({ writer, target, arguments_, multiline }: WriteCallableExpressionParams): void {\n        writer.write(target);\n        writer.write(\"(\");\n        if (multiline) {\n            writer.newLine();\n            writer.indent();\n        }\n        arguments_?.forEach((argument: FunctionArgument, argumentIdx: number) => {\n            if (argumentIdx > 0) {\n                writer.write(\",\");\n                if (multiline) {\n                    writer.newLine();\n                } else {\n                    writer.write(\" \");\n                }\n            }\n            argument.write(writer);\n        });\n        if (multiline) {\n            writer.newLine();\n            writer.dedent();\n        }\n        writer.write(\")\");\n    }\n\n    private writeDictionaryLiteral(writer: Writer, dictLiteral: DictionaryLiteral): void {\n        if (!dictLiteral.entries || dictLiteral.entries.length === 0) {\n            writer.write(\"[:]\");\n            return;\n        }\n        writer.write(\"[\");\n        const multiline = !!dictLiteral.multiline;\n        if (multiline) {\n            writer.newLine();\n            writer.indent();\n        }\n        dictLiteral.entries?.forEach(([key, value], entryIdx) => {\n            if (entryIdx > 0) {\n                writer.write(\", \");\n                if (multiline) {\n                    writer.newLine();\n                }\n            }\n            key.write(writer);\n            writer.write(\": \");\n            value.write(writer);\n        });\n        if (multiline) {\n            writer.newLine();\n            writer.dedent();\n        }\n        writer.write(\"]\");\n    }\n\n    private writeArrayLiteral(writer: Writer, arrayLiteral: ArrayLiteral): void {\n        if (!arrayLiteral.elements || arrayLiteral.elements.length === 0) {\n            writer.write(\"[]\");\n            return;\n        }\n        writer.write(\"[\");\n        const multiline = !!arrayLiteral.multiline;\n        if (multiline) {\n            writer.newLine();\n            writer.indent();\n        }\n        arrayLiteral.elements?.forEach((element, elementIdx) => {\n            if (elementIdx > 0) {\n                writer.write(\",\");\n                if (multiline) {\n                    writer.newLine();\n                } else {\n                    writer.write(\" \");\n                }\n            }\n            element.write(writer);\n        });\n        if (multiline) {\n            writer.newLine();\n            writer.dedent();\n        }\n        writer.write(\"]\");\n    }\n\n    public static reference(unsafeName: string): Expression {\n        return new this({ type: \"reference\", unsafeName });\n    }\n\n    public static memberAccess(params: Omit<MemberAccess, \"type\">): Expression {\n        return new this({ type: \"member-access\", ...params });\n    }\n\n    public static equals(left: Expression, right: Expression): Expression {\n        return new this({ type: \"equals\", left, right });\n    }\n\n    public static enumCaseShorthand(caseName: string): Expression {\n        return new this({ type: \"enum-case-shorthand\", caseName });\n    }\n\n    public static functionCall(params: Omit<FunctionCall, \"type\">): Expression {\n        return new this({ type: \"function-call\", ...params });\n    }\n\n    public static structInitialization(params: Omit<StructInitialization, \"type\">): Expression {\n        return new this({ type: \"struct-initialization\", ...params });\n    }\n\n    public static classInitialization(params: Omit<ClassInitialization, \"type\">): Expression {\n        return new this({ type: \"class-initialization\", ...params });\n    }\n\n    public static stringLiteral(value: string): Expression {\n        return new this({ type: \"string-literal\", value });\n    }\n\n    public static numberLiteral(value: number): Expression {\n        return new this({ type: \"number-literal\", value });\n    }\n\n    public static boolLiteral(value: boolean): Expression {\n        return new this({ type: \"bool-literal\", value });\n    }\n\n    public static dateLiteral(isoStringWithoutFractionalSeconds: string): Expression {\n        return new this({ type: \"date-literal\", isoString: isoStringWithoutFractionalSeconds });\n    }\n\n    public static calendarDateLiteral(isoString: string): Expression {\n        return new this({ type: \"calendar-date-literal\", isoString });\n    }\n\n    public static uuidLiteral(value: string): Expression {\n        return new this({ type: \"uuid-literal\", value });\n    }\n\n    public static dictionaryLiteral(params: Omit<DictionaryLiteral, \"type\">): Expression {\n        return new this({ type: \"dictionary-literal\", ...params });\n    }\n\n    public static arrayLiteral(params: Omit<ArrayLiteral, \"type\">): Expression {\n        return new this({ type: \"array-literal\", ...params });\n    }\n\n    public static dataLiteral(value: string): Expression {\n        return new this({ type: \"data-literal\", value });\n    }\n\n    public static methodCall(params: Omit<MethodCall, \"type\">): Expression {\n        return new this({ type: \"method-call\", ...params });\n    }\n\n    public static methodCallWithTrailingClosure(params: Omit<MethodCallWithTrailingClosure, \"type\">): Expression {\n        return new this({ type: \"method-call-with-trailing-closure\", ...params });\n    }\n\n    public static contextualMethodCall(params: Omit<ContextualMethodCall, \"type\">): Expression {\n        return new this({ type: \"contextual-method-call\", ...params });\n    }\n\n    public static try(expression: Expression): Expression {\n        return new this({ type: \"try\", expression });\n    }\n\n    public static optionalTry(expression: Expression): Expression {\n        return new this({ type: \"optional-try\", expression });\n    }\n\n    public static forceTry(expression: Expression): Expression {\n        return new this({ type: \"force-try\", expression });\n    }\n\n    public static await(expression: Expression): Expression {\n        return new this({ type: \"await\", expression });\n    }\n\n    public static rawValue(value: string): Expression {\n        return new this({ type: \"raw-value\", value });\n    }\n\n    public static nop(): Expression {\n        return new this({ type: \"nop\" });\n    }\n\n    // Helpers\n\n    public static nil(): Expression {\n        return new this({ type: \"raw-value\", value: \"nil\" });\n    }\n\n    public static self(): Expression {\n        return new this({ type: \"raw-value\", value: \"self\" });\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { escapeReservedKeyword } from \"../syntax/index.js\";\nimport { AccessLevel } from \"./AccessLevel.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DeclarationType } from \"./DeclarationType.js\";\nimport { DocComment } from \"./DocComment.js\";\nimport { Expression } from \"./Expression.js\";\nimport { FunctionParameter } from \"./FunctionParameter.js\";\nimport { Pattern } from \"./Pattern.js\";\nimport { TypeReference } from \"./TypeReference.js\";\n\ntype TypealiasDeclaration = {\n    type: \"typealias-declaration\";\n    accessLevel?: AccessLevel;\n    unsafeName: string;\n    aliasedType: TypeReference;\n    docs?: DocComment;\n};\n\ntype ConstantDeclaration = {\n    type: \"constant-declaration\";\n    unsafeName: string;\n    value: Expression;\n    noTrailingNewline?: true;\n};\n\ntype VariableDeclaration = {\n    type: \"variable-declaration\";\n    unsafeName: string;\n    value: Expression;\n    noTrailingNewline?: true;\n};\n\ntype FunctionDeclaration = {\n    type: \"function-declaration\";\n    unsafeName: string;\n    accessLevel?: AccessLevel;\n    parameters?: FunctionParameter[];\n    async?: true;\n    throws?: true;\n    returnType?: TypeReference;\n    body?: CodeBlock;\n    docs?: DocComment;\n};\n\ntype VariableAssignment = {\n    type: \"variable-assignment\";\n    unsafeName: string;\n    value: Expression;\n};\n\ntype SelfAssignment = {\n    type: \"self-assignment\";\n    value: Expression;\n};\n\ntype PropertyAssignment = {\n    type: \"property-assignment\";\n    unsafeName: string;\n    value: Expression;\n};\n\ntype DiscardAssignment = {\n    type: \"discard-assignment\";\n    value: Expression;\n};\n\ntype Return = {\n    type: \"return\";\n    expression: Expression;\n};\n\ntype Throw = {\n    type: \"throw\";\n    expression: Expression;\n};\n\ntype ExpressionStatement = {\n    type: \"expression-statement\";\n    expression: Expression;\n};\n\ntype ImportStatement = {\n    type: \"import\";\n    moduleName: string;\n};\n\ntype Switch = {\n    type: \"switch\";\n    target: Expression;\n    cases: {\n        pattern: Expression | Pattern;\n        body: Statement[];\n    }[];\n    defaultCase?: Statement[];\n};\n\ntype If = {\n    type: \"if\";\n    condition: Statement;\n    body: Statement[];\n    elseIfs?: {\n        condition: Statement;\n        body: Statement[];\n    }[];\n    else?: Statement[];\n};\n\ntype Raw = {\n    type: \"raw\";\n    content: string;\n};\n\ntype InternalStatement =\n    | TypealiasDeclaration\n    | ConstantDeclaration\n    | VariableDeclaration\n    | FunctionDeclaration\n    | VariableAssignment\n    | SelfAssignment\n    | PropertyAssignment\n    | DiscardAssignment\n    | Return\n    | Throw\n    | ExpressionStatement\n    | ImportStatement\n    | Switch\n    | If\n    | Raw;\n\nexport class Statement extends AstNode {\n    private internalStatement: InternalStatement;\n\n    private constructor(internalStatement: InternalStatement) {\n        super();\n        this.internalStatement = internalStatement;\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalStatement.type) {\n            case \"typealias-declaration\":\n                if (this.internalStatement.docs != null) {\n                    this.internalStatement.docs.write(writer);\n                }\n                if (this.internalStatement.accessLevel) {\n                    writer.write(this.internalStatement.accessLevel);\n                    writer.write(\" \");\n                }\n                writer.write(\"typealias \");\n                writer.write(this.internalStatement.unsafeName);\n                writer.write(\" = \");\n                this.internalStatement.aliasedType.write(writer);\n                writer.newLine();\n                break;\n            case \"constant-declaration\":\n                writer.write(DeclarationType.Let);\n                writer.write(\" \");\n                writer.write(escapeReservedKeyword(this.internalStatement.unsafeName));\n                writer.write(\" = \");\n                this.internalStatement.value.write(writer);\n                if (!this.internalStatement.noTrailingNewline) {\n                    writer.newLine();\n                }\n                break;\n            case \"variable-declaration\":\n                writer.write(DeclarationType.Var);\n                writer.write(\" \");\n                writer.write(escapeReservedKeyword(this.internalStatement.unsafeName));\n                writer.write(\" = \");\n                this.internalStatement.value.write(writer);\n                if (!this.internalStatement.noTrailingNewline) {\n                    writer.newLine();\n                }\n                break;\n            case \"function-declaration\":\n                if (this.internalStatement.docs != null) {\n                    this.internalStatement.docs.write(writer);\n                }\n                if (this.internalStatement.accessLevel != null) {\n                    writer.write(this.internalStatement.accessLevel);\n                    writer.write(\" \");\n                }\n                writer.write(\"func \");\n                writer.write(escapeReservedKeyword(this.internalStatement.unsafeName));\n                writer.write(\"(\");\n                this.internalStatement.parameters?.forEach((parameter, parameterIdx) => {\n                    if (parameterIdx > 0) {\n                        writer.write(\", \");\n                    }\n                    parameter.write(writer);\n                });\n                writer.write(\")\");\n                if (this.internalStatement.async) {\n                    writer.write(\" async\");\n                }\n                if (this.internalStatement.throws) {\n                    writer.write(\" throws\");\n                }\n                if (this.internalStatement.returnType) {\n                    writer.write(\" -> \");\n                    this.internalStatement.returnType.write(writer);\n                }\n                writer.write(\" \");\n                (this.internalStatement.body ?? CodeBlock.empty()).write(writer);\n                writer.newLine();\n                break;\n            case \"variable-assignment\":\n                writer.write(escapeReservedKeyword(this.internalStatement.unsafeName));\n                writer.write(\" = \");\n                this.internalStatement.value.write(writer);\n                writer.newLine();\n                break;\n            case \"self-assignment\":\n                writer.write(\"self = \");\n                writer.write(this.internalStatement.value.toString());\n                writer.newLine();\n                break;\n            case \"property-assignment\":\n                writer.write(\"self.\");\n                writer.write(this.internalStatement.unsafeName);\n                writer.write(\" = \");\n                this.internalStatement.value.write(writer);\n                writer.newLine();\n                break;\n            case \"discard-assignment\":\n                writer.write(\"_ = \");\n                this.internalStatement.value.write(writer);\n                writer.newLine();\n                break;\n            case \"return\":\n                writer.write(\"return \");\n                this.internalStatement.expression.write(writer);\n                writer.newLine();\n                break;\n            case \"throw\":\n                writer.write(\"throw \");\n                this.internalStatement.expression.write(writer);\n                writer.newLine();\n                break;\n            case \"expression-statement\":\n                this.internalStatement.expression.write(writer);\n                writer.newLine();\n                break;\n            case \"import\":\n                writer.write(\"import \");\n                writer.write(this.internalStatement.moduleName);\n                writer.newLine();\n                break;\n            case \"switch\":\n                writer.write(\"switch \");\n                this.internalStatement.target.write(writer);\n                writer.write(\" {\");\n                writer.newLine();\n                for (const switchCase of this.internalStatement.cases) {\n                    writer.write(\"case \");\n                    switchCase.pattern.write(writer);\n                    writer.write(\":\");\n                    writer.newLine();\n                    if (switchCase.body.length > 0) {\n                        writer.indent();\n                        for (const statement of switchCase.body) {\n                            statement.write(writer);\n                        }\n                        writer.dedent();\n                    }\n                }\n                if (this.internalStatement.defaultCase) {\n                    writer.write(\"default:\");\n                    writer.newLine();\n                    if (this.internalStatement.defaultCase.length > 0) {\n                        writer.indent();\n                        for (const statement of this.internalStatement.defaultCase) {\n                            statement.write(writer);\n                        }\n                        writer.dedent();\n                    }\n                }\n                writer.write(\"}\");\n                writer.newLine();\n                break;\n            case \"if\": {\n                writer.write(\"if \");\n                this.internalStatement.condition.write(writer);\n                writer.write(\" \");\n                CodeBlock.withStatements(this.internalStatement.body).write(writer);\n                for (const elseIf of this.internalStatement.elseIfs ?? []) {\n                    writer.write(\" else if \");\n                    elseIf.condition.write(writer);\n                    writer.write(\" \");\n                    CodeBlock.withStatements(elseIf.body).write(writer);\n                }\n                if (this.internalStatement.else) {\n                    writer.write(\" else \");\n                    CodeBlock.withStatements(this.internalStatement.else).write(writer);\n                }\n                writer.newLine();\n                break;\n            }\n            case \"raw\":\n                writer.write(this.internalStatement.content);\n                writer.newLine();\n                break;\n            default:\n                assertNever(this.internalStatement);\n        }\n    }\n\n    public static typealiasDeclaration(params: Omit<TypealiasDeclaration, \"type\">): Statement {\n        return new this({ type: \"typealias-declaration\", ...params });\n    }\n\n    public static constantDeclaration(params: Omit<ConstantDeclaration, \"type\">): Statement {\n        return new this({ type: \"constant-declaration\", ...params });\n    }\n\n    public static variableDeclaration(params: Omit<VariableDeclaration, \"type\">): Statement {\n        return new this({ type: \"variable-declaration\", ...params });\n    }\n\n    public static functionDeclaration(params: Omit<FunctionDeclaration, \"type\">): Statement {\n        return new this({ type: \"function-declaration\", ...params });\n    }\n\n    public static variableAssignment(unsafeName: string, value: Expression): Statement {\n        return new this({ type: \"variable-assignment\", unsafeName, value });\n    }\n\n    public static selfAssignment(value: Expression): Statement {\n        return new this({ type: \"self-assignment\", value });\n    }\n\n    public static propertyAssignment(unsafeName: string, value: Expression): Statement {\n        return new this({ type: \"property-assignment\", unsafeName, value });\n    }\n\n    public static discardAssignment(value: Expression): Statement {\n        return new this({ type: \"discard-assignment\", value });\n    }\n\n    public static return(expression: Expression): Statement {\n        return new this({ type: \"return\", expression });\n    }\n\n    public static throw(expression: Expression): Statement {\n        return new this({ type: \"throw\", expression });\n    }\n\n    public static expressionStatement(expression: Expression): Statement {\n        return new this({ type: \"expression-statement\", expression });\n    }\n\n    public static import(moduleName: string): Statement {\n        return new this({ type: \"import\", moduleName });\n    }\n\n    public static switch(params: Omit<Switch, \"type\">): Statement {\n        return new this({ type: \"switch\", ...params });\n    }\n\n    public static if(params: Omit<If, \"type\">): Statement {\n        return new this({ type: \"if\", ...params });\n    }\n\n    /**\n     * Escape hatch for writing raw Swift code. Intended for use in tests.\n     */\n    public static raw(content: string): Statement {\n        return new this({ type: \"raw\", content });\n    }\n}\n","export const DeclarationType = {\n    /**\n     * Variable declaration.\n     */\n    Var: \"var\",\n    /**\n     * Constant declaration.\n     */\n    Let: \"let\"\n} as const;\n\nexport type DeclarationType = (typeof DeclarationType)[keyof typeof DeclarationType];\n","import { AstNode, Writer } from \"./core/index.js\";\n\nexport declare namespace DocComment {\n    interface Parameter {\n        name: string;\n        description: string;\n    }\n\n    interface Args {\n        summary: string;\n        description?: string;\n        parameters?: Parameter[];\n        returns?: string;\n        throws?: string[];\n    }\n}\n\nexport class DocComment extends AstNode {\n    private readonly summary: string;\n    private readonly description?: string;\n    private readonly parameters: DocComment.Parameter[];\n    private readonly returns?: string;\n    private readonly throws: string[];\n\n    public constructor({ summary, description, parameters, returns, throws }: DocComment.Args) {\n        super();\n        this.summary = DocComment.sanitizeText(summary);\n        this.description = description != null ? DocComment.sanitizeText(description) : undefined;\n        this.parameters = (parameters ?? []).map((param) => ({\n            name: param.name,\n            description: DocComment.sanitizeText(param.description)\n        }));\n        this.returns = returns != null ? DocComment.sanitizeText(returns) : undefined;\n        this.throws = (throws ?? []).map((t) => DocComment.sanitizeText(t));\n    }\n\n    public write(writer: Writer): void {\n        this.writeMultilineText(writer, this.summary);\n        if (this.description != null) {\n            writer.write(\"///\");\n            writer.newLine();\n            this.writeMultilineText(writer, this.description);\n        }\n        if (this.parameters.length > 0) {\n            writer.write(\"///\");\n            writer.newLine();\n            for (const param of this.parameters) {\n                const paramLines = param.description.split(\"\\n\");\n                paramLines.forEach((line, lineIdx) => {\n                    if (lineIdx === 0) {\n                        writer.write(\"/// - Parameter \");\n                        writer.write(param.name);\n                        writer.write(\": \");\n                        writer.write(line);\n                    } else {\n                        writer.write(\"/// \");\n                        writer.write(line);\n                    }\n                    writer.newLine();\n                });\n            }\n        }\n        if (this.returns != null) {\n            const returnLines = this.returns.split(\"\\n\");\n            returnLines.forEach((line, lineIdx) => {\n                if (lineIdx === 0) {\n                    writer.write(\"/// - Returns: \");\n                    writer.write(line);\n                } else {\n                    writer.write(\"/// \");\n                    writer.write(line);\n                }\n                writer.newLine();\n            });\n        }\n        if (this.throws.length > 0) {\n            for (const throwsDescription of this.throws) {\n                const throwsLines = throwsDescription.split(\"\\n\");\n                throwsLines.forEach((line, lineIdx) => {\n                    if (lineIdx === 0) {\n                        writer.write(\"/// - Throws: \");\n                        writer.write(line);\n                    } else {\n                        writer.write(\"/// \");\n                        writer.write(line);\n                    }\n                    writer.newLine();\n                });\n            }\n        }\n    }\n\n    private writeMultilineText(writer: Writer, sanitizedText: string) {\n        const lines = sanitizedText.split(\"\\n\");\n        for (const line of lines) {\n            writer.write(\"/// \");\n            writer.write(line);\n            writer.newLine();\n        }\n    }\n\n    /**\n     * Sanitizes text content to ensure it doesn't break Swift doc comment syntax.\n     * Handles line endings and binary content that cause compilation issues.\n     */\n    private static sanitizeText(text: string): string {\n        // Normalize line endings - carriage returns break doc comment format\n        text = text.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\n        // Remove null bytes - they cause \"nul character embedded in middle of file\" warnings\n        // This causes a compiler warning (not error) but we should remove it nevertheless\n        // biome-ignore lint/suspicious/noControlCharactersInRegex: allow\n        text = text.replace(/\\x00/g, \"\");\n\n        return text;\n    }\n}\n","import { isReservedKeyword } from \"../syntax/index.js\";\nimport { AccessLevel } from \"./AccessLevel.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DocComment } from \"./DocComment.js\";\nimport { EnumWithRawValues } from \"./EnumWithRawValues.js\";\nimport { Initializer } from \"./Initializer.js\";\nimport { Method } from \"./Method.js\";\nimport { Protocol } from \"./Protocol.js\";\nimport { Struct } from \"./Struct.js\";\nimport { TypeReference } from \"./TypeReference.js\";\n\nexport declare namespace EnumWithAssociatedValues {\n    interface Case {\n        unsafeName: string;\n        associatedValue: [TypeReference, ...TypeReference[]];\n        docs?: DocComment;\n    }\n\n    interface Args {\n        name: string;\n        indirect?: boolean;\n        accessLevel?: AccessLevel;\n        conformances?: Protocol[];\n        cases: Case[];\n        initializers?: Initializer[];\n        methods?: Method[];\n        nestedTypes?: (EnumWithRawValues | Struct)[];\n        docs?: DocComment;\n    }\n}\n\nexport class EnumWithAssociatedValues extends AstNode {\n    public readonly name: string;\n    public readonly accessLevel?: AccessLevel;\n    public readonly indirect: boolean;\n    public readonly conformances: Protocol[];\n    public readonly cases: EnumWithAssociatedValues.Case[];\n    public readonly initializers: Initializer[];\n    public readonly methods: Method[];\n    public readonly nestedTypes: (EnumWithRawValues | Struct)[];\n    public readonly docs?: DocComment;\n\n    public constructor({\n        accessLevel,\n        indirect,\n        name,\n        conformances,\n        cases,\n        initializers,\n        methods,\n        nestedTypes,\n        docs\n    }: EnumWithAssociatedValues.Args) {\n        super();\n        this.name = name;\n        this.indirect = indirect ?? false;\n        this.accessLevel = accessLevel;\n        this.conformances = conformances ?? [];\n        this.cases = cases;\n        this.initializers = initializers ?? [];\n        this.methods = methods ?? [];\n        this.nestedTypes = nestedTypes ?? [];\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.write(writer);\n        }\n        if (this.accessLevel != null) {\n            writer.write(this.accessLevel);\n            writer.write(\" \");\n        }\n        if (this.indirect) {\n            writer.write(\"indirect \");\n        }\n        writer.write(`enum ${this.name}`);\n        this.conformances.forEach((conformance, index) => {\n            if (index === 0) {\n                writer.write(\": \");\n            } else if (index > 0) {\n                writer.write(\", \");\n            }\n            writer.write(conformance);\n        });\n        writer.write(\" {\");\n        writer.newLine();\n        writer.indent();\n        this.cases.forEach((case_) => {\n            if (case_.docs != null) {\n                case_.docs.write(writer);\n            }\n            writer.write(\"case \");\n            if (isReservedKeyword(case_.unsafeName)) {\n                writer.write(`\\`${case_.unsafeName}\\``);\n            } else {\n                writer.write(case_.unsafeName);\n            }\n            writer.write(\"(\");\n            case_.associatedValue.forEach((type, index) => {\n                if (index > 0) {\n                    writer.write(\", \");\n                }\n                type.write(writer);\n            });\n            writer.write(\")\");\n            writer.newLine();\n        });\n        if (this.initializers.length > 0) {\n            writer.newLine();\n            this.initializers.forEach((initializer, initializerIdx) => {\n                if (initializerIdx > 0) {\n                    writer.newLine();\n                }\n                initializer.write(writer);\n                writer.newLine();\n            });\n        }\n        if (this.methods.length > 0) {\n            writer.newLine();\n            this.methods.forEach((method, methodIdx) => {\n                if (methodIdx > 0) {\n                    writer.newLine();\n                }\n                method.write(writer);\n                writer.newLine();\n            });\n        }\n        if (this.nestedTypes.length > 0) {\n            writer.newLine();\n            this.nestedTypes.forEach((nestedType, nestedTypeIdx) => {\n                if (nestedTypeIdx > 0) {\n                    writer.newLine();\n                }\n                nestedType.write(writer);\n                writer.newLine();\n            });\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n}\n","import { escapeSwiftStringLiteral, isReservedKeyword } from \"../syntax/index.js\";\nimport { AccessLevel } from \"./AccessLevel.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DocComment } from \"./DocComment.js\";\nimport { Protocol } from \"./Protocol.js\";\n\nexport declare namespace EnumWithRawValues {\n    interface Case {\n        unsafeName: string;\n        rawValue: string;\n        docs?: DocComment;\n    }\n\n    interface Args {\n        name: string;\n        accessLevel?: AccessLevel;\n        conformances?: (Protocol | \"String\")[];\n        cases: Case[];\n        docs?: DocComment;\n    }\n}\n\nexport class EnumWithRawValues extends AstNode {\n    public readonly name: string;\n    public readonly accessLevel?: AccessLevel;\n    public readonly conformances: (Protocol | \"String\")[];\n    public readonly cases: EnumWithRawValues.Case[];\n    public readonly docs?: DocComment;\n\n    public constructor({ accessLevel, name, conformances, cases, docs }: EnumWithRawValues.Args) {\n        super();\n        this.name = name;\n        this.accessLevel = accessLevel;\n        this.conformances = conformances ?? [];\n        this.cases = cases;\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.write(writer);\n        }\n        if (this.accessLevel != null) {\n            writer.write(this.accessLevel);\n            writer.write(\" \");\n        }\n        writer.write(`enum ${this.name}`);\n        this.conformances.forEach((conformance, index) => {\n            if (index === 0) {\n                writer.write(\": \");\n            } else if (index > 0) {\n                writer.write(\", \");\n            }\n            writer.write(conformance);\n        });\n        if (this.cases.length === 0) {\n            writer.write(\" {}\");\n            return;\n        }\n        writer.write(\" {\");\n        writer.newLine();\n        writer.indent();\n        this.cases.forEach((case_) => {\n            if (case_.docs != null) {\n                case_.docs.write(writer);\n            }\n            writer.write(\"case \");\n            if (isReservedKeyword(case_.unsafeName)) {\n                writer.write(`\\`${case_.unsafeName}\\``);\n            } else {\n                writer.write(case_.unsafeName);\n            }\n            if (case_.rawValue !== case_.unsafeName) {\n                writer.write(\" = \");\n                writer.write(`\"${escapeSwiftStringLiteral(case_.rawValue)}\"`);\n            }\n            writer.newLine();\n        });\n        writer.dedent();\n        writer.write(\"}\");\n    }\n}\n","import { ComputedProperty } from \"./ComputedProperty.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DocComment } from \"./DocComment.js\";\nimport type { EnumWithRawValues } from \"./EnumWithRawValues.js\";\nimport { Initializer } from \"./Initializer.js\";\nimport { Method } from \"./Method.js\";\nimport { Protocol } from \"./Protocol.js\";\nimport { Struct } from \"./Struct.js\";\n\nexport declare namespace Extension {\n    interface Args {\n        name: string;\n        conformances?: Protocol[];\n        initializers?: Initializer[];\n        computedProperties?: ComputedProperty[];\n        methods?: Method[];\n        nestedTypes?: (Struct | EnumWithRawValues)[];\n        docs?: DocComment;\n    }\n}\n\nexport class Extension extends AstNode {\n    public readonly name: string;\n    public readonly conformances: string[];\n    public readonly initializers: Initializer[];\n    public readonly computedProperties: ComputedProperty[];\n    public readonly methods: Method[];\n    public readonly nestedTypes: (Struct | EnumWithRawValues)[];\n    public readonly docs?: DocComment;\n\n    public constructor({\n        name,\n        conformances,\n        initializers,\n        computedProperties,\n        methods,\n        nestedTypes,\n        docs\n    }: Extension.Args) {\n        super();\n        this.name = name;\n        this.conformances = conformances ?? [];\n        this.initializers = initializers ?? [];\n        this.computedProperties = computedProperties ?? [];\n        this.methods = methods ?? [];\n        this.nestedTypes = nestedTypes ?? [];\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.write(writer);\n        }\n        writer.write(`extension ${this.name}`);\n        this.conformances.forEach((conformance, index) => {\n            if (index === 0) {\n                writer.write(\": \");\n            } else if (index > 0) {\n                writer.write(\", \");\n            }\n            writer.write(conformance);\n        });\n        writer.write(\" {\");\n        if (this.initializers.length > 0) {\n            writer.newLine();\n            writer.indent();\n            this.initializers.forEach((initializer, initializerIdx) => {\n                if (initializerIdx > 0) {\n                    writer.newLine();\n                }\n                initializer.write(writer);\n                writer.newLine();\n            });\n            writer.dedent();\n        }\n        if (this.computedProperties.length > 0) {\n            writer.newLine();\n            writer.indent();\n            this.computedProperties.forEach((computedProperty, computedPropertyIdx) => {\n                if (computedPropertyIdx > 0) {\n                    writer.newLine();\n                }\n                computedProperty.write(writer);\n                writer.newLine();\n            });\n            writer.dedent();\n        }\n        if (this.methods.length > 0) {\n            writer.newLine();\n            writer.indent();\n            this.methods.forEach((method, methodIdx) => {\n                if (methodIdx > 0) {\n                    writer.newLine();\n                }\n                method.write(writer);\n                writer.newLine();\n            });\n            writer.dedent();\n        }\n        if (this.nestedTypes.length > 0) {\n            writer.newLine();\n            writer.indent();\n            this.nestedTypes.forEach((nestedType, nestedTypeIdx) => {\n                if (nestedTypeIdx > 0) {\n                    writer.newLine();\n                }\n                nestedType.write(writer);\n                writer.newLine();\n            });\n            writer.dedent();\n        }\n        writer.write(\"}\");\n    }\n}\n","import { AstNode, Writer } from \"./core/index.js\";\nimport { Expression } from \"./Expression.js\";\n\nexport declare namespace FunctionArgument {\n    interface Args {\n        label?: string;\n        value: Expression;\n    }\n}\n\nexport class FunctionArgument extends AstNode {\n    public readonly label?: string;\n    public readonly value: Expression;\n\n    constructor({ label, value }: FunctionArgument.Args) {\n        super();\n        this.label = label;\n        this.value = value;\n    }\n\n    public write(writer: Writer): void {\n        if (this.label != null) {\n            writer.write(this.label);\n            writer.write(\": \");\n        }\n        this.value.write(writer);\n    }\n}\n","import { AstNode, Writer } from \"./core/index.js\";\nimport { Expression } from \"./Expression.js\";\nimport { TypeReference } from \"./TypeReference.js\";\n\nexport declare namespace FunctionParameter {\n    interface Args {\n        /** Used when calling the function. */\n        argumentLabel?: string;\n        /** Used within the function’s body. */\n        unsafeName: string;\n        escaping?: true;\n        type: TypeReference;\n        defaultValue?: Expression;\n        docsContent?: string;\n    }\n}\n\nexport class FunctionParameter extends AstNode {\n    public readonly argumentLabel?: string;\n    public readonly unsafeName: string;\n    public readonly escaping?: true;\n    public readonly type: TypeReference;\n    public readonly defaultValue?: Expression;\n    public readonly docsContent?: string;\n\n    constructor({ argumentLabel, unsafeName, escaping, type, defaultValue, docsContent }: FunctionParameter.Args) {\n        super();\n        this.argumentLabel = argumentLabel;\n        this.unsafeName = unsafeName;\n        this.escaping = escaping;\n        this.type = type;\n        this.defaultValue = defaultValue;\n        this.docsContent = docsContent;\n    }\n\n    public write(writer: Writer): void {\n        if (this.argumentLabel == null) {\n            writer.write(\"_ \");\n        } else if (this.argumentLabel !== this.unsafeName) {\n            writer.write(this.argumentLabel);\n            writer.write(\" \");\n        }\n        // Parameter names don't need to be escaped\n        writer.write(this.unsafeName);\n        writer.write(\": \");\n        if (this.escaping) {\n            writer.write(\"@escaping \");\n        }\n        this.type.write(writer);\n        if (this.defaultValue != null) {\n            writer.write(\" = \");\n            this.defaultValue.write(writer);\n        }\n    }\n}\n","import { AccessLevel } from \"./AccessLevel.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DocComment } from \"./DocComment.js\";\nimport { FunctionParameter } from \"./FunctionParameter.js\";\n\nexport declare namespace Initializer {\n    interface Args {\n        accessLevel?: AccessLevel;\n        convenience?: true;\n        /** Whether the initializer can return `nil`. Initializers that return nil are said to be failable. */\n        failable?: true;\n        /** Whether the initializer can throw an error. */\n        throws?: true;\n        parameters?: FunctionParameter[];\n        body?: CodeBlock;\n        multiline?: true;\n        docs?: DocComment;\n    }\n}\n\nexport class Initializer extends AstNode {\n    public readonly accessLevel?: AccessLevel;\n    public readonly convenience?: true;\n    public readonly failable?: true;\n    public readonly throws?: true;\n    public readonly parameters: FunctionParameter[];\n    public readonly body: CodeBlock;\n    public readonly multiline?: true;\n    public readonly docs?: DocComment;\n\n    constructor({ accessLevel, convenience, failable, throws, parameters, body, multiline, docs }: Initializer.Args) {\n        super();\n        this.accessLevel = accessLevel;\n        this.convenience = convenience;\n        this.failable = failable;\n        this.throws = throws;\n        this.parameters = parameters ?? [];\n        this.body = body ?? CodeBlock.empty();\n        this.multiline = multiline;\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.write(writer);\n        }\n        if (this.accessLevel != null) {\n            writer.write(this.accessLevel);\n            writer.write(\" \");\n        }\n        if (this.convenience) {\n            writer.write(\"convenience \");\n        }\n        writer.write(\"init\");\n        if (this.failable) {\n            writer.write(\"?\");\n        }\n        writer.write(\"(\");\n        if (this.multiline) {\n            writer.newLine();\n            writer.indent();\n        }\n        this.parameters.forEach((parameter, parameterIdx) => {\n            if (parameterIdx > 0) {\n                writer.write(\",\");\n                if (this.multiline) {\n                    writer.newLine();\n                } else {\n                    writer.write(\" \");\n                }\n            }\n            parameter.write(writer);\n        });\n        if (this.multiline) {\n            writer.newLine();\n            writer.dedent();\n        }\n        writer.write(\") \");\n        if (this.throws) {\n            writer.write(\"throws \");\n        }\n        this.body.write(writer);\n    }\n}\n","import { AstNode, Writer } from \"./core/index.js\";\n\nexport declare namespace LineBreak {\n    interface Args {\n        /** Number of line breaks to insert (default: 1) */\n        count?: number;\n    }\n}\n\n/**\n * An AST node for representing line breaks and spacing in Swift files.\n * Can be used as a building block when composing files.\n */\nexport class LineBreak extends AstNode {\n    private readonly count: number;\n\n    public constructor({ count = 1 }: LineBreak.Args = {}) {\n        super();\n        this.count = count;\n    }\n\n    public write(writer: Writer): void {\n        for (let i = 0; i < this.count; i++) {\n            writer.newLine();\n        }\n    }\n\n    public static single(): LineBreak {\n        return new LineBreak({ count: 1 });\n    }\n\n    public static double(): LineBreak {\n        return new LineBreak({ count: 2 });\n    }\n\n    public static multiple(count: number): LineBreak {\n        return new LineBreak({ count });\n    }\n}\n","import { escapeReservedKeyword } from \"../syntax/index.js\";\nimport { AccessLevel } from \"./AccessLevel.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DocComment } from \"./DocComment.js\";\nimport { Expression } from \"./Expression.js\";\nimport { FunctionArgument } from \"./FunctionArgument.js\";\nimport { FunctionParameter } from \"./FunctionParameter.js\";\nimport { TypeReference } from \"./TypeReference.js\";\n\nexport declare namespace Method {\n    interface Attribute {\n        name: string;\n        arguments?: FunctionArgument[];\n    }\n\n    interface Args {\n        attributes?: Attribute[];\n        unsafeName: string;\n        accessLevel?: AccessLevel;\n        static_?: boolean;\n        parameters?: FunctionParameter[];\n        async?: true;\n        throws?: true;\n        returnType: TypeReference;\n        body?: CodeBlock;\n        docs?: DocComment;\n    }\n}\n\nexport class Method extends AstNode {\n    public readonly attributes: Method.Attribute[];\n    public readonly unsafeName: string;\n    public readonly accessLevel?: AccessLevel;\n    public readonly static_?: boolean;\n    public readonly parameters: FunctionParameter[];\n    public readonly async?: true;\n    public readonly throws?: true;\n    public readonly returnType: TypeReference;\n    public readonly body: CodeBlock;\n    public readonly docs?: DocComment;\n\n    public constructor({\n        attributes,\n        unsafeName,\n        accessLevel,\n        static_,\n        parameters,\n        async,\n        throws,\n        returnType,\n        body,\n        docs\n    }: Method.Args) {\n        super();\n        this.attributes = attributes ?? [];\n        this.unsafeName = unsafeName;\n        this.accessLevel = accessLevel;\n        this.static_ = static_;\n        this.parameters = parameters ?? [];\n        this.async = async;\n        this.throws = throws;\n        this.returnType = returnType;\n        this.body = body ?? CodeBlock.empty();\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.write(writer);\n        }\n        this.attributes.forEach((attribute) => {\n            if (attribute.arguments?.length) {\n                Expression.functionCall({\n                    unsafeName: `@${attribute.name}`,\n                    arguments_: attribute.arguments\n                }).write(writer);\n            } else {\n                writer.write(\"@\");\n                writer.write(attribute.name);\n            }\n            writer.write(\" \");\n        });\n        if (this.accessLevel != null) {\n            writer.write(this.accessLevel);\n            writer.write(\" \");\n        }\n        if (this.static_) {\n            writer.write(\"static \");\n        }\n        writer.write(\"func \");\n        writer.write(escapeReservedKeyword(this.unsafeName));\n        writer.write(\"(\");\n        this.parameters.forEach((parameter, parameterIdx) => {\n            if (parameterIdx > 0) {\n                writer.write(\", \");\n            }\n            parameter.write(writer);\n        });\n        writer.write(\")\");\n        if (this.async) {\n            writer.write(\" async\");\n        }\n        if (this.throws) {\n            writer.write(\" throws\");\n        }\n        writer.write(\" -> \");\n        this.returnType.write(writer);\n        writer.write(\" \");\n        this.body.write(writer);\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\n\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DeclarationType } from \"./DeclarationType.js\";\n\ntype EnumCaseValueBinding = {\n    type: \"enum-case-value-binding\";\n    caseName: string;\n    declarationType: DeclarationType;\n    referenceName: string;\n};\n\ntype InternalPattern = EnumCaseValueBinding;\n\nexport class Pattern extends AstNode {\n    private internalPattern: InternalPattern;\n\n    private constructor(internalPattern: InternalPattern) {\n        super();\n        this.internalPattern = internalPattern;\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalPattern.type) {\n            case \"enum-case-value-binding\":\n                writer.write(\".\");\n                writer.write(this.internalPattern.caseName);\n                writer.write(\"(\");\n                writer.write(this.internalPattern.declarationType);\n                writer.write(\" \");\n                writer.write(this.internalPattern.referenceName);\n                writer.write(\")\");\n                break;\n            default:\n                assertNever(this.internalPattern.type);\n        }\n    }\n\n    public static enumCaseValueBinding(params: Omit<EnumCaseValueBinding, \"type\">): Pattern {\n        return new this({\n            type: \"enum-case-value-binding\",\n            ...params\n        });\n    }\n}\n","import { isReservedKeyword } from \"../syntax/index.js\";\nimport { AccessLevel } from \"./AccessLevel.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DeclarationType } from \"./DeclarationType.js\";\nimport { DocComment } from \"./DocComment.js\";\nimport { Expression } from \"./Expression.js\";\nimport { TypeReference } from \"./TypeReference.js\";\n\nexport declare namespace Property {\n    interface Args {\n        unsafeName: string;\n        accessLevel?: AccessLevel;\n        static_?: boolean;\n        declarationType: DeclarationType;\n        type: TypeReference;\n        indirect?: boolean;\n        defaultValue?: Expression;\n        docs?: DocComment;\n    }\n}\n\nexport class Property extends AstNode {\n    public readonly unsafeName: string;\n    public readonly accessLevel?: AccessLevel;\n    public readonly static_?: boolean;\n    public readonly declarationType: DeclarationType;\n    public readonly type: TypeReference;\n    public readonly indirect?: boolean;\n    public readonly defaultValue?: Expression;\n    public readonly docs?: DocComment;\n\n    constructor({\n        unsafeName,\n        accessLevel,\n        static_,\n        declarationType,\n        type,\n        indirect,\n        defaultValue,\n        docs\n    }: Property.Args) {\n        super();\n        this.unsafeName = unsafeName;\n        this.accessLevel = accessLevel;\n        this.static_ = static_;\n        this.declarationType = declarationType;\n        this.type = type;\n        this.indirect = indirect;\n        this.defaultValue = defaultValue;\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.write(writer);\n        }\n        if (this.accessLevel != null) {\n            writer.write(this.accessLevel);\n            writer.write(\" \");\n        }\n        if (this.static_) {\n            writer.write(\"static \");\n        }\n        writer.write(this.declarationType);\n        writer.write(\" \");\n        if (isReservedKeyword(this.unsafeName)) {\n            writer.write(`\\`${this.unsafeName}\\``);\n        } else {\n            writer.write(this.unsafeName);\n        }\n        writer.write(\": \");\n        this.type.write(writer);\n        if (this.defaultValue != null) {\n            writer.write(\" = \");\n            this.defaultValue.write(writer);\n        }\n    }\n}\n","export const Protocol = {\n    CaseIterable: \"CaseIterable\",\n    Codable: \"Codable\",\n    CodingKey: \"CodingKey\",\n    Decodable: \"Decodable\",\n    Encodable: \"Encodable\",\n    Equatable: \"Equatable\",\n    Error: \"Error\",\n    Hashable: \"Hashable\",\n    Sendable: \"Sendable\",\n    MultipartFormDataConvertible: \"MultipartFormDataConvertible\"\n} as const;\n\nexport type Protocol = (typeof Protocol)[keyof typeof Protocol];\n","import { AccessLevel } from \"./AccessLevel.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\nimport { DocComment } from \"./DocComment.js\";\nimport type { EnumWithRawValues } from \"./EnumWithRawValues.js\";\nimport { Expression } from \"./Expression.js\";\nimport { FunctionArgument } from \"./FunctionArgument.js\";\nimport { Initializer } from \"./Initializer.js\";\nimport { Method } from \"./Method.js\";\nimport { Property } from \"./Property.js\";\nimport { Protocol } from \"./Protocol.js\";\n\nexport declare namespace Struct {\n    interface Attribute {\n        name: string;\n        arguments?: FunctionArgument[];\n    }\n\n    interface Args {\n        attributes?: Attribute[];\n        name: string;\n        accessLevel?: AccessLevel;\n        conformances?: Protocol[];\n        properties: Property[];\n        initializers?: Initializer[];\n        methods?: Method[];\n        nestedTypes?: (Struct | EnumWithRawValues)[];\n        docs?: DocComment;\n    }\n}\n\nexport class Struct extends AstNode {\n    public readonly attributes: Struct.Attribute[];\n    public readonly name: string;\n    public readonly accessLevel?: AccessLevel;\n    public readonly conformances: string[];\n    public readonly properties: Property[];\n    public readonly initializers: Initializer[];\n    public readonly methods: Method[];\n    public readonly nestedTypes: (Struct | EnumWithRawValues)[];\n    public readonly docs?: DocComment;\n\n    public constructor({\n        attributes,\n        accessLevel,\n        name,\n        conformances,\n        properties,\n        initializers,\n        methods,\n        nestedTypes,\n        docs\n    }: Struct.Args) {\n        super();\n        this.attributes = attributes ?? [];\n        this.name = name;\n        this.accessLevel = accessLevel;\n        this.conformances = conformances ?? [];\n        this.properties = properties ?? [];\n        this.initializers = initializers ?? [];\n        this.methods = methods ?? [];\n        this.nestedTypes = nestedTypes ?? [];\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            this.docs.write(writer);\n        }\n        this.attributes.forEach((attribute) => {\n            if (attribute.arguments?.length) {\n                Expression.functionCall({\n                    unsafeName: `@${attribute.name}`,\n                    arguments_: attribute.arguments\n                }).write(writer);\n            } else {\n                writer.write(\"@\");\n                writer.write(attribute.name);\n            }\n            writer.write(\" \");\n        });\n        if (this.accessLevel != null) {\n            writer.write(this.accessLevel);\n            writer.write(\" \");\n        }\n        writer.write(`struct ${this.name}`);\n        this.conformances.forEach((conformance, index) => {\n            if (index === 0) {\n                writer.write(\": \");\n            } else if (index > 0) {\n                writer.write(\", \");\n            }\n            writer.write(conformance);\n        });\n        writer.write(\" {\");\n        writer.newLine();\n        writer.indent();\n        const hasProperties = this.properties.length > 0;\n        const hasInitializers = this.initializers.length > 0;\n        const hasMethods = this.methods.length > 0;\n        const hasNestedTypes = this.nestedTypes.length > 0;\n        this.properties.forEach((property) => {\n            property.write(writer);\n            writer.newLine();\n        });\n        let wroteMember = hasProperties;\n        if (hasInitializers) {\n            if (wroteMember) {\n                writer.newLine();\n            }\n            this.initializers.forEach((initializer, initializerIdx) => {\n                if (initializerIdx > 0) {\n                    writer.newLine();\n                }\n                initializer.write(writer);\n                writer.newLine();\n            });\n            wroteMember = true;\n        }\n        if (hasMethods) {\n            if (wroteMember) {\n                writer.newLine();\n            }\n            this.methods.forEach((method, methodIdx) => {\n                if (methodIdx > 0) {\n                    writer.newLine();\n                }\n                method.write(writer);\n                writer.newLine();\n            });\n            wroteMember = true;\n        }\n        if (hasNestedTypes) {\n            if (wroteMember) {\n                writer.newLine();\n            }\n            this.nestedTypes.forEach((nestedType, nestedTypeIdx) => {\n                if (nestedTypeIdx > 0) {\n                    writer.newLine();\n                }\n                nestedType.write(writer);\n                writer.newLine();\n            });\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { FoundationTypeSymbolName, SwiftTypeSymbolName } from \"../symbol/index.js\";\nimport { AstNode, Writer } from \"./core/index.js\";\n\ntype Symbol = {\n    type: \"symbol\";\n    symbol: string;\n};\n\ntype Generic = {\n    type: \"generic\";\n    reference: TypeReference;\n    arguments: TypeReference[];\n};\n\ntype Tuple = {\n    type: \"tuple\";\n    elements: [TypeReference, ...TypeReference[]];\n};\n\ntype Array_ = {\n    type: \"array\";\n    elementType: TypeReference;\n};\n\ntype Dictionary = {\n    type: \"dictionary\";\n    keyType: TypeReference;\n    valueType: TypeReference;\n};\n\ntype Optional = {\n    type: \"optional\";\n    valueType: TypeReference;\n};\n\ntype Nullable = {\n    type: \"nullable\";\n    valueType: TypeReference;\n};\n\ntype MemberAccess = {\n    type: \"member-access\";\n    target: TypeReference;\n    memberName: string;\n};\n\ntype TypeReferenceVariant = Symbol | Generic | Tuple | Array_ | Dictionary | Optional | Nullable | MemberAccess;\n\nexport class TypeReference extends AstNode {\n    public readonly variant: TypeReferenceVariant;\n\n    private constructor(variant: TypeReferenceVariant) {\n        super();\n        this.variant = variant;\n    }\n\n    public nonOptional(): TypeReference {\n        return TypeReference.nonOptional(this);\n    }\n\n    public nonNullable(): TypeReference {\n        return TypeReference.nonNullable(this);\n    }\n\n    public getReferenceIfSymbolType(): string | null {\n        return this.variant.type === \"symbol\" ? this.variant.symbol : null;\n    }\n\n    public write(writer: Writer): void {\n        const { variant } = this;\n\n        switch (variant.type) {\n            case \"symbol\":\n                writer.write(variant.symbol);\n                break;\n            case \"generic\": {\n                variant.reference.write(writer);\n                if (variant.arguments.length > 0) {\n                    writer.write(\"<\");\n                    variant.arguments.forEach((arg, index) => {\n                        arg.write(writer);\n                        if (index < variant.arguments.length - 1) {\n                            writer.write(\", \");\n                        }\n                    });\n                    writer.write(\">\");\n                }\n                break;\n            }\n            case \"tuple\":\n                writer.write(\"(\");\n                variant.elements.forEach((elementType, index) => {\n                    if (index > 0) {\n                        writer.write(\", \");\n                    }\n                    elementType.write(writer);\n                });\n                writer.write(\")\");\n                break;\n            case \"array\":\n                writer.write(\"[\");\n                variant.elementType.write(writer);\n                writer.write(\"]\");\n                break;\n            case \"dictionary\":\n                writer.write(\"[\");\n                variant.keyType.write(writer);\n                writer.write(\": \");\n                variant.valueType.write(writer);\n                writer.write(\"]\");\n                break;\n            case \"optional\":\n                variant.valueType.write(writer);\n                writer.write(\"?\");\n                break;\n            case \"nullable\":\n                writer.write(\"Nullable<\");\n                variant.valueType.write(writer);\n                writer.write(\">\");\n                break;\n            case \"member-access\":\n                variant.target.write(writer);\n                writer.write(\".\");\n                writer.write(variant.memberName);\n                break;\n            default:\n                assertNever(variant);\n        }\n    }\n\n    public equals(that: TypeReference): boolean {\n        switch (this.variant.type) {\n            case \"symbol\":\n                return that.variant.type === \"symbol\" && this.variant.symbol === that.variant.symbol;\n            case \"generic\":\n                return (\n                    that.variant.type === \"generic\" &&\n                    this.variant.reference.equals(that.variant.reference) &&\n                    this.variant.arguments.every(\n                        (arg, index) =>\n                            that.variant.type === \"generic\" &&\n                            that.variant.arguments[index] &&\n                            arg.equals(that.variant.arguments[index])\n                    )\n                );\n            case \"tuple\": {\n                return (\n                    that.variant.type === \"tuple\" &&\n                    this.variant.elements.every(\n                        (arg, index) =>\n                            that.variant.type === \"tuple\" &&\n                            that.variant.elements[index] &&\n                            arg.equals(that.variant.elements[index])\n                    )\n                );\n            }\n            case \"array\":\n                return that.variant.type === \"array\" && this.variant.elementType.equals(that.variant.elementType);\n            case \"dictionary\":\n                return (\n                    that.variant.type === \"dictionary\" &&\n                    this.variant.keyType.equals(that.variant.keyType) &&\n                    this.variant.valueType.equals(that.variant.valueType)\n                );\n            case \"optional\":\n                return that.variant.type == \"optional\" && this.variant.valueType.equals(that.variant.valueType);\n            case \"nullable\":\n                return that.variant.type === \"nullable\" && this.variant.valueType.equals(that.variant.valueType);\n            case \"member-access\":\n                return (\n                    that.variant.type === \"member-access\" &&\n                    this.variant.target.equals(that.variant.target) &&\n                    this.variant.memberName === that.variant.memberName\n                );\n            default:\n                assertNever(this.variant);\n        }\n    }\n\n    public static symbol(symbolReference: string): TypeReference {\n        return new this({ type: \"symbol\", symbol: symbolReference });\n    }\n\n    public static generic(reference: TypeReference, arguments_: TypeReference[]): TypeReference {\n        return new this({ type: \"generic\", reference, arguments: arguments_ });\n    }\n\n    public static tuple(elements: [TypeReference, ...TypeReference[]]): TypeReference {\n        return new this({ type: \"tuple\", elements });\n    }\n\n    public static array(elementType: TypeReference): TypeReference {\n        return new this({ type: \"array\", elementType });\n    }\n\n    public static dictionary(keyType: TypeReference, valueType: TypeReference): TypeReference {\n        return new this({ type: \"dictionary\", keyType, valueType });\n    }\n\n    public static optional(valueType: TypeReference): TypeReference {\n        if (valueType.variant.type === \"optional\") {\n            return valueType;\n        }\n        return new this({ type: \"optional\", valueType });\n    }\n\n    public static nullable(valueType: TypeReference): TypeReference {\n        if (valueType.variant.type === \"nullable\") {\n            return valueType;\n        }\n        return new this({ type: \"nullable\", valueType });\n    }\n\n    public static memberAccess(target: TypeReference, memberName: string): TypeReference {\n        return new this({ type: \"member-access\", target, memberName });\n    }\n\n    // Helpers\n\n    public static nonOptional(valueType: TypeReference): TypeReference {\n        return valueType.variant.type === \"optional\"\n            ? TypeReference.nonOptional(valueType.variant.valueType)\n            : valueType;\n    }\n\n    public static nonNullable(valueType: TypeReference): TypeReference {\n        return valueType.variant.type === \"nullable\"\n            ? TypeReference.nonNullable(valueType.variant.valueType)\n            : valueType;\n    }\n\n    public static unqualifiedToSwiftType(symbolName: SwiftTypeSymbolName): TypeReference {\n        return TypeReference.symbol(symbolName);\n    }\n\n    public static unqualifiedToFoundationType(symbolName: FoundationTypeSymbolName): TypeReference {\n        return TypeReference.symbol(symbolName);\n    }\n}\n","import type { TypeSymbolShape } from \"./symbol-registry/index.js\";\n\nexport type AsIsSymbolName =\n    | \"JSONValue\"\n    | \"CalendarDate\"\n    | \"HTTP\"\n    | \"MultipartFormData\"\n    | \"MultipartFormDataConvertible\"\n    | \"MultipartFormField\"\n    | \"QueryParameter\"\n    | \"EncodableValue\"\n    | \"Serde\"\n    | \"StringKey\"\n    | \"ClientConfig\"\n    | \"FormFile\"\n    | \"HTTPError\"\n    | \"Nullable\"\n    | \"RequestOptions\"\n    | \"Networking\"\n    | \"Indirect\";\n\n/**\n * Configuration specification for a static Swift file that gets included as-is in the generated SDK.\n * This serves as the raw configuration that gets transformed into a fully resolved {@link AsIsFileDefinition}\n * during the build process.\n */\nexport interface AsIsFileSpec<SymbolName extends string> {\n    relativePathToDir: string;\n    filenameWithoutExtension: string;\n    symbols: { name: SymbolName; shape: TypeSymbolShape }[];\n}\n\n/**\n * Registry of all static Swift file specifications.\n *\n * This constant defines the complete catalog of pre-written Swift files that can be\n * included in generated SDKs. Each entry maps a unique identifier to a file specification\n * containing the file's intended path and exported symbols.\n */\nexport const SourceAsIsFileSpecs = {\n    // Core/Networking\n    Http: {\n        relativePathToDir: \"Core/Networking\",\n        filenameWithoutExtension: \"HTTP\",\n        symbols: [{ name: \"HTTP\", shape: { type: \"enum-container\" } }]\n    },\n    MultipartFormData: {\n        relativePathToDir: \"Core/Networking\",\n        filenameWithoutExtension: \"MultipartFormData\",\n        symbols: [{ name: \"MultipartFormData\", shape: { type: \"class\" } }]\n    },\n    MultipartFormDataConvertible: {\n        relativePathToDir: \"Core/Networking\",\n        filenameWithoutExtension: \"MultipartFormDataConvertible\",\n        symbols: [{ name: \"MultipartFormDataConvertible\", shape: { type: \"protocol\" } }]\n    },\n    MultipartFormField: {\n        relativePathToDir: \"Core/Networking\",\n        filenameWithoutExtension: \"MultipartFormField\",\n        symbols: [{ name: \"MultipartFormField\", shape: { type: \"enum-with-associated-values\" } }]\n    },\n    QueryParameter: {\n        relativePathToDir: \"Core/Networking\",\n        filenameWithoutExtension: \"QueryParameter\",\n        symbols: [{ name: \"QueryParameter\", shape: { type: \"enum-with-associated-values\" } }]\n    },\n    // Core/Serde\n    DecoderPlusAdditionalProperties: {\n        relativePathToDir: \"Core/Serde\",\n        filenameWithoutExtension: \"Decoder+AdditionalProperties\",\n        symbols: []\n    },\n    EncodableValue: {\n        relativePathToDir: \"Core/Serde\",\n        filenameWithoutExtension: \"EncodableValue\",\n        symbols: [{ name: \"EncodableValue\", shape: { type: \"struct\" } }]\n    },\n    EncoderPlusAdditionalProperties: {\n        relativePathToDir: \"Core/Serde\",\n        filenameWithoutExtension: \"Encoder+AdditionalProperties\",\n        symbols: []\n    },\n    JSONEncoderPlusEncodableValue: {\n        relativePathToDir: \"Core/Serde\",\n        filenameWithoutExtension: \"JSONEncoder+EncodableValue\",\n        symbols: []\n    },\n    KeyedDecodingContainerPlusNullable: {\n        relativePathToDir: \"Core/Serde\",\n        filenameWithoutExtension: \"KeyedDecodingContainer+Nullable\",\n        symbols: []\n    },\n    KeyedEncodingContainerPlusNullable: {\n        relativePathToDir: \"Core/Serde\",\n        filenameWithoutExtension: \"KeyedEncodingContainer+Nullable\",\n        symbols: []\n    },\n    Serde: {\n        relativePathToDir: \"Core/Serde\",\n        filenameWithoutExtension: \"Serde\",\n        symbols: [{ name: \"Serde\", shape: { type: \"class\" } }]\n    },\n    StringKey: {\n        relativePathToDir: \"Core/Serde\",\n        filenameWithoutExtension: \"StringKey\",\n        symbols: [{ name: \"StringKey\", shape: { type: \"struct\" } }]\n    },\n\n    // Core\n    DataPlusString: {\n        relativePathToDir: \"Core\",\n        filenameWithoutExtension: \"Data+String\",\n        symbols: []\n    },\n    StringPlusUrlEncoding: {\n        relativePathToDir: \"Core\",\n        filenameWithoutExtension: \"String+URLEncoding\",\n        symbols: []\n    },\n\n    // Public\n    CalendarDate: {\n        relativePathToDir: \"Public\",\n        filenameWithoutExtension: \"CalendarDate\",\n        symbols: [{ name: \"CalendarDate\", shape: { type: \"struct\" } }]\n    },\n    ClientConfig: {\n        relativePathToDir: \"Public\",\n        filenameWithoutExtension: \"ClientConfig\",\n        symbols: [{ name: \"ClientConfig\", shape: { type: \"class\" } }]\n    },\n    FormFile: {\n        relativePathToDir: \"Public\",\n        filenameWithoutExtension: \"FormFile\",\n        symbols: [{ name: \"FormFile\", shape: { type: \"struct\" } }]\n    },\n    HTTPError: {\n        relativePathToDir: \"Public\",\n        filenameWithoutExtension: \"HTTPError\",\n        symbols: [{ name: \"HTTPError\", shape: { type: \"struct\" } }]\n    },\n    Indirect: {\n        relativePathToDir: \"Public\",\n        filenameWithoutExtension: \"Indirect\",\n        symbols: [{ name: \"Indirect\", shape: { type: \"class\" } }]\n    },\n    JsonValue: {\n        relativePathToDir: \"Public\",\n        filenameWithoutExtension: \"JSONValue\",\n        symbols: [{ name: \"JSONValue\", shape: { type: \"enum-with-associated-values\" } }]\n    },\n    Networking: {\n        relativePathToDir: \"Public\",\n        filenameWithoutExtension: \"Networking\",\n        symbols: [{ name: \"Networking\", shape: { type: \"enum-container\" } }]\n    },\n    Nullable: {\n        relativePathToDir: \"Public\",\n        filenameWithoutExtension: \"Nullable\",\n        symbols: [{ name: \"Nullable\", shape: { type: \"enum-with-associated-values\" } }]\n    },\n    RequestOptions: {\n        relativePathToDir: \"Public\",\n        filenameWithoutExtension: \"RequestOptions\",\n        symbols: [{ name: \"RequestOptions\", shape: { type: \"struct\" } }]\n    }\n} satisfies Record<string, AsIsFileSpec<AsIsSymbolName>>;\n","import { TypeSymbolShape } from \"./symbol-registry/index.js\";\n\nexport type SwiftTypeSymbolName =\n    | \"String\"\n    | \"Bool\"\n    | \"Int\"\n    | \"Int64\"\n    | \"UInt\"\n    | \"UInt64\"\n    | \"Float\"\n    | \"Double\"\n    | \"Void\"\n    | \"Encoder\"\n    | \"Decoder\"\n    // TODO(kafkas): Any doesn't seem to be under the Swift scope i.e. Swift.Any is not valid so we probably wanna move this.\n    | \"Any\";\n\nexport type FoundationTypeSymbolName = \"Data\" | \"Date\" | \"UUID\";\n\nexport class Symbol {\n    public static readonly SWIFT_SYMBOL_NAME = \"Swift\";\n    public static readonly SWIFT_SYMBOL_ID = Symbol.SWIFT_SYMBOL_NAME;\n\n    private static swiftTypeSymbolsByName: Record<SwiftTypeSymbolName, Symbol> = {\n        String: Symbol.swiftType(\"String\"),\n        Bool: Symbol.swiftType(\"Bool\"),\n        Int: Symbol.swiftType(\"Int\"),\n        Int64: Symbol.swiftType(\"Int64\"),\n        UInt: Symbol.swiftType(\"UInt\"),\n        UInt64: Symbol.swiftType(\"UInt64\"),\n        Float: Symbol.swiftType(\"Float\"),\n        Double: Symbol.swiftType(\"Double\"),\n        Void: Symbol.swiftType(\"Void\"),\n        Encoder: Symbol.swiftType(\"Encoder\"),\n        Decoder: Symbol.swiftType(\"Decoder\"),\n        Any: Symbol.swiftType(\"Any\")\n    };\n    public static swiftTypeSymbols = Object.values(Symbol.swiftTypeSymbolsByName);\n\n    public static readonly FOUNDATION_SYMBOL_NAME = \"Foundation\";\n    public static readonly FOUNDATION_SYMBOL_ID = Symbol.FOUNDATION_SYMBOL_NAME;\n\n    private static foundationTypeSymbolsByName: Record<FoundationTypeSymbolName, Symbol> = {\n        Data: Symbol.foundationType(\"Data\"),\n        Date: Symbol.foundationType(\"Date\"),\n        UUID: Symbol.foundationType(\"UUID\")\n    };\n    public static foundationTypeSymbols = Object.values(Symbol.foundationTypeSymbolsByName);\n\n    public static isSwiftSymbol(symbolId: string): boolean {\n        return Symbol.SWIFT_SYMBOL_ID === symbolId || symbolId.startsWith(`${Symbol.SWIFT_SYMBOL_ID}.`);\n    }\n\n    public static isSwiftSymbolName(symbolName: string): symbolName is SwiftTypeSymbolName {\n        return symbolName in Symbol.swiftTypeSymbolsByName;\n    }\n\n    public static isFoundationSymbol(symbolId: string): boolean {\n        return Symbol.FOUNDATION_SYMBOL_ID === symbolId || symbolId.startsWith(`${Symbol.FOUNDATION_SYMBOL_ID}.`);\n    }\n\n    public static isFoundationSymbolName(symbolName: string): symbolName is FoundationTypeSymbolName {\n        return symbolName in Symbol.foundationTypeSymbolsByName;\n    }\n\n    /**\n     * Any non-system symbol.\n     */\n    public static isCustomSymbol(symbolId: string): boolean {\n        return !Symbol.isSwiftSymbol(symbolId) && !Symbol.isFoundationSymbol(symbolId);\n    }\n\n    public static create(symbolId: string, symbolName: string, shape: TypeSymbolShape): Symbol {\n        return new Symbol(symbolId, symbolName, shape);\n    }\n\n    public static swiftType(symbolName: SwiftTypeSymbolName): Symbol {\n        return Symbol.create(`${Symbol.SWIFT_SYMBOL_ID}.${symbolName}`, symbolName, { type: \"system\" });\n    }\n\n    public static foundationType(symbolName: FoundationTypeSymbolName): Symbol {\n        return Symbol.create(`${Symbol.FOUNDATION_SYMBOL_ID}.${symbolName}`, symbolName, { type: \"system\" });\n    }\n\n    public readonly id: string;\n    public readonly name: string;\n    public readonly shape: TypeSymbolShape;\n\n    private constructor(id: string, name: string, shape: TypeSymbolShape) {\n        this.id = id;\n        this.name = name;\n        this.shape = shape;\n    }\n\n    public get isSwiftSymbol(): boolean {\n        return Symbol.isSwiftSymbol(this.id);\n    }\n\n    public get isFoundationSymbol(): boolean {\n        return Symbol.isFoundationSymbol(this.id);\n    }\n\n    public get isCustomSymbol(): boolean {\n        return Symbol.isCustomSymbol(this.id);\n    }\n}\n","import { assertNonNull } from \"@fern-api/core-utils\";\nimport { Symbol } from \"../index.js\";\nimport { ModuleSymbol, SymbolGraph, TypeSymbolShape } from \"./symbol-graph/index.js\";\n\n/**\n * A symbol registry for a target module used in SDK generation.\n *\n * This registry manages symbol resolution and references within a Swift module,\n * with built-in support for Swift standard library and Foundation framework types.\n * It assumes that the Foundation module is imported throughout the target module.\n */\nexport class SymbolRegistry {\n    public static create(): SymbolRegistry {\n        const { graph, swiftSymbol, foundationSymbol } = SymbolRegistry.createGraph();\n        return new SymbolRegistry(graph, swiftSymbol, foundationSymbol);\n    }\n\n    private static createGraph(): {\n        graph: SymbolGraph;\n        swiftSymbol: ModuleSymbol;\n        foundationSymbol: ModuleSymbol;\n    } {\n        const graph = new SymbolGraph();\n\n        const createSwiftNode = () => {\n            const swiftSymbol = graph.createModuleSymbol({\n                symbolId: Symbol.SWIFT_SYMBOL_ID,\n                symbolName: Symbol.SWIFT_SYMBOL_NAME\n            });\n            Symbol.swiftTypeSymbols.forEach((symbol) => {\n                const symbolNode = graph.createTypeSymbol({\n                    symbolId: symbol.id,\n                    symbolName: symbol.name,\n                    shape: { type: \"system\" }\n                });\n                graph.nestSymbol({ parentSymbolId: swiftSymbol.id, childSymbolId: symbolNode.id });\n            });\n            return swiftSymbol;\n        };\n\n        const createFoundationNode = () => {\n            const foundationSymbol = graph.createModuleSymbol({\n                symbolId: Symbol.FOUNDATION_SYMBOL_ID,\n                symbolName: Symbol.FOUNDATION_SYMBOL_NAME\n            });\n            Symbol.foundationTypeSymbols.forEach((symbol) => {\n                const symbolNode = graph.createTypeSymbol({\n                    symbolId: symbol.id,\n                    symbolName: symbol.name,\n                    shape: { type: \"system\" }\n                });\n                graph.nestSymbol({ parentSymbolId: foundationSymbol.id, childSymbolId: symbolNode.id });\n            });\n            return foundationSymbol;\n        };\n\n        const swiftSymbol = createSwiftNode();\n        const foundationSymbol = createFoundationNode();\n\n        return { graph, swiftSymbol, foundationSymbol };\n    }\n\n    private readonly graph: SymbolGraph;\n    private readonly swiftSymbol: ModuleSymbol;\n    private readonly foundationSymbol: ModuleSymbol;\n    private registeredSourceModule: ModuleSymbol | null;\n    private registeredTestModule: ModuleSymbol | null;\n\n    private constructor(graph: SymbolGraph, swiftSymbol: ModuleSymbol, foundationSymbol: ModuleSymbol) {\n        this.graph = graph;\n        this.swiftSymbol = swiftSymbol;\n        this.foundationSymbol = foundationSymbol;\n        this.registeredSourceModule = null;\n        this.registeredTestModule = null;\n    }\n\n    public getRegisteredSourceModuleSymbolOrThrow(): Symbol {\n        assertNonNull(this.registeredSourceModule, \"Module symbol not found.\");\n        return Symbol.create(this.registeredSourceModule.id, this.registeredSourceModule.name, { type: \"other\" });\n    }\n\n    public getRegisteredTestModuleSymbolOrThrow(): Symbol {\n        assertNonNull(this.registeredTestModule, \"Module symbol not found.\");\n        return Symbol.create(this.registeredTestModule.id, this.registeredTestModule.name, { type: \"other\" });\n    }\n\n    public getSymbolByIdOrThrow(symbolId: string): Symbol {\n        const symbol = this.graph.getSymbolById(symbolId);\n        assertNonNull(symbol, `Symbol with ID '${symbolId}' not found in registry.`);\n        return Symbol.create(symbol.id, symbol.name, symbol.kind === \"type\" ? symbol.shape : { type: \"other\" });\n    }\n\n    /**\n     * Registers a source module symbol. Use this to register a source module only once.\n     * The import relations between the source module and Swift/Foundation will be automatically added.\n     *\n     * @param symbolName - The symbol name. Must not be `\"Swift\"` or `\"Foundation\"`.\n     */\n    public registerSourceModule(symbolName: string): Symbol {\n        const symbolId = symbolName;\n        const moduleSymbol = this.graph.createModuleSymbol({ symbolId, symbolName });\n        moduleSymbol.addImport(this.swiftSymbol);\n        moduleSymbol.addImport(this.foundationSymbol);\n        this.registeredSourceModule = moduleSymbol;\n        return Symbol.create(moduleSymbol.id, moduleSymbol.name, { type: \"other\" });\n    }\n\n    /**\n     * Registers a test module symbol. Use this to register a test module only once.\n     * The import relations between the test module, source module and Swift/Foundation will be automatically added.\n     *\n     * @param symbolName - The symbol name. Must not be different from `\"Swift\"`, `\"Foundation\"` or the name of the source module.\n     */\n    public registerTestModule(symbolName: string): Symbol {\n        const symbolId = symbolName;\n        const moduleSymbol = this.graph.createModuleSymbol({ symbolId, symbolName });\n        moduleSymbol.addImport(this.swiftSymbol);\n        moduleSymbol.addImport(this.foundationSymbol);\n        assertNonNull(this.registeredSourceModule, \"Cannot register a test module before registering a source module.\");\n        moduleSymbol.addImport(this.registeredSourceModule);\n        this.registeredTestModule = moduleSymbol;\n        return Symbol.create(moduleSymbol.id, moduleSymbol.name, { type: \"other\" });\n    }\n\n    /**\n     * Registers a top-level source module type symbol.\n     *\n     * @param symbolName - The symbol name.\n     * @param shape - The information about the shape of the type.\n     */\n    public registerSourceModuleType(symbolName: string, shape: TypeSymbolShape): Symbol {\n        assertNonNull(this.registeredSourceModule, \"Cannot register a type before registering a module.\");\n        const symbolId = this.inferSymbolIdForSourceModuleType(symbolName);\n        const typeSymbol = this.graph.createTypeSymbol({ symbolId, symbolName, shape });\n        this.graph.nestSymbol({ parentSymbolId: this.registeredSourceModule.id, childSymbolId: typeSymbol.id });\n        return Symbol.create(typeSymbol.id, typeSymbol.name, shape);\n    }\n\n    /**\n     * Registers a top-level test module type symbol.\n     *\n     * @param symbolName - The symbol name.\n     * @param shape - The information about the shape of the type.\n     */\n    public registerTestModuleType(symbolName: string, shape: TypeSymbolShape): Symbol {\n        assertNonNull(this.registeredTestModule, \"Cannot register a type before registering a module.\");\n        const symbolId = this.inferSymbolIdForTestModuleType(symbolName);\n        const typeSymbol = this.graph.createTypeSymbol({ symbolId, symbolName, shape });\n        this.graph.nestSymbol({ parentSymbolId: this.registeredTestModule.id, childSymbolId: typeSymbol.id });\n        return Symbol.create(typeSymbol.id, typeSymbol.name, shape);\n    }\n\n    /**\n     * Registers a nested type symbol.\n     */\n    public registerNestedType({\n        parentSymbol,\n        symbolName,\n        shape\n    }: {\n        parentSymbol: Symbol | string;\n        symbolName: string;\n        shape: TypeSymbolShape;\n    }): Symbol {\n        const parentSymbolId = typeof parentSymbol === \"string\" ? parentSymbol : parentSymbol.id;\n        const symbolId = this.inferSymbolIdForNestedType(parentSymbolId, symbolName);\n        const typeSymbol = this.graph.createTypeSymbol({ symbolId, symbolName, shape });\n        this.graph.nestSymbol({ parentSymbolId, childSymbolId: typeSymbol.id });\n        return Symbol.create(typeSymbol.id, typeSymbol.name, shape);\n    }\n\n    public reference({ fromSymbol, toSymbol }: { fromSymbol: Symbol | string; toSymbol: Symbol | string }) {\n        const fromSymbolId = typeof fromSymbol === \"string\" ? fromSymbol : fromSymbol.id;\n        const toSymbolId = typeof toSymbol === \"string\" ? toSymbol : toSymbol.id;\n        return this.graph.reference({ fromSymbolId, targetSymbolId: toSymbolId });\n    }\n\n    public resolveReference({ fromSymbol, reference }: { fromSymbol: Symbol | string; reference: string }) {\n        const fromSymbolId = typeof fromSymbol === \"string\" ? fromSymbol : fromSymbol.id;\n        const symbol = this.graph.resolveReference({ fromSymbolId, reference });\n        return symbol\n            ? Symbol.create(symbol.id, symbol.name, symbol.kind === \"type\" ? symbol.shape : { type: \"other\" })\n            : null;\n    }\n\n    public inferSymbolIdForSourceModuleType(symbolName: string) {\n        assertNonNull(this.registeredSourceModule, \"Cannot get symbol id for a type before registering a module.\");\n        return `${this.registeredSourceModule.id}.${symbolName}`;\n    }\n\n    public inferSymbolIdForTestModuleType(symbolName: string) {\n        assertNonNull(this.registeredTestModule, \"Cannot get symbol id for a type before registering a module.\");\n        return `${this.registeredTestModule.id}.${symbolName}`;\n    }\n\n    public inferSymbolIdForNestedType(parentSymbolId: string, symbolName: string) {\n        return `${parentSymbolId}.${symbolName}`;\n    }\n}\n","export type { ModuleSymbol, Symbol, TypeSymbol, TypeSymbolShape } from \"./symbol.js\";\nexport { SymbolGraph } from \"./symbol-graph.js\";\n","import { assertDefined } from \"@fern-api/core-utils\";\nimport { ModuleSymbol, Symbol, TypeSymbol, TypeSymbolShape } from \"./symbol.js\";\n\nexport class SymbolGraph {\n    private readonly symbolsById = new Map<string, Symbol>();\n\n    public createModuleSymbol({ symbolId, symbolName }: { symbolId: string; symbolName: string }): ModuleSymbol {\n        this.validateSymbolNotExists(symbolId);\n        const symbol = new ModuleSymbol(symbolId, symbolName);\n        this.symbolsById.set(symbolId, symbol);\n        return symbol;\n    }\n\n    public createTypeSymbol({\n        symbolId,\n        symbolName,\n        shape\n    }: {\n        symbolId: string;\n        symbolName: string;\n        shape: TypeSymbolShape;\n    }): TypeSymbol {\n        this.validateSymbolNotExists(symbolId);\n        const symbol = new TypeSymbol(symbolName, symbolId, shape);\n        this.symbolsById.set(symbolId, symbol);\n        return symbol;\n    }\n\n    public addImportRelation({\n        clientSymbolId,\n        importedSymbolId\n    }: {\n        clientSymbolId: string;\n        importedSymbolId: string;\n    }): void {\n        const clientModuleSymbol = this.getSymbolByIdOrThrow(clientSymbolId);\n        const importedModuleSymbol = this.getSymbolByIdOrThrow(importedSymbolId);\n        if (clientModuleSymbol.kind !== \"module\" || importedModuleSymbol.kind !== \"module\") {\n            throw new Error(\n                `Client module '${clientModuleSymbol.id}' and imported module '${importedModuleSymbol.id}' must both be module symbols.`\n            );\n        }\n        clientModuleSymbol.addImport(importedModuleSymbol);\n    }\n\n    public nestSymbol({ parentSymbolId, childSymbolId }: { parentSymbolId: string; childSymbolId: string }): void {\n        const parentSymbol = this.getSymbolByIdOrThrow(parentSymbolId);\n        const childSymbol = this.getSymbolByIdOrThrow(childSymbolId);\n        parentSymbol.addChild(childSymbol);\n        childSymbol.parent = parentSymbol;\n    }\n\n    public reference({ fromSymbolId, targetSymbolId }: { fromSymbolId: string; targetSymbolId: string }): string {\n        const from = this.getSymbolByIdOrThrow(fromSymbolId);\n        const target = this.getSymbolByIdOrThrow(targetSymbolId);\n        const path = target.qualifiedPath;\n        for (let k = 1; k <= path.length; k++) {\n            const parts = path.slice(path.length - k);\n            const resolved = this.resolvePath(from, parts);\n            if (resolved?.id === target.id) {\n                return parts.join(\".\");\n            }\n        }\n        return target.qualifiedName;\n    }\n\n    /**\n     * Resolve a raw reference string (e.g., \"Date\", \"Post.Date\", \"Foundation.Date\") from a given scope.\n     * Returns the resolved Symbol node or null if it does not resolve unambiguously.\n     */\n    public resolveReference({ fromSymbolId, reference }: { fromSymbolId: string; reference: string }): Symbol | null {\n        const from = this.getSymbolByIdOrThrow(fromSymbolId);\n        const parts = reference.split(\".\").filter((p) => p.length > 0);\n        return this.resolvePath(from, parts);\n    }\n\n    private resolvePath(from: Symbol, parts: string[]): Symbol | null {\n        const [firstPart, ...restParts] = parts;\n        if (firstPart === undefined) {\n            return null;\n        }\n        const first = this.resolveFirstSegment(from, firstPart);\n        if (first === null) {\n            return null;\n        }\n        let cur: Symbol | null = first;\n        for (let i = 0; i < restParts.length; i++) {\n            const part = restParts[i];\n            assertDefined(part);\n            cur = cur.getChildByName(part) ?? null;\n            if (cur === null) {\n                return null;\n            }\n        }\n        return cur;\n    }\n\n    private resolveFirstSegment(from: Symbol, name: string): Symbol | null {\n        let cur: Symbol | null = from;\n        while (cur !== null) {\n            const child = cur.getChildByName(name);\n            if (child) {\n                return child;\n            }\n            cur = cur.parent;\n        }\n        const moduleSymbol = from.kind === \"module\" ? from : from.getNearestModuleAncestorOrThrow();\n        // Allow explicit module qualifier (e.g., \"Acme\", \"Foundation\")\n        if (moduleSymbol.name === name) {\n            return moduleSymbol;\n        }\n        for (const importedModule of moduleSymbol.imports) {\n            if (importedModule.name === name) {\n                return importedModule;\n            }\n        }\n        let resolved: Symbol | null = null;\n        for (const importedModule of moduleSymbol.imports) {\n            const hit = importedModule.getChildByName(name);\n            if (hit) {\n                if (resolved != null && resolved.id !== hit.id) {\n                    return null; // ambiguous across imports\n                }\n                resolved = hit;\n            }\n        }\n        return resolved;\n    }\n\n    public getSymbolByIdOrThrow(symbolId: string): Symbol {\n        const symbol = this.symbolsById.get(symbolId);\n        assertDefined(symbol, `A symbol with the ID '${symbolId}' was not found in the registry.`);\n        return symbol;\n    }\n\n    public getSymbolById(symbolId: string): Symbol | null {\n        return this.symbolsById.get(symbolId) ?? null;\n    }\n\n    private validateSymbolNotExists(symbolId: string): void {\n        if (this.symbolsById.has(symbolId)) {\n            throw new Error(`A symbol with the ID '${symbolId}' already exists in the registry.`);\n        }\n    }\n}\n","import { assertNonNull } from \"@fern-api/core-utils\";\n\nabstract class AbstractSymbol {\n    public readonly id: string;\n    public readonly name: string;\n    public abstract qualifiedPath: string[];\n    protected childrenByName: Map<string, Symbol>;\n\n    protected constructor(id: string, name: string) {\n        this.id = id;\n        this.name = name;\n        this.childrenByName = new Map();\n    }\n\n    public get children() {\n        return Array.from(this.childrenByName.values());\n    }\n\n    public addChild(child: Symbol) {\n        if (this.childrenByName.has(child.name)) {\n            throw new Error(`A child with the name '${child.name}' already exists in module '${this.name}'.`);\n        }\n        this.childrenByName.set(child.name, child);\n    }\n\n    public getChildByName(name: string): Symbol | undefined {\n        return this.childrenByName.get(name);\n    }\n}\n\nexport class ModuleSymbol extends AbstractSymbol {\n    public readonly kind = \"module\";\n    public readonly imports: ModuleSymbol[];\n    public parent = null;\n\n    public constructor(id: string, name: string) {\n        super(id, name);\n        this.imports = [];\n    }\n\n    public addImport(moduleSymbol: ModuleSymbol) {\n        this.imports.push(moduleSymbol);\n    }\n\n    public get qualifiedPath(): string[] {\n        return [this.name];\n    }\n\n    public get qualifiedName(): string {\n        return this.name;\n    }\n}\n\nexport type TypeSymbolShape =\n    | {\n          type: \"system\";\n      }\n    | {\n          type: \"struct\";\n      }\n    | {\n          type: \"class\";\n      }\n    | {\n          type: \"enum-container\";\n      }\n    | {\n          type: \"enum-with-raw-values\";\n      }\n    | {\n          type: \"enum-with-associated-values\";\n      }\n    | {\n          type: \"protocol\";\n      }\n    | {\n          type: \"other\";\n      };\n\nexport class TypeSymbol extends AbstractSymbol {\n    public readonly kind = \"type\";\n    public readonly shape: TypeSymbolShape;\n    public parent: Symbol | null;\n\n    public constructor(name: string, id: string, shape: TypeSymbolShape) {\n        super(id, name);\n        this.parent = null;\n        this.shape = shape;\n    }\n\n    public getNearestModuleAncestorOrThrow(): ModuleSymbol {\n        let cur: Symbol | null = this.parent;\n        while (cur !== null && cur.kind !== \"module\") {\n            cur = cur.parent;\n        }\n        assertNonNull(cur, `No module ancestor found for type symbol '${this.id}'`);\n        return cur;\n    }\n\n    public get qualifiedPath(): string[] {\n        return [...(this.parent?.qualifiedPath ?? []), this.name];\n    }\n\n    public get qualifiedName(): string {\n        return this.qualifiedPath.join(\".\");\n    }\n}\n\nexport type Symbol = ModuleSymbol | TypeSymbol;\n","import { assertString } from \"@fern-api/core-utils\";\n\nexport interface TemplateFileSpec {\n    relativePath: string;\n    filenameWithoutExtension: (templateData: Record<string, unknown>) => string;\n}\n\nexport const SourceTemplateFileSpecs = {\n    ClientError: {\n        relativePath: \"\",\n        filenameWithoutExtension: (templateData) => {\n            assertString(templateData.errorEnumName);\n            return templateData.errorEnumName;\n        }\n    },\n    // Core/Networking\n    HTTPClient: {\n        relativePath: \"Core/Networking\",\n        filenameWithoutExtension: () => \"HTTPClient\"\n    }\n} satisfies Record<string, TemplateFileSpec>;\n\nexport type SourceTemplateFileId = keyof typeof SourceTemplateFileSpecs;\n","import { camelCase, upperFirst } from \"lodash-es\";\n\nexport function pascalCase(str: string): string {\n    return upperFirst(camelCase(str));\n}\n","import { DiscriminatedUnionTypeInstance, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { EnumWithAssociatedValues, LiteralEnum, sanitizeSelf, swift } from \"@fern-api/swift-codegen\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n    interface Args {\n        fromSymbol: swift.Symbol;\n        typeReference: FernIr.dynamic.TypeReference;\n        value: unknown;\n        as?: ConvertedAs;\n    }\n\n    // Identifies what the type is being converted as, which sometimes influences how\n    // the type is instantiated.\n    type ConvertedAs = \"mapKey\" | \"mapValue\";\n}\n\nexport class DynamicTypeLiteralMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public convert(args: DynamicTypeLiteralMapper.Args): swift.Expression {\n        const { fromSymbol, typeReference, value, as } = args;\n        switch (typeReference.type) {\n            case \"list\":\n                return this.convertList({ fromSymbol, list: typeReference.value, value });\n            case \"literal\": {\n                if (typeReference.value.type === \"string\") {\n                    return swift.Expression.enumCaseShorthand(\n                        LiteralEnum.generateEnumCaseLabel(typeReference.value.value)\n                    );\n                } else if (typeReference.value.type === \"boolean\") {\n                    return swift.Expression.nop();\n                } else {\n                    assertNever(typeReference.value);\n                    break;\n                }\n            }\n            case \"map\":\n                return this.convertMap({ fromSymbol, map: typeReference, value: value });\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: typeReference.value });\n                if (named == null) {\n                    return swift.Expression.nop();\n                }\n                return this.convertNamed({ fromSymbol, typeId: typeReference.value, named, value: value, as });\n            }\n            case \"nullable\":\n                return this.context.customConfig?.nullableAsOptional\n                    ? this.convert({ fromSymbol, typeReference: typeReference.value, value, as })\n                    : this.convertNullable({ fromSymbol, nullable: typeReference, value: value, as });\n            case \"optional\":\n                return this.convert({ fromSymbol, typeReference: typeReference.value, value, as });\n            case \"primitive\":\n                return this.convertPrimitive({ primitive: typeReference.value, value: value, as });\n            case \"set\":\n                return swift.Expression.nop();\n            case \"unknown\":\n                return this.convertUnknown(value);\n            default:\n                assertNever(typeReference);\n        }\n    }\n\n    private convertList({\n        fromSymbol,\n        list,\n        value\n    }: {\n        fromSymbol: swift.Symbol;\n        list: FernIr.dynamic.TypeReference;\n        value: unknown;\n    }): swift.Expression {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return swift.Expression.nop();\n        }\n        return swift.Expression.arrayLiteral({\n            elements: value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ fromSymbol, typeReference: list, value: v });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }),\n            multiline: true\n        });\n    }\n\n    private convertMap({\n        fromSymbol,\n        map,\n        value\n    }: {\n        fromSymbol: swift.Symbol;\n        map: FernIr.dynamic.MapType;\n        value: unknown;\n    }): swift.Expression {\n        if (typeof value !== \"object\" || value == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n            });\n            return swift.Expression.nop();\n        }\n        return swift.Expression.dictionaryLiteral({\n            entries: Object.entries(value).map(([key, value]) => {\n                this.context.errors.scope(key);\n                try {\n                    return [\n                        this.convert({\n                            fromSymbol,\n                            typeReference: map.key,\n                            value: key,\n                            as: \"mapKey\"\n                        }),\n                        this.convert({\n                            fromSymbol,\n                            typeReference: map.value,\n                            value,\n                            as: \"mapValue\"\n                        })\n                    ];\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }),\n            multiline: true\n        });\n    }\n\n    private convertNamed({\n        fromSymbol,\n        typeId,\n        named,\n        value,\n        as\n    }: {\n        fromSymbol: swift.Symbol;\n        typeId: string;\n        named: FernIr.dynamic.NamedType;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): swift.Expression {\n        switch (named.type) {\n            case \"alias\":\n                return this.convert({\n                    fromSymbol,\n                    typeReference: named.typeReference,\n                    value,\n                    as\n                });\n            case \"discriminatedUnion\": {\n                const unionSymbol = this.context.nameRegistry.getSchemaTypeSymbolOrThrow(typeId);\n                return this.convertDiscriminatedUnion({\n                    fromSymbol,\n                    unionSymbol,\n                    discriminatedUnion: named,\n                    value\n                });\n            }\n            case \"enum\":\n                return this.convertEnum({ enum_: named, value });\n            case \"object\":\n                return this.convertObject({ fromSymbol, typeId, object_: named, value });\n            case \"undiscriminatedUnion\": {\n                const unionSymbol = this.context.nameRegistry.getSchemaTypeSymbolOrThrow(typeId);\n                return this.convertUndiscriminatedUnion({\n                    fromSymbol,\n                    unionSymbol,\n                    undiscriminatedUnion: named,\n                    value\n                });\n            }\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertNullable({\n        fromSymbol,\n        nullable,\n        value,\n        as\n    }: {\n        fromSymbol: swift.Symbol;\n        nullable: FernIr.dynamic.TypeReference.Nullable;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): swift.Expression {\n        if (value == null) {\n            return swift.Expression.enumCaseShorthand(\"null\");\n        }\n        return swift.Expression.contextualMethodCall({\n            methodName: \"value\",\n            arguments_: [\n                swift.functionArgument({\n                    value: this.convert({ fromSymbol, typeReference: nullable.value, value, as })\n                })\n            ]\n        });\n    }\n\n    private convertDiscriminatedUnion({\n        fromSymbol,\n        discriminatedUnion,\n        unionSymbol,\n        value\n    }: {\n        fromSymbol: swift.Symbol;\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        unionSymbol: swift.Symbol;\n        value: unknown;\n    }): swift.Expression {\n        const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n            discriminatedUnion: discriminatedUnion,\n            value\n        });\n        if (discriminatedUnionTypeInstance == null) {\n            return swift.Expression.nop();\n        }\n        const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n        const unionProperties = this.convertDiscriminatedUnionProperties({\n            fromSymbol,\n            discriminatedUnionTypeInstance,\n            unionVariant\n        });\n        if (unionProperties == null) {\n            return swift.Expression.nop();\n        }\n        const variants = this.context.nameRegistry.getAllDiscriminatedUnionVariantsOrThrow(unionSymbol);\n        const matchingVariant = variants.find(\n            (v) => v.discriminantWireValue === unionVariant.discriminantValue.wireValue\n        );\n        if (matchingVariant == null) {\n            return swift.Expression.nop();\n        }\n        return swift.Expression.methodCall({\n            target: swift.Expression.reference(unionSymbol.name),\n            methodName: matchingVariant.caseName,\n            arguments_: [\n                swift.functionArgument({\n                    value: swift.Expression.contextualMethodCall({\n                        methodName: \"init\",\n                        arguments_: unionProperties,\n                        multiline: true\n                    })\n                })\n            ],\n            multiline: true\n        });\n    }\n\n    private convertDiscriminatedUnionProperties({\n        fromSymbol,\n        discriminatedUnionTypeInstance,\n        unionVariant\n    }: {\n        fromSymbol: swift.Symbol;\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        unionVariant: FernIr.dynamic.SingleDiscriminatedUnionType;\n    }): swift.FunctionArgument[] | undefined {\n        const baseFields = this.getBaseFields({\n            fromSymbol,\n            discriminatedUnionTypeInstance,\n            singleDiscriminatedUnionType: unionVariant\n        });\n        switch (unionVariant.type) {\n            case \"samePropertiesAsObject\": {\n                const named = this.context.resolveNamedType({\n                    typeId: unionVariant.typeId\n                });\n                if (named == null) {\n                    return undefined;\n                }\n                const converted = this.convertNamed({\n                    fromSymbol,\n                    typeId: unionVariant.typeId,\n                    named,\n                    value: discriminatedUnionTypeInstance.value\n                });\n                if (!converted.isStructInitialization()) {\n                    this.context.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Internal error; expected union value to be a struct\"\n                    });\n                    return undefined;\n                }\n                const structInitialization = converted.asStructInitializationOrThrow();\n                return [...baseFields, ...(structInitialization.arguments_ ?? [])];\n            }\n            case \"singleProperty\": {\n                try {\n                    this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n                    const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n                    if (record == null) {\n                        return [...baseFields];\n                    }\n                    return [\n                        ...baseFields,\n                        swift.functionArgument({\n                            label: sanitizeSelf(\n                                EnumWithAssociatedValues.sanitizeToCamelCase(\n                                    unionVariant.discriminantValue.name.camelCase.unsafeName\n                                )\n                            ),\n                            value: this.convert({\n                                fromSymbol,\n                                typeReference: unionVariant.typeReference,\n                                value: record[unionVariant.discriminantValue.wireValue]\n                            })\n                        })\n                    ];\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }\n            case \"noProperties\":\n                return baseFields;\n            default:\n                assertNever(unionVariant);\n        }\n    }\n\n    private getBaseFields({\n        fromSymbol,\n        discriminatedUnionTypeInstance,\n        singleDiscriminatedUnionType\n    }: {\n        fromSymbol: swift.Symbol;\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        singleDiscriminatedUnionType: FernIr.dynamic.SingleDiscriminatedUnionType;\n    }): swift.FunctionArgument[] {\n        const properties = this.context.getExampleObjectProperties({\n            parameters: singleDiscriminatedUnionType.properties ?? [],\n            snippetObject: discriminatedUnionTypeInstance.value\n        });\n        return properties.map((property) => {\n            this.context.errors.scope(property.name.wireValue);\n            try {\n                return swift.functionArgument({\n                    label: sanitizeSelf(property.name.name.camelCase.unsafeName),\n                    value: this.convert({\n                        fromSymbol,\n                        typeReference: property.typeReference,\n                        value: property.value\n                    })\n                });\n            } finally {\n                this.context.errors.unscope();\n            }\n        });\n    }\n\n    private convertEnum({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): swift.Expression {\n        const nameAndWireValue = this.getEnumValue({ enum_, value });\n        if (nameAndWireValue == null) {\n            return swift.Expression.nop();\n        }\n        return swift.Expression.enumCaseShorthand(nameAndWireValue.name.camelCase.unsafeName);\n    }\n\n    private getEnumValue({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }) {\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected enum value string, got: ${typeof value}`\n            });\n            return undefined;\n        }\n        const enumValue = enum_.values.find((v) => v.wireValue === value);\n        if (enumValue == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `An enum value named \"${value}\" does not exist in this context`\n            });\n            return undefined;\n        }\n        return enumValue;\n    }\n\n    private convertObject({\n        fromSymbol,\n        typeId,\n        object_,\n        value\n    }: {\n        fromSymbol: swift.Symbol;\n        typeId: string;\n        object_: FernIr.dynamic.ObjectType;\n        value: unknown;\n    }): swift.Expression {\n        const symbol = this.context.nameRegistry.getSchemaTypeSymbolOrThrow(typeId);\n        return swift.Expression.structInitialization({\n            unsafeName: symbol.name,\n            arguments_: this.context\n                .getExampleObjectProperties({\n                    parameters: object_.properties,\n                    snippetObject: value\n                })\n                .map((typeInstance) => {\n                    const expression = this.convert({\n                        fromSymbol,\n                        typeReference: typeInstance.typeReference,\n                        value: typeInstance.value\n                    });\n                    if (expression.isNop()) {\n                        return null;\n                    }\n                    return swift.functionArgument({\n                        label: sanitizeSelf(typeInstance.name.name.camelCase.unsafeName),\n                        value: this.convert({\n                            fromSymbol,\n                            typeReference: typeInstance.typeReference,\n                            value: typeInstance.value\n                        })\n                    });\n                })\n                .filter((argument) => argument != null),\n            multiline: true\n        });\n    }\n\n    private convertUndiscriminatedUnion({\n        fromSymbol,\n        unionSymbol,\n        undiscriminatedUnion,\n        value\n    }: {\n        fromSymbol: swift.Symbol;\n        unionSymbol: swift.Symbol;\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): swift.Expression {\n        const result = this.findMatchingUndiscriminatedUnionType({\n            fromSymbol,\n            unionSymbol,\n            undiscriminatedUnion,\n            value\n        });\n        if (result == null) {\n            return swift.Expression.nop();\n        }\n        return result;\n    }\n\n    private findMatchingUndiscriminatedUnionType({\n        fromSymbol,\n        unionSymbol,\n        undiscriminatedUnion,\n        value\n    }: {\n        fromSymbol: swift.Symbol;\n        unionSymbol: swift.Symbol;\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n    }): swift.Expression | undefined {\n        const variants = this.context.nameRegistry.getAllUndiscriminatedUnionVariantsOrThrow(unionSymbol);\n        for (const typeReference of undiscriminatedUnion.types) {\n            try {\n                const converted = this.convert({ fromSymbol, typeReference, value });\n                const swiftType = this.context.getSwiftTypeReferenceFromScope(typeReference, fromSymbol);\n                const matchingVariant = variants.find((v) => v.swiftType.equals(swiftType));\n                if (matchingVariant == null) {\n                    continue;\n                }\n                return swift.Expression.methodCall({\n                    target: swift.Expression.reference(unionSymbol.name),\n                    methodName: matchingVariant.caseName,\n                    arguments_: [\n                        swift.functionArgument({\n                            value: converted\n                        })\n                    ],\n                    multiline: true\n                });\n            } catch (e) {\n                continue;\n            }\n        }\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value`\n        });\n        return undefined;\n    }\n\n    private convertUnknown(value: unknown): swift.Expression {\n        switch (typeof value) {\n            case \"boolean\": {\n                return swift.Expression.contextualMethodCall({\n                    methodName: \"bool\",\n                    arguments_: [\n                        swift.functionArgument({\n                            value: swift.Expression.boolLiteral(value)\n                        })\n                    ]\n                });\n            }\n            case \"string\": {\n                return swift.Expression.contextualMethodCall({\n                    methodName: \"string\",\n                    arguments_: [\n                        swift.functionArgument({\n                            value: swift.Expression.stringLiteral(value)\n                        })\n                    ]\n                });\n            }\n            case \"number\": {\n                return swift.Expression.contextualMethodCall({\n                    methodName: \"number\",\n                    arguments_: [\n                        swift.functionArgument({\n                            value: swift.Expression.numberLiteral(value)\n                        })\n                    ]\n                });\n            }\n            case \"object\": {\n                if (value === null) {\n                    return swift.Expression.enumCaseShorthand(\"null\");\n                }\n                if (Array.isArray(value)) {\n                    return swift.Expression.contextualMethodCall({\n                        methodName: \"array\",\n                        arguments_: [\n                            swift.functionArgument({\n                                value: swift.Expression.arrayLiteral({\n                                    elements: value.map((v) => this.convertUnknown(v)),\n                                    multiline: true\n                                })\n                            })\n                        ]\n                    });\n                }\n                return swift.Expression.contextualMethodCall({\n                    methodName: \"object\",\n                    arguments_: [\n                        swift.functionArgument({\n                            value: swift.Expression.dictionaryLiteral({\n                                entries: Object.entries(value).map(([key, value]) => [\n                                    swift.Expression.stringLiteral(key),\n                                    this.convertUnknown(value)\n                                ]),\n                                multiline: true\n                            })\n                        })\n                    ]\n                });\n            }\n            default:\n                throw new Error(`Internal error; unsupported unknown type: ${typeof value}`);\n        }\n    }\n\n    private convertPrimitive({\n        primitive,\n        value,\n        as\n    }: {\n        primitive: FernIr.dynamic.PrimitiveTypeV1;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): swift.Expression {\n        switch (primitive) {\n            case \"INTEGER\":\n            case \"UINT\":\n            case \"LONG\":\n            case \"UINT_64\":\n            case \"FLOAT\":\n            case \"DOUBLE\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return swift.Expression.nop();\n                }\n                return swift.Expression.numberLiteral(num);\n            }\n            case \"BOOLEAN\": {\n                const bool = this.getValueAsBoolean({ value, as });\n                if (bool == null) {\n                    return swift.Expression.nop();\n                }\n                return swift.Expression.boolLiteral(bool);\n            }\n            case \"STRING\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return swift.Expression.nop();\n                }\n                return swift.Expression.stringLiteral(str);\n            }\n            case \"DATE\": {\n                const date = this.context.getValueAsString({ value });\n                if (date == null) {\n                    return swift.Expression.nop();\n                }\n                return swift.Expression.calendarDateLiteral(date);\n            }\n            case \"DATE_TIME\": {\n                const dateTime = this.context.getValueAsString({ value });\n                if (dateTime == null) {\n                    return swift.Expression.nop();\n                }\n                const timestampMs = new Date(dateTime).getTime();\n                const timestampSec = Math.round(timestampMs / 1000);\n                const roundedDateTime = new Date(timestampSec * 1000).toISOString();\n                // Remove fractional seconds (.000Z -> Z) for Swift compatibility\n                const dateTimeWithoutFractional = roundedDateTime.replace(/\\.\\d{3}Z$/, \"Z\");\n                return swift.Expression.dateLiteral(dateTimeWithoutFractional);\n            }\n            case \"UUID\": {\n                const uuid = this.context.getValueAsString({ value });\n                if (uuid == null) {\n                    return swift.Expression.nop();\n                }\n                return swift.Expression.uuidLiteral(uuid);\n            }\n            case \"BASE_64\": {\n                const base64 = this.context.getValueAsString({ value });\n                if (base64 == null) {\n                    return swift.Expression.nop();\n                }\n                return swift.Expression.stringLiteral(base64);\n            }\n            case \"BIG_INTEGER\": {\n                const bigInt = this.context.getValueAsString({ value });\n                if (bigInt == null) {\n                    return swift.Expression.nop();\n                }\n                return swift.Expression.nop();\n            }\n            default:\n                assertNever(primitive);\n        }\n    }\n\n    private getValueAsNumber({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): number | undefined {\n        const num = as === \"mapKey\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n        return this.context.getValueAsNumber({ value: num });\n    }\n\n    private getValueAsBoolean({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): boolean | undefined {\n        const bool = (() => {\n            switch (as) {\n                case \"mapKey\": {\n                    if (value === \"true\") {\n                        return true;\n                    }\n                    if (value === \"false\") {\n                        return false;\n                    }\n                    return value;\n                }\n                case \"mapValue\":\n                case undefined:\n                    return value;\n                default:\n                    assertNever(as);\n            }\n        })();\n        return this.context.getValueAsBoolean({ value: bool });\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { sanitizeSelf, swift } from \"@fern-api/swift-codegen\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport interface FilePropertyInfo {\n    fileFields: swift.FunctionArgument[];\n    bodyPropertyFields: swift.FunctionArgument[];\n}\n\nexport class FilePropertyMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public getFilePropertyInfo({\n        fromSymbol,\n        body,\n        value\n    }: {\n        fromSymbol: swift.Symbol;\n        body: FernIr.dynamic.FileUploadRequestBody;\n        value: unknown;\n    }): FilePropertyInfo {\n        const result: FilePropertyInfo = {\n            fileFields: [],\n            bodyPropertyFields: []\n        };\n        const record = this.context.getRecord(value) ?? {};\n        for (const property of body.properties) {\n            switch (property.type) {\n                case \"file\": {\n                    const arg = swift.functionArgument({\n                        label: sanitizeSelf(property.name.camelCase.unsafeName),\n                        value: this.getSingleFileProperty({ property, record })\n                    });\n                    result.fileFields.push(arg);\n                    break;\n                }\n                case \"fileArray\": {\n                    const arg = swift.functionArgument({\n                        label: sanitizeSelf(property.name.camelCase.unsafeName),\n                        value: this.getArrayFileProperty({ property, record })\n                    });\n                    result.fileFields.push(arg);\n                    break;\n                }\n                case \"bodyProperty\": {\n                    const arg = swift.functionArgument({\n                        label: sanitizeSelf(property.name.name.camelCase.unsafeName),\n                        value: this.getBodyProperty({ fromSymbol, property, record })\n                    });\n                    result.bodyPropertyFields.push(arg);\n                    break;\n                }\n                default:\n                    assertNever(property);\n            }\n        }\n        return result;\n    }\n\n    private getSingleFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): swift.Expression {\n        const fileValue = this.context.getSingleFileValue({ property, record });\n        return swift.Expression.contextualMethodCall({\n            methodName: \"init\",\n            arguments_: [\n                swift.functionArgument({\n                    label: \"data\",\n                    value: swift.Expression.dataLiteral(fileValue ?? \"\")\n                })\n            ]\n        });\n    }\n\n    private getArrayFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): swift.Expression {\n        const fileValues = this.context.getFileArrayValues({ property, record });\n        return swift.Expression.arrayLiteral({\n            elements: (fileValues ?? []).map((value) =>\n                swift.Expression.contextualMethodCall({\n                    methodName: \"init\",\n                    arguments_: [\n                        swift.functionArgument({\n                            label: \"data\",\n                            value: swift.Expression.dataLiteral(value)\n                        })\n                    ]\n                })\n            ),\n            multiline: true\n        });\n    }\n\n    private getBodyProperty({\n        fromSymbol,\n        property,\n        record\n    }: {\n        fromSymbol: swift.Symbol;\n        property: FernIr.dynamic.NamedParameter;\n        record: Record<string, unknown>;\n    }): swift.Expression {\n        const bodyPropertyValue = record[property.name.wireValue];\n        if (bodyPropertyValue == null) {\n            return swift.Expression.nop();\n        }\n        return this.context.dynamicTypeLiteralMapper.convert({\n            fromSymbol,\n            typeReference: property.typeReference,\n            value: bodyPropertyValue\n        });\n    }\n}\n","import { noop, visitDiscriminatedUnion } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { EnumWithAssociatedValues, NameRegistry, swift } from \"@fern-api/swift-codegen\";\n\nexport function registerDiscriminatedUnionVariants({\n    parentSymbol,\n    registry,\n    namedType\n}: {\n    parentSymbol: swift.Symbol;\n    registry: NameRegistry;\n    namedType: FernIr.dynamic.NamedType;\n}) {\n    visitDiscriminatedUnion(namedType, \"type\")._visit({\n        discriminatedUnion: (utd) => {\n            const variants = Object.values(utd.types).map((singleUnionType) => {\n                const symbolName = EnumWithAssociatedValues.sanitizeToPascalCase(\n                    singleUnionType.discriminantValue.name.pascalCase.unsafeName\n                );\n                const caseName = EnumWithAssociatedValues.sanitizeToCamelCase(\n                    singleUnionType.discriminantValue.name.camelCase.unsafeName\n                );\n                return {\n                    swiftType: swift.TypeReference.symbol(symbolName),\n                    caseName: caseName,\n                    symbolName,\n                    discriminantWireValue: singleUnionType.discriminantValue.wireValue,\n                    docsContent: undefined\n                };\n            });\n            registry.registerDiscriminatedUnionVariants({ parentSymbol, variants });\n        },\n        alias: noop,\n        enum: noop,\n        object: noop,\n        undiscriminatedUnion: noop,\n        _other: noop\n    });\n}\n","import { noop, visitDiscriminatedUnion } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { NameRegistry, swift } from \"@fern-api/swift-codegen\";\nimport type { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport function registerLiteralEnums({\n    parentSymbol,\n    registry,\n    namedType,\n    context\n}: {\n    parentSymbol: swift.Symbol;\n    registry: NameRegistry;\n    namedType: FernIr.dynamic.NamedType;\n    context: DynamicSnippetsGeneratorContext;\n}) {\n    visitDiscriminatedUnion(namedType, \"type\")._visit({\n        object: (otd) => {\n            registerLiteralEnumsForObjectProperties({\n                parentSymbol,\n                registry,\n                properties: otd.properties\n            });\n        },\n        discriminatedUnion: (utd) => {\n            Object.values(utd.types).forEach((singleUnionType) => {\n                const variantSymbol = registry.getDiscriminatedUnionVariantSymbolOrThrow(\n                    parentSymbol,\n                    singleUnionType.discriminantValue.wireValue\n                );\n                visitDiscriminatedUnion(singleUnionType, \"type\")._visit({\n                    noProperties: noop,\n                    samePropertiesAsObject: (declaredTypeName) => {\n                        const variantProperties = context.getPropertiesOfDiscriminatedUnionVariant(\n                            declaredTypeName.typeId\n                        );\n                        variantProperties.forEach((property) => {\n                            registerLiteralEnumsForTypeReference({\n                                parentSymbol: variantSymbol,\n                                registry,\n                                typeReference: property.typeReference\n                            });\n                        });\n                    },\n                    singleProperty: (p) => {\n                        registerLiteralEnumsForTypeReference({\n                            parentSymbol: variantSymbol,\n                            registry,\n                            typeReference: p.typeReference\n                        });\n                    },\n                    _other: noop\n                });\n            });\n        },\n        undiscriminatedUnion: (utd) => {\n            utd.types.forEach((typeReference) => {\n                registerLiteralEnumsForTypeReference({\n                    parentSymbol,\n                    registry,\n                    typeReference\n                });\n            });\n        },\n        alias: noop,\n        enum: noop,\n        _other: noop\n    });\n}\n\nexport function registerLiteralEnumsForObjectProperties({\n    parentSymbol,\n    registry,\n    properties\n}: {\n    parentSymbol: swift.Symbol;\n    registry: NameRegistry;\n    properties: FernIr.dynamic.NamedParameter[];\n}) {\n    properties.forEach((property) => {\n        registerLiteralEnumsForTypeReference({\n            parentSymbol,\n            registry,\n            typeReference: property.typeReference\n        });\n    });\n}\n\nexport function registerLiteralEnumsForTypeReference({\n    parentSymbol,\n    registry,\n    typeReference\n}: {\n    parentSymbol: swift.Symbol;\n    registry: NameRegistry;\n    typeReference: FernIr.dynamic.TypeReference;\n}) {\n    visitDiscriminatedUnion(typeReference, \"type\")._visit({\n        list: (lt) => {\n            registerLiteralEnumsForTypeReference({\n                parentSymbol,\n                registry,\n                typeReference: lt.value\n            });\n        },\n        literal: (typeReference) => {\n            visitDiscriminatedUnion(typeReference.value, \"type\")._visit({\n                string: (literalType) => {\n                    registry.registerNestedLiteralEnumSymbol({\n                        parentSymbol,\n                        literalValue: literalType.value\n                    });\n                },\n                boolean: noop,\n                _other: noop\n            });\n        },\n        map: (typeReference) => {\n            registerLiteralEnumsForTypeReference({\n                parentSymbol,\n                registry,\n                typeReference: typeReference.key\n            });\n            registerLiteralEnumsForTypeReference({\n                parentSymbol,\n                registry,\n                typeReference: typeReference.value\n            });\n        },\n        named: noop,\n        nullable: (typeReference) => {\n            registerLiteralEnumsForTypeReference({\n                parentSymbol,\n                registry,\n                typeReference: typeReference.value\n            });\n        },\n        optional: (typeReference) => {\n            registerLiteralEnumsForTypeReference({\n                parentSymbol,\n                registry,\n                typeReference: typeReference.value\n            });\n        },\n        primitive: noop,\n        set: (typeReference) => {\n            registerLiteralEnumsForTypeReference({\n                parentSymbol,\n                registry,\n                typeReference: typeReference.value\n            });\n        },\n        unknown: noop,\n        _other: noop\n    });\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { NameRegistry, swift, UndiscriminatedUnion } from \"@fern-api/swift-codegen\";\nimport type { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport function registerUndiscriminatedUnionVariants({\n    parentSymbol,\n    registry,\n    namedType,\n    context\n}: {\n    parentSymbol: swift.Symbol;\n    registry: NameRegistry;\n    namedType: FernIr.dynamic.NamedType;\n    context: DynamicSnippetsGeneratorContext;\n}) {\n    if (namedType.type === \"undiscriminatedUnion\") {\n        const members = namedType.types.map((typeReference) => {\n            const swiftType = context.getSwiftTypeReferenceFromScope(typeReference, parentSymbol);\n            return {\n                swiftType,\n                caseName: UndiscriminatedUnion.inferCaseNameForTypeReference(parentSymbol, swiftType, registry),\n                docsContent: undefined\n            };\n        });\n        registry.registerUndiscriminatedUnionVariants({ parentSymbol, variants: members });\n    }\n}\n","import { AbstractAstNode, Options, Scope, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { swift } from \"@fern-api/swift-codegen\";\n\nimport { DynamicSnippetsGeneratorContext, FilePropertyInfo } from \"./context/index.js\";\n\nconst CLIENT_CONST_NAME = \"client\";\n\nexport class EndpointSnippetGenerator {\n    private context: DynamicSnippetsGeneratorContext;\n\n    public constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public async generateSnippet({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): Promise<string> {\n        return this.buildCodeBlock({ endpoint, snippetRequest: request, options });\n    }\n\n    public generateSnippetSync({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): string {\n        return this.buildCodeBlock({ endpoint, snippetRequest: request, options });\n    }\n\n    public async generateSnippetAst({\n        endpoint,\n        request,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }): Promise<AbstractAstNode> {\n        throw new Error(\"Unsupported\");\n    }\n\n    private buildCodeBlock({\n        endpoint,\n        snippetRequest,\n        options\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippetRequest: FernIr.dynamic.EndpointSnippetRequest;\n        options?: Options;\n    }) {\n        const fileComponents: swift.FileComponent[] = [\n            this.generateImportFoundationStatement(),\n            this.generateImportModuleStatement(),\n            swift.LineBreak.single(),\n            this.generateMainFunctionDeclarationWithEndpointSnippet({ endpoint, snippet: snippetRequest }),\n            swift.LineBreak.single(),\n            this.generateMainFunctionInvocationStatement()\n        ];\n        return fileComponents.map((c) => c.toString()).join(\"\");\n    }\n\n    private generateImportFoundationStatement() {\n        return swift.Statement.import(\"Foundation\");\n    }\n\n    private generateImportModuleStatement() {\n        const sourceModuleSymbol = this.context.nameRegistry.getRegisteredSourceModuleSymbolOrThrow();\n        return swift.Statement.import(sourceModuleSymbol.name);\n    }\n\n    private generateMainFunctionDeclarationWithEndpointSnippet({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }) {\n        return swift.Statement.functionDeclaration({\n            unsafeName: \"main\",\n            accessLevel: \"private\",\n            async: true,\n            throws: true,\n            body: swift.CodeBlock.withStatements([\n                this.generateRootClientInitializationStatement({\n                    auth: endpoint.auth,\n                    snippet: snippet\n                }),\n                swift.LineBreak.single(),\n                this.generateEndpointMethodCallStatement({ endpoint, snippet })\n            ])\n        });\n    }\n\n    public generateRootClientInitializationStatement({\n        auth,\n        snippet,\n        additionalArgs = []\n    }: {\n        auth: FernIr.dynamic.Auth | undefined;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        additionalArgs?: swift.FunctionArgument[];\n    }) {\n        const rootClientArgs: swift.FunctionArgument[] = [];\n        const baseUrlArg = this.getRootClientBaseURLArg({ snippet });\n        if (baseUrlArg != null) {\n            rootClientArgs.push(baseUrlArg);\n        }\n        const authArgs = auth ? this.getRootClientAuthArgs({ auth, snippet }) : [];\n        rootClientArgs.push(...authArgs);\n        rootClientArgs.push(...additionalArgs);\n        const nonNopRootClientArgs = rootClientArgs.filter((arg) => !arg.value.isNop());\n        const rootClientSymbol = this.context.nameRegistry.getRootClientSymbolOrThrow();\n        return swift.Statement.constantDeclaration({\n            unsafeName: CLIENT_CONST_NAME,\n            value: swift.Expression.classInitialization({\n                unsafeName: rootClientSymbol.name,\n                arguments_: nonNopRootClientArgs,\n                multiline: nonNopRootClientArgs.length > 1 ? true : undefined\n            })\n        });\n    }\n\n    private getRootClientBaseURLArg({ snippet }: { snippet: FernIr.dynamic.EndpointSnippetRequest }) {\n        if (snippet.baseURL != null && snippet.environment != null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Cannot specify both baseUrl and environment options\"\n            });\n            return null;\n        }\n        if (snippet.baseURL != null) {\n            if (this.context.ir.environments?.environments.type === \"multipleBaseUrls\") {\n                // TODO(kafkas): Not implemented yet\n                return null;\n            } else {\n                return swift.functionArgument({\n                    label: \"baseURL\",\n                    value: swift.Expression.stringLiteral(snippet.baseURL)\n                });\n            }\n        }\n        return null;\n    }\n\n    private getRootClientAuthArgs({\n        auth,\n        snippet\n    }: {\n        auth: FernIr.dynamic.Auth;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): swift.FunctionArgument[] {\n        const args: swift.FunctionArgument[] = [];\n\n        const moduleSymbol = this.context.nameRegistry.getRegisteredSourceModuleSymbolOrThrow();\n\n        const values = snippet.auth;\n\n        if (values == null) {\n            return args;\n        }\n\n        switch (auth.type) {\n            case \"basic\":\n                if (values.type !== \"basic\") {\n                    this.context.errors.add({\n                        severity: Severity.Critical,\n                        message: this.context.newAuthMismatchError({ auth, values }).message\n                    });\n                    break;\n                }\n                args.push(\n                    swift.functionArgument({\n                        label: auth.username.camelCase.unsafeName,\n                        value: swift.Expression.stringLiteral(values.username)\n                    }),\n                    swift.functionArgument({\n                        label: auth.password.camelCase.unsafeName,\n                        value: swift.Expression.stringLiteral(values.password)\n                    })\n                );\n                break;\n            case \"bearer\":\n                if (values.type !== \"bearer\") {\n                    this.context.errors.add({\n                        severity: Severity.Critical,\n                        message: this.context.newAuthMismatchError({ auth, values }).message\n                    });\n                    return args;\n                }\n                args.push(\n                    swift.functionArgument({\n                        label: auth.token.camelCase.unsafeName,\n                        value: swift.Expression.stringLiteral(values.token)\n                    })\n                );\n                break;\n            case \"header\":\n                if (values.type !== \"header\") {\n                    this.context.errors.add({\n                        severity: Severity.Critical,\n                        message: this.context.newAuthMismatchError({ auth: auth, values }).message\n                    });\n                    return args;\n                }\n                args.push(\n                    swift.functionArgument({\n                        label: auth.header.name.name.camelCase.unsafeName,\n                        value: this.context.dynamicTypeLiteralMapper.convert({\n                            fromSymbol: moduleSymbol,\n                            typeReference: auth.header.typeReference,\n                            value: values.value\n                        })\n                    })\n                );\n                break;\n            case \"oauth\":\n                if (values.type !== \"oauth\") {\n                    this.context.errors.add({\n                        severity: Severity.Critical,\n                        message: this.context.newAuthMismatchError({ auth, values }).message\n                    });\n                    return args;\n                }\n                // TODO(kafkas): Add when oauth is supported\n                return args;\n            case \"inferred\":\n                if (values.type !== \"inferred\") {\n                    this.context.errors.add({\n                        severity: Severity.Critical,\n                        message: this.context.newAuthMismatchError({ auth, values }).message\n                    });\n                    return args;\n                }\n                // TODO(kafkas): Add when inferred auth is supported\n                return args;\n            default:\n                assertNever(auth);\n        }\n        return args;\n    }\n\n    private generateEndpointMethodCallStatement({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }) {\n        return swift.Statement.discardAssignment(\n            this.generateEndpointMethodCallExpression({\n                endpoint,\n                snippet\n            })\n        );\n    }\n\n    public generateEndpointMethodCallExpression({\n        endpoint,\n        snippet,\n        additionalArguments = []\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        additionalArguments?: swift.FunctionArgument[];\n    }) {\n        const nonNopArguments = this.getEndpointMethodArguments({ endpoint, snippet }).filter(\n            (arg) => !arg.value.isNop()\n        );\n        const arguments_ = [...nonNopArguments, ...additionalArguments];\n        return swift.Expression.try(\n            swift.Expression.await(\n                swift.Expression.methodCall({\n                    target: swift.Expression.rawValue(CLIENT_CONST_NAME),\n                    methodName: this.getEndpointMethodName({ endpoint }),\n                    arguments_: arguments_,\n                    multiline: arguments_.length > 1 ? true : undefined\n                })\n            )\n        );\n    }\n\n    private generateMainFunctionInvocationStatement() {\n        return swift.Statement.expressionStatement(\n            swift.Expression.try(\n                swift.Expression.await(\n                    swift.Expression.functionCall({\n                        unsafeName: \"main\"\n                    })\n                )\n            )\n        );\n    }\n\n    private getEndpointMethodName({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n        if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n            const pathToMethod = `${endpoint.declaration.fernFilepath.allParts.map((p) => p.camelCase.unsafeName).join(\".\")}`;\n            return `${pathToMethod}.${endpoint.declaration.name.camelCase.unsafeName}`;\n        }\n        return endpoint.declaration.name.camelCase.unsafeName;\n    }\n\n    private getEndpointMethodArguments({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): swift.FunctionArgument[] {\n        switch (endpoint.request.type) {\n            case \"inlined\":\n                return this.getEndpointMethodArgsForInlinedRequest({ request: endpoint.request, snippet });\n            case \"body\":\n                return this.getEndpointMethodArgsForBodyRequest({ request: endpoint.request, snippet });\n            default:\n                assertNever(endpoint.request);\n        }\n    }\n\n    private getEndpointMethodArgsForInlinedRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): swift.FunctionArgument[] {\n        const args: swift.FunctionArgument[] = [];\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameterFields: swift.FunctionArgument[] = [];\n        if (request.pathParameters != null) {\n            pathParameterFields.push(\n                ...this.getEndpointMethodPathParameters({\n                    namedParameters: request.pathParameters,\n                    snippet\n                })\n            );\n        }\n        this.context.errors.unscope();\n        args.push(...pathParameterFields);\n\n        this.context.errors.scope(Scope.QueryParameters);\n        const queryParameterFields: swift.FunctionArgument[] = [];\n        if (request.queryParameters != null) {\n            queryParameterFields.push(\n                ...this.getEndpointMethodQueryParameters({ namedParameters: request.queryParameters, snippet })\n            );\n        }\n        this.context.errors.unscope();\n        args.push(...queryParameterFields);\n\n        this.context.errors.scope(Scope.RequestBody);\n        const filePropertyInfo = this.getFilePropertyInfo({ request, snippet });\n        this.context.errors.unscope();\n\n        if (request.body != null) {\n            args.push(\n                swift.functionArgument({\n                    label: \"request\",\n                    value: this.getInlinedRequestArg({\n                        request,\n                        snippet,\n                        filePropertyInfo\n                    })\n                })\n            );\n        }\n\n        return args;\n    }\n\n    private getEndpointMethodPathParameters({\n        namedParameters,\n        snippet\n    }: {\n        namedParameters: FernIr.dynamic.NamedParameter[];\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): swift.FunctionArgument[] {\n        const moduleSymbol = this.context.nameRegistry.getRegisteredSourceModuleSymbolOrThrow();\n        return this.context\n            .getExampleObjectProperties({\n                parameters: namedParameters,\n                snippetObject: snippet.pathParameters ?? {}\n            })\n            .map((parameter) => {\n                return swift.functionArgument({\n                    label: parameter.name.name.camelCase.unsafeName,\n                    value: this.context.dynamicTypeLiteralMapper.convert({\n                        fromSymbol: moduleSymbol,\n                        typeReference: parameter.typeReference,\n                        value: parameter.value\n                    })\n                });\n            });\n    }\n\n    private getEndpointMethodQueryParameters({\n        namedParameters,\n        snippet\n    }: {\n        namedParameters: FernIr.dynamic.NamedParameter[];\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): swift.FunctionArgument[] {\n        const moduleSymbol = this.context.nameRegistry.getRegisteredSourceModuleSymbolOrThrow();\n        return this.context\n            .getExampleObjectProperties({\n                parameters: namedParameters,\n                snippetObject: snippet.queryParameters ?? {}\n            })\n            .map((parameter) => {\n                return swift.functionArgument({\n                    label: parameter.name.name.camelCase.unsafeName,\n                    value: this.context.dynamicTypeLiteralMapper.convert({\n                        fromSymbol: moduleSymbol,\n                        typeReference: parameter.typeReference,\n                        value: parameter.value\n                    })\n                });\n            });\n    }\n\n    private getFilePropertyInfo({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): FilePropertyInfo {\n        const moduleSymbol = this.context.nameRegistry.getRegisteredSourceModuleSymbolOrThrow();\n        if (request.body == null || !this.context.isFileUploadRequestBody(request.body)) {\n            return {\n                fileFields: [],\n                bodyPropertyFields: []\n            };\n        }\n        return this.context.filePropertyMapper.getFilePropertyInfo({\n            fromSymbol: moduleSymbol,\n            body: request.body,\n            value: snippet.requestBody\n        });\n    }\n\n    private getInlinedRequestArg({\n        request,\n        snippet,\n        filePropertyInfo\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        filePropertyInfo: FilePropertyInfo;\n    }): swift.Expression {\n        this.context.errors.scope(Scope.RequestBody);\n        const requestBodyFields =\n            request.body != null\n                ? this.getInlinedRequestBodyObjectFields({\n                      body: request.body,\n                      value: snippet.requestBody,\n                      filePropertyInfo\n                  })\n                : [];\n        this.context.errors.unscope();\n\n        const nonNopArguments = requestBodyFields.filter((arg) => !arg.value.isNop());\n\n        return swift.Expression.contextualMethodCall({\n            methodName: \"init\",\n            arguments_: nonNopArguments,\n            multiline: nonNopArguments.length > 1 ? true : undefined\n        });\n    }\n\n    private getInlinedRequestBodyObjectFields({\n        body,\n        value,\n        filePropertyInfo\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        value: unknown;\n        filePropertyInfo: FilePropertyInfo;\n    }): swift.FunctionArgument[] {\n        switch (body.type) {\n            case \"fileUpload\":\n                return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n            case \"properties\":\n                return this.getInlinedRequestBodyPropertyObjectFields({ parameters: body.value, value });\n            case \"referenced\":\n                return [this.getReferencedRequestBodyPropertyObjectField({ body, value })];\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getInlinedRequestBodyPropertyObjectFields({\n        parameters,\n        value\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        value: unknown;\n    }): swift.FunctionArgument[] {\n        const moduleSymbol = this.context.nameRegistry.getRegisteredSourceModuleSymbolOrThrow();\n        return this.context\n            .getExampleObjectProperties({\n                parameters,\n                snippetObject: value\n            })\n            .map((typeInstance) => {\n                return swift.functionArgument({\n                    label: typeInstance.name.name.camelCase.unsafeName,\n                    value: this.context.dynamicTypeLiteralMapper.convert({\n                        fromSymbol: moduleSymbol,\n                        typeReference: typeInstance.typeReference,\n                        value: typeInstance.value\n                    })\n                });\n            });\n    }\n\n    private getReferencedRequestBodyPropertyObjectField({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBody;\n        value: unknown;\n    }): swift.FunctionArgument {\n        return swift.functionArgument({\n            label: body.bodyKey.camelCase.unsafeName,\n            value: this.getReferencedRequestBodyPropertyTypeLiteral({ body: body.bodyType, value })\n        });\n    }\n\n    private getReferencedRequestBodyPropertyTypeLiteral({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): swift.Expression {\n        const moduleSymbol = this.context.nameRegistry.getRegisteredSourceModuleSymbolOrThrow();\n        switch (body.type) {\n            case \"bytes\":\n                return this.getBytesBodyRequestArg({ value });\n            case \"typeReference\":\n                return this.context.dynamicTypeLiteralMapper.convert({\n                    fromSymbol: moduleSymbol,\n                    typeReference: body.value,\n                    value\n                });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getBytesBodyRequestArg({ value }: { value: unknown }): swift.Expression {\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected bytes value to be a string, got ${typeof value}`\n            });\n            return swift.Expression.dataLiteral(\"data\");\n        }\n        return swift.Expression.dataLiteral(value);\n    }\n\n    private getEndpointMethodArgsForBodyRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.BodyRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): swift.FunctionArgument[] {\n        const args: swift.FunctionArgument[] = [];\n        const moduleSymbol = this.context.nameRegistry.getRegisteredSourceModuleSymbolOrThrow();\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n        if (pathParameters.length > 0) {\n            args.push(\n                ...this.getEndpointMethodPathParameters({\n                    namedParameters: pathParameters,\n                    snippet\n                })\n            );\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        if (request.body != null) {\n            args.push(this.getEndpointMethodBodyRequestArg({ body: request.body, value: snippet.requestBody }));\n        }\n        this.context.errors.unscope();\n\n        return args;\n    }\n\n    private getEndpointMethodBodyRequestArg({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): swift.FunctionArgument {\n        const moduleSymbol = this.context.nameRegistry.getRegisteredSourceModuleSymbolOrThrow();\n        switch (body.type) {\n            case \"bytes\":\n                return swift.functionArgument({\n                    label: \"request\",\n                    value: this.getBytesBodyRequestArg({ value })\n                });\n            case \"typeReference\":\n                return swift.functionArgument({\n                    label: \"request\",\n                    value: this.context.dynamicTypeLiteralMapper.convert({\n                        fromSymbol: moduleSymbol,\n                        typeReference: body.value,\n                        value\n                    })\n                });\n            default:\n                assertNever(body);\n        }\n    }\n}\n","export const __dirname = \"/\";\n","function unimplemented(name) {\r\n  throw new Error('Node.js process ' + name + ' is not supported by JSPM core outside of Node.js');\r\n}\r\n\r\nvar queue = [];\r\nvar draining = false;\r\nvar currentQueue;\r\nvar queueIndex = -1;\r\n\r\nfunction cleanUpNextTick() {\r\n  if (!draining || !currentQueue)\r\n    return;\r\n  draining = false;\r\n  if (currentQueue.length) {\r\n    queue = currentQueue.concat(queue);\r\n  }\r\n  else {\r\n    queueIndex = -1;\r\n  }\r\n  if (queue.length)\r\n    drainQueue();\r\n}\r\n\r\nfunction drainQueue() {\r\n  if (draining)\r\n    return;\r\n  var timeout = setTimeout(cleanUpNextTick, 0);\r\n  draining = true;\r\n\r\n  var len = queue.length;\r\n  while(len) {\r\n    currentQueue = queue;\r\n    queue = [];\r\n    while (++queueIndex < len) {\r\n      if (currentQueue)\r\n        currentQueue[queueIndex].run();\r\n    }\r\n    queueIndex = -1;\r\n    len = queue.length;\r\n  }\r\n  currentQueue = null;\r\n  draining = false;\r\n  clearTimeout(timeout);\r\n}\r\n\r\nfunction nextTick (fun) {\r\n  var args = new Array(arguments.length - 1);\r\n  if (arguments.length > 1) {\r\n    for (var i = 1; i < arguments.length; i++)\r\n      args[i - 1] = arguments[i];\r\n  }\r\n  queue.push(new Item(fun, args));\r\n  if (queue.length === 1 && !draining)\r\n    setTimeout(drainQueue, 0);\r\n}\r\n// v8 likes predictible objects\r\nfunction Item(fun, array) {\r\n  this.fun = fun;\r\n  this.array = array;\r\n}\r\nItem.prototype.run = function () {\r\n  this.fun.apply(null, this.array);\r\n};\r\n\r\nvar title = 'browser';\r\nvar arch = 'x64';\r\nvar platform = 'browser';\r\nvar env = {\r\n  PATH: '/usr/bin',\r\n  LANG: typeof navigator !== 'undefined' ? navigator.language + '.UTF-8' : undefined,\r\n  PWD: '/',\r\n  HOME: '/home',\r\n  TMP: '/tmp',\r\n};\r\nvar argv = ['/usr/bin/node'];\r\nvar execArgv = [];\r\nvar version = 'v16.8.0';\r\nvar versions = {};\r\n\r\nvar emitWarning = function(message, type) {\r\n  console.warn((type ? (type + ': ') : '') + message);\r\n};\r\n\r\nvar binding = function(name) { unimplemented('binding'); };\r\n\r\nvar umask = function(mask) { return 0; };\r\n\r\nvar cwd = function() { return '/'; };\r\nvar chdir = function(dir) {};\r\n\r\nvar release = {\r\n  name: 'node',\r\n  sourceUrl: '',\r\n  headersUrl: '',\r\n  libUrl: '',\r\n};\r\n\r\nfunction noop() {}\r\n\r\nvar browser = true;\r\nvar _rawDebug = noop;\r\nvar moduleLoadList = [];\r\nfunction _linkedBinding(name) { unimplemented('_linkedBinding'); }\r\nvar domain = {};\r\nvar _exiting = false;\r\nvar config = {};\r\nfunction dlopen(name) { unimplemented('dlopen'); }\r\nfunction _getActiveRequests() { return []; }\r\nfunction _getActiveHandles() { return []; }\r\nvar reallyExit = noop;\r\nvar _kill = noop;\r\nvar cpuUsage = function() { return {}; };\r\nvar resourceUsage = cpuUsage;\r\nvar memoryUsage = cpuUsage;\r\nvar kill = noop;\r\nvar exit = noop;\r\nvar openStdin = noop;\r\nvar allowedNodeEnvironmentFlags = {};\r\nfunction assert(condition, message) {\r\n  if (!condition) throw new Error(message || 'assertion error');\r\n}\r\nvar features = {\r\n  inspector: false,\r\n  debug: false,\r\n  uv: false,\r\n  ipv6: false,\r\n  tls_alpn: false,\r\n  tls_sni: false,\r\n  tls_ocsp: false,\r\n  tls: false,\r\n  cached_builtins: true,\r\n};\r\nvar _fatalExceptions = noop;\r\nvar setUncaughtExceptionCaptureCallback = noop;\r\nfunction hasUncaughtExceptionCaptureCallback() { return false; }var _tickCallback = noop;\r\nvar _debugProcess = noop;\r\nvar _debugEnd = noop;\r\nvar _startProfilerIdleNotifier = noop;\r\nvar _stopProfilerIdleNotifier = noop;\r\nvar stdout = undefined;\r\nvar stderr = undefined;\r\nvar stdin = undefined;\r\nvar abort = noop;\r\nvar pid = 2;\r\nvar ppid = 1;\r\nvar execPath = '/bin/usr/node';\r\nvar debugPort = 9229;\r\nvar argv0 = 'node';\r\nvar _preload_modules = [];\r\nvar setSourceMapsEnabled = noop;\r\n\r\nvar _performance = {\r\n  now: typeof performance !== 'undefined' ? performance.now.bind(performance) : undefined,\r\n  timing: typeof performance !== 'undefined' ? performance.timing : undefined,\r\n};\r\nif (_performance.now === undefined) {\r\n  var nowOffset = Date.now();\r\n\r\n  if (_performance.timing && _performance.timing.navigationStart) {\r\n    nowOffset = _performance.timing.navigationStart;\r\n  }\r\n  _performance.now = () => Date.now() - nowOffset;\r\n}\r\n\r\nfunction uptime() {\r\n  return _performance.now() / 1000;\r\n}\r\n\r\nvar nanoPerSec = 1000000000;\r\nfunction hrtime(previousTimestamp) {\r\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\r\n  var clocktime = _performance.now() * 1e-3;\r\n  var seconds = Math.floor(clocktime) + baseNow;\r\n  var nanoseconds = Math.floor((clocktime % 1) * 1e9);\r\n  if (previousTimestamp) {\r\n    seconds = seconds - previousTimestamp[0];\r\n    nanoseconds = nanoseconds - previousTimestamp[1];\r\n    if (nanoseconds < 0) {\r\n      seconds--;\r\n      nanoseconds += nanoPerSec;\r\n    }\r\n  }\r\n  return [seconds, nanoseconds];\r\n}hrtime.bigint = function(time) {\r\n  var diff = hrtime(time);\r\n  if (typeof BigInt === 'undefined') {\r\n    return diff[0] * nanoPerSec + diff[1];\r\n  }\r\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\r\n};\r\n\r\nvar _maxListeners = 10;\r\nvar _events = {};\r\nvar _eventsCount = 0;\r\nfunction on () { return process }var addListener = on;\r\nvar once = on;\r\nvar off = on;\r\nvar removeListener = on;\r\nvar removeAllListeners = on;\r\nvar emit = noop;\r\nvar prependListener = on;\r\nvar prependOnceListener = on;\r\nfunction listeners (name) { return []; }\r\nvar process = {\r\n  version,\r\n  versions,\r\n  arch,\r\n  platform,\r\n  browser,\r\n  release,\r\n  _rawDebug,\r\n  moduleLoadList,\r\n  binding,\r\n  _linkedBinding,\r\n  _events,\r\n  _eventsCount,\r\n  _maxListeners,\r\n  on,\r\n  addListener,\r\n  once,\r\n  off,\r\n  removeListener,\r\n  removeAllListeners,\r\n  emit,\r\n  prependListener,\r\n  prependOnceListener,\r\n  listeners,\r\n  domain,\r\n  _exiting,\r\n  config,\r\n  dlopen,\r\n  uptime,\r\n  _getActiveRequests,\r\n  _getActiveHandles,\r\n  reallyExit,\r\n  _kill,\r\n  cpuUsage,\r\n  resourceUsage,\r\n  memoryUsage,\r\n  kill,\r\n  exit,\r\n  openStdin,\r\n  allowedNodeEnvironmentFlags,\r\n  assert,\r\n  features,\r\n  _fatalExceptions,\r\n  setUncaughtExceptionCaptureCallback,\r\n  hasUncaughtExceptionCaptureCallback,\r\n  emitWarning,\r\n  nextTick,\r\n  _tickCallback,\r\n  _debugProcess,\r\n  _debugEnd,\r\n  _startProfilerIdleNotifier,\r\n  _stopProfilerIdleNotifier,\r\n  stdout,\r\n  stdin,\r\n  stderr,\r\n  abort,\r\n  umask,\r\n  chdir,\r\n  cwd,\r\n  env,\r\n  title,\r\n  argv,\r\n  execArgv,\r\n  pid,\r\n  ppid,\r\n  execPath,\r\n  debugPort,\r\n  hrtime,\r\n  argv0,\r\n  _preload_modules,\r\n  setSourceMapsEnabled,\r\n};\n\nexport { _debugEnd, _debugProcess, _events, _eventsCount, _exiting, _fatalExceptions, _getActiveHandles, _getActiveRequests, _kill, _linkedBinding, _maxListeners, _preload_modules, _rawDebug, _startProfilerIdleNotifier, _stopProfilerIdleNotifier, _tickCallback, abort, addListener, allowedNodeEnvironmentFlags, arch, argv, argv0, assert, binding, browser, chdir, config, cpuUsage, cwd, debugPort, process as default, dlopen, domain, emit, emitWarning, env, execArgv, execPath, exit, features, hasUncaughtExceptionCaptureCallback, hrtime, kill, listeners, memoryUsage, moduleLoadList, nextTick, off, on, once, openStdin, pid, platform, ppid, prependListener, prependOnceListener, reallyExit, release, removeAllListeners, removeListener, resourceUsage, setSourceMapsEnabled, setUncaughtExceptionCaptureCallback, stderr, stdin, stdout, title, umask, uptime, version, versions };\n","export * as process from \"process\";\n","var exports$2 = {},\n  _dewExec$2 = false;\nfunction dew$2() {\n  if (_dewExec$2) return exports$2;\n  _dewExec$2 = true;\n  exports$2.byteLength = byteLength;\n  exports$2.toByteArray = toByteArray;\n  exports$2.fromByteArray = fromByteArray;\n  var lookup = [];\n  var revLookup = [];\n  var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i = 0, len = code.length; i < len; ++i) {\n    lookup[i] = code[i];\n    revLookup[code.charCodeAt(i)] = i;\n  }\n\n  // Support decoding URL-safe base64 strings, as Node.js does.\n  // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n  function getLens(b64) {\n    var len = b64.length;\n    if (len % 4 > 0) {\n      throw new Error(\"Invalid string. Length must be a multiple of 4\");\n    }\n\n    // Trim off extra bytes after placeholder bytes are found\n    // See: https://github.com/beatgammit/base64-js/issues/42\n    var validLen = b64.indexOf(\"=\");\n    if (validLen === -1) validLen = len;\n    var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n    return [validLen, placeHoldersLen];\n  }\n\n  // base64 is 4/3 + up to two characters of the original data\n  function byteLength(b64) {\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function _byteLength(b64, validLen, placeHoldersLen) {\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function toByteArray(b64) {\n    var tmp;\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n    var curByte = 0;\n\n    // if there are placeholders, only get up to the last complete 4 chars\n    var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n    var i;\n    for (i = 0; i < len; i += 4) {\n      tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n      arr[curByte++] = tmp >> 16 & 255;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 2) {\n      tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 1) {\n      tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    return arr;\n  }\n  function tripletToBase64(num) {\n    return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n  }\n  function encodeChunk(uint8, start, end) {\n    var tmp;\n    var output = [];\n    for (var i = start; i < end; i += 3) {\n      tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n      output.push(tripletToBase64(tmp));\n    }\n    return output.join(\"\");\n  }\n  function fromByteArray(uint8) {\n    var tmp;\n    var len = uint8.length;\n    var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n    var parts = [];\n    var maxChunkLength = 16383; // must be multiple of 3\n\n    // go through the array every three bytes, we'll deal with trailing stuff later\n    for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n      parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n    }\n\n    // pad the end with zeros, but make sure to not forget the extra bytes\n    if (extraBytes === 1) {\n      tmp = uint8[len - 1];\n      parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n    } else if (extraBytes === 2) {\n      tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n      parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n    }\n    return parts.join(\"\");\n  }\n  return exports$2;\n}\n\nvar exports$1 = {},\n  _dewExec$1 = false;\nfunction dew$1() {\n  if (_dewExec$1) return exports$1;\n  _dewExec$1 = true;\n  /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n  exports$1.read = function (buffer, offset, isLE, mLen, nBytes) {\n    var e, m;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i = isLE ? nBytes - 1 : 0;\n    var d = isLE ? -1 : 1;\n    var s = buffer[offset + i];\n    i += d;\n    e = s & (1 << -nBits) - 1;\n    s >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    m = e & (1 << -nBits) - 1;\n    e >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n    if (e === 0) {\n      e = 1 - eBias;\n    } else if (e === eMax) {\n      return m ? NaN : (s ? -1 : 1) * Infinity;\n    } else {\n      m = m + Math.pow(2, mLen);\n      e = e - eBias;\n    }\n    return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n  };\n  exports$1.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n    var e, m, c;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n    var i = isLE ? 0 : nBytes - 1;\n    var d = isLE ? 1 : -1;\n    var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n      m = isNaN(value) ? 1 : 0;\n      e = eMax;\n    } else {\n      e = Math.floor(Math.log(value) / Math.LN2);\n      if (value * (c = Math.pow(2, -e)) < 1) {\n        e--;\n        c *= 2;\n      }\n      if (e + eBias >= 1) {\n        value += rt / c;\n      } else {\n        value += rt * Math.pow(2, 1 - eBias);\n      }\n      if (value * c >= 2) {\n        e++;\n        c /= 2;\n      }\n      if (e + eBias >= eMax) {\n        m = 0;\n        e = eMax;\n      } else if (e + eBias >= 1) {\n        m = (value * c - 1) * Math.pow(2, mLen);\n        e = e + eBias;\n      } else {\n        m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n        e = 0;\n      }\n    }\n    for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n    e = e << mLen | m;\n    eLen += mLen;\n    for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n    buffer[offset + i - d] |= s * 128;\n  };\n  return exports$1;\n}\n\nvar exports = {},\n  _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports;\n  _dewExec = true;\n  const base64 = dew$2();\n  const ieee754 = dew$1();\n  const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" // eslint-disable-line dot-notation\n  ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n  : null;\n  exports.Buffer = Buffer;\n  exports.SlowBuffer = SlowBuffer;\n  exports.INSPECT_MAX_BYTES = 50;\n  const K_MAX_LENGTH = 2147483647;\n  exports.kMaxLength = K_MAX_LENGTH;\n\n  /**\n   * If `Buffer.TYPED_ARRAY_SUPPORT`:\n   *   === true    Use Uint8Array implementation (fastest)\n   *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n   *               implementation (most compatible, even IE6)\n   *\n   * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n   * Opera 11.6+, iOS 4.2+.\n   *\n   * We report that the browser does not support typed arrays if the are not subclassable\n   * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n   * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n   * for __proto__ and has a buggy typed array implementation.\n   */\n  Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n  if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n  }\n  function typedArraySupport() {\n    // Can typed array instances can be augmented?\n    try {\n      const arr = new Uint8Array(1);\n      const proto = {\n        foo: function () {\n          return 42;\n        }\n      };\n      Object.setPrototypeOf(proto, Uint8Array.prototype);\n      Object.setPrototypeOf(arr, proto);\n      return arr.foo() === 42;\n    } catch (e) {\n      return false;\n    }\n  }\n  Object.defineProperty(Buffer.prototype, \"parent\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.buffer;\n    }\n  });\n  Object.defineProperty(Buffer.prototype, \"offset\", {\n    enumerable: true,\n    get: function () {\n      if (!Buffer.isBuffer(this)) return undefined;\n      return this.byteOffset;\n    }\n  });\n  function createBuffer(length) {\n    if (length > K_MAX_LENGTH) {\n      throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n    // Return an augmented `Uint8Array` instance\n    const buf = new Uint8Array(length);\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n\n  /**\n   * The Buffer constructor returns instances of `Uint8Array` that have their\n   * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n   * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n   * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n   * returns a single octet.\n   *\n   * The `Uint8Array` prototype remains unmodified.\n   */\n\n  function Buffer(arg, encodingOrOffset, length) {\n    // Common case.\n    if (typeof arg === \"number\") {\n      if (typeof encodingOrOffset === \"string\") {\n        throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n      }\n      return allocUnsafe(arg);\n    }\n    return from(arg, encodingOrOffset, length);\n  }\n  Buffer.poolSize = 8192; // not used by this implementation\n\n  function from(value, encodingOrOffset, length) {\n    if (typeof value === \"string\") {\n      return fromString(value, encodingOrOffset);\n    }\n    if (ArrayBuffer.isView(value)) {\n      return fromArrayView(value);\n    }\n    if (value == null) {\n      throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n    }\n    if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof value === \"number\") {\n      throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n    }\n    const valueOf = value.valueOf && value.valueOf();\n    if (valueOf != null && valueOf !== value) {\n      return Buffer.from(valueOf, encodingOrOffset, length);\n    }\n    const b = fromObject(value);\n    if (b) return b;\n    if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n      return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n    }\n    throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n  }\n\n  /**\n   * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n   * if value is a number.\n   * Buffer.from(str[, encoding])\n   * Buffer.from(array)\n   * Buffer.from(buffer)\n   * Buffer.from(arrayBuffer[, byteOffset[, length]])\n   **/\n  Buffer.from = function (value, encodingOrOffset, length) {\n    return from(value, encodingOrOffset, length);\n  };\n\n  // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n  // https://github.com/feross/buffer/pull/148\n  Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n  Object.setPrototypeOf(Buffer, Uint8Array);\n  function assertSize(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n    } else if (size < 0) {\n      throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n    }\n  }\n  function alloc(size, fill, encoding) {\n    assertSize(size);\n    if (size <= 0) {\n      return createBuffer(size);\n    }\n    if (fill !== undefined) {\n      // Only pay attention to encoding if it's a string. This\n      // prevents accidentally sending in a number that would\n      // be interpreted as a start offset.\n      return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n    }\n    return createBuffer(size);\n  }\n\n  /**\n   * Creates a new filled Buffer instance.\n   * alloc(size[, fill[, encoding]])\n   **/\n  Buffer.alloc = function (size, fill, encoding) {\n    return alloc(size, fill, encoding);\n  };\n  function allocUnsafe(size) {\n    assertSize(size);\n    return createBuffer(size < 0 ? 0 : checked(size) | 0);\n  }\n\n  /**\n   * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n   * */\n  Buffer.allocUnsafe = function (size) {\n    return allocUnsafe(size);\n  };\n  /**\n   * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n   */\n  Buffer.allocUnsafeSlow = function (size) {\n    return allocUnsafe(size);\n  };\n  function fromString(string, encoding) {\n    if (typeof encoding !== \"string\" || encoding === \"\") {\n      encoding = \"utf8\";\n    }\n    if (!Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n    const length = byteLength(string, encoding) | 0;\n    let buf = createBuffer(length);\n    const actual = buf.write(string, encoding);\n    if (actual !== length) {\n      // Writing a hex string, for example, that contains invalid characters will\n      // cause everything after the first invalid character to be ignored. (e.g.\n      // 'abxxcd' will be treated as 'ab')\n      buf = buf.slice(0, actual);\n    }\n    return buf;\n  }\n  function fromArrayLike(array) {\n    const length = array.length < 0 ? 0 : checked(array.length) | 0;\n    const buf = createBuffer(length);\n    for (let i = 0; i < length; i += 1) {\n      buf[i] = array[i] & 255;\n    }\n    return buf;\n  }\n  function fromArrayView(arrayView) {\n    if (isInstance(arrayView, Uint8Array)) {\n      const copy = new Uint8Array(arrayView);\n      return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n    }\n    return fromArrayLike(arrayView);\n  }\n  function fromArrayBuffer(array, byteOffset, length) {\n    if (byteOffset < 0 || array.byteLength < byteOffset) {\n      throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n    }\n    if (array.byteLength < byteOffset + (length || 0)) {\n      throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n    }\n    let buf;\n    if (byteOffset === undefined && length === undefined) {\n      buf = new Uint8Array(array);\n    } else if (length === undefined) {\n      buf = new Uint8Array(array, byteOffset);\n    } else {\n      buf = new Uint8Array(array, byteOffset, length);\n    }\n\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function fromObject(obj) {\n    if (Buffer.isBuffer(obj)) {\n      const len = checked(obj.length) | 0;\n      const buf = createBuffer(len);\n      if (buf.length === 0) {\n        return buf;\n      }\n      obj.copy(buf, 0, 0, len);\n      return buf;\n    }\n    if (obj.length !== undefined) {\n      if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n        return createBuffer(0);\n      }\n      return fromArrayLike(obj);\n    }\n    if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n      return fromArrayLike(obj.data);\n    }\n  }\n  function checked(length) {\n    // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n    // length is NaN (which is otherwise coerced to zero.)\n    if (length >= K_MAX_LENGTH) {\n      throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n    }\n    return length | 0;\n  }\n  function SlowBuffer(length) {\n    if (+length != length) {\n      // eslint-disable-line eqeqeq\n      length = 0;\n    }\n    return Buffer.alloc(+length);\n  }\n  Buffer.isBuffer = function isBuffer(b) {\n    return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n  };\n  Buffer.compare = function compare(a, b) {\n    if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n    if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n    if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n      throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n    }\n    if (a === b) return 0;\n    let x = a.length;\n    let y = b.length;\n    for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n      if (a[i] !== b[i]) {\n        x = a[i];\n        y = b[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n  Buffer.isEncoding = function isEncoding(encoding) {\n    switch (String(encoding).toLowerCase()) {\n      case \"hex\":\n      case \"utf8\":\n      case \"utf-8\":\n      case \"ascii\":\n      case \"latin1\":\n      case \"binary\":\n      case \"base64\":\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return true;\n      default:\n        return false;\n    }\n  };\n  Buffer.concat = function concat(list, length) {\n    if (!Array.isArray(list)) {\n      throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n    }\n    if (list.length === 0) {\n      return Buffer.alloc(0);\n    }\n    let i;\n    if (length === undefined) {\n      length = 0;\n      for (i = 0; i < list.length; ++i) {\n        length += list[i].length;\n      }\n    }\n    const buffer = Buffer.allocUnsafe(length);\n    let pos = 0;\n    for (i = 0; i < list.length; ++i) {\n      let buf = list[i];\n      if (isInstance(buf, Uint8Array)) {\n        if (pos + buf.length > buffer.length) {\n          if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n          buf.copy(buffer, pos);\n        } else {\n          Uint8Array.prototype.set.call(buffer, buf, pos);\n        }\n      } else if (!Buffer.isBuffer(buf)) {\n        throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n      } else {\n        buf.copy(buffer, pos);\n      }\n      pos += buf.length;\n    }\n    return buffer;\n  };\n  function byteLength(string, encoding) {\n    if (Buffer.isBuffer(string)) {\n      return string.length;\n    }\n    if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n      return string.byteLength;\n    }\n    if (typeof string !== \"string\") {\n      throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n    }\n    const len = string.length;\n    const mustMatch = arguments.length > 2 && arguments[2] === true;\n    if (!mustMatch && len === 0) return 0;\n\n    // Use a for loop to avoid recursion\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return len;\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8ToBytes(string).length;\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return len * 2;\n        case \"hex\":\n          return len >>> 1;\n        case \"base64\":\n          return base64ToBytes(string).length;\n        default:\n          if (loweredCase) {\n            return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n          }\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.byteLength = byteLength;\n  function slowToString(encoding, start, end) {\n    let loweredCase = false;\n\n    // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n    // property of a typed array.\n\n    // This behaves neither like String nor Uint8Array in that we set start/end\n    // to their upper/lower bounds if the value passed is out of range.\n    // undefined is handled specially as per ECMA-262 6th Edition,\n    // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n    if (start === undefined || start < 0) {\n      start = 0;\n    }\n    // Return early if start > this.length. Done here to prevent potential uint32\n    // coercion fail below.\n    if (start > this.length) {\n      return \"\";\n    }\n    if (end === undefined || end > this.length) {\n      end = this.length;\n    }\n    if (end <= 0) {\n      return \"\";\n    }\n\n    // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n    end >>>= 0;\n    start >>>= 0;\n    if (end <= start) {\n      return \"\";\n    }\n    if (!encoding) encoding = \"utf8\";\n    while (true) {\n      switch (encoding) {\n        case \"hex\":\n          return hexSlice(this, start, end);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Slice(this, start, end);\n        case \"ascii\":\n          return asciiSlice(this, start, end);\n        case \"latin1\":\n        case \"binary\":\n          return latin1Slice(this, start, end);\n        case \"base64\":\n          return base64Slice(this, start, end);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return utf16leSlice(this, start, end);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (encoding + \"\").toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n\n  // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n  // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n  // reliably in a browserify context because there could be multiple different\n  // copies of the 'buffer' package in use. This method works even for Buffer\n  // instances that were created from another copy of the `buffer` package.\n  // See: https://github.com/feross/buffer/issues/154\n  Buffer.prototype._isBuffer = true;\n  function swap(b, n, m) {\n    const i = b[n];\n    b[n] = b[m];\n    b[m] = i;\n  }\n  Buffer.prototype.swap16 = function swap16() {\n    const len = this.length;\n    if (len % 2 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n    }\n    for (let i = 0; i < len; i += 2) {\n      swap(this, i, i + 1);\n    }\n    return this;\n  };\n  Buffer.prototype.swap32 = function swap32() {\n    const len = this.length;\n    if (len % 4 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n    }\n    for (let i = 0; i < len; i += 4) {\n      swap(this, i, i + 3);\n      swap(this, i + 1, i + 2);\n    }\n    return this;\n  };\n  Buffer.prototype.swap64 = function swap64() {\n    const len = this.length;\n    if (len % 8 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n    }\n    for (let i = 0; i < len; i += 8) {\n      swap(this, i, i + 7);\n      swap(this, i + 1, i + 6);\n      swap(this, i + 2, i + 5);\n      swap(this, i + 3, i + 4);\n    }\n    return this;\n  };\n  Buffer.prototype.toString = function toString() {\n    const length = this.length;\n    if (length === 0) return \"\";\n    if (arguments.length === 0) return utf8Slice(this, 0, length);\n    return slowToString.apply(this, arguments);\n  };\n  Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n  Buffer.prototype.equals = function equals(b) {\n    if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n    if (this === b) return true;\n    return Buffer.compare(this, b) === 0;\n  };\n  Buffer.prototype.inspect = function inspect() {\n    let str = \"\";\n    const max = exports.INSPECT_MAX_BYTES;\n    str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n    if (this.length > max) str += \" ... \";\n    return \"<Buffer \" + str + \">\";\n  };\n  if (customInspectSymbol) {\n    Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n  }\n  Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n    if (isInstance(target, Uint8Array)) {\n      target = Buffer.from(target, target.offset, target.byteLength);\n    }\n    if (!Buffer.isBuffer(target)) {\n      throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n    }\n    if (start === undefined) {\n      start = 0;\n    }\n    if (end === undefined) {\n      end = target ? target.length : 0;\n    }\n    if (thisStart === undefined) {\n      thisStart = 0;\n    }\n    if (thisEnd === undefined) {\n      thisEnd = this.length;\n    }\n    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n      throw new RangeError(\"out of range index\");\n    }\n    if (thisStart >= thisEnd && start >= end) {\n      return 0;\n    }\n    if (thisStart >= thisEnd) {\n      return -1;\n    }\n    if (start >= end) {\n      return 1;\n    }\n    start >>>= 0;\n    end >>>= 0;\n    thisStart >>>= 0;\n    thisEnd >>>= 0;\n    if (this === target) return 0;\n    let x = thisEnd - thisStart;\n    let y = end - start;\n    const len = Math.min(x, y);\n    const thisCopy = this.slice(thisStart, thisEnd);\n    const targetCopy = target.slice(start, end);\n    for (let i = 0; i < len; ++i) {\n      if (thisCopy[i] !== targetCopy[i]) {\n        x = thisCopy[i];\n        y = targetCopy[i];\n        break;\n      }\n    }\n    if (x < y) return -1;\n    if (y < x) return 1;\n    return 0;\n  };\n\n  // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n  // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n  //\n  // Arguments:\n  // - buffer - a Buffer to search\n  // - val - a string, Buffer, or number\n  // - byteOffset - an index into `buffer`; will be clamped to an int32\n  // - encoding - an optional encoding, relevant is val is a string\n  // - dir - true for indexOf, false for lastIndexOf\n  function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n    // Empty buffer means no match\n    if (buffer.length === 0) return -1;\n\n    // Normalize byteOffset\n    if (typeof byteOffset === \"string\") {\n      encoding = byteOffset;\n      byteOffset = 0;\n    } else if (byteOffset > 2147483647) {\n      byteOffset = 2147483647;\n    } else if (byteOffset < -2147483648) {\n      byteOffset = -2147483648;\n    }\n    byteOffset = +byteOffset; // Coerce to Number.\n    if (numberIsNaN(byteOffset)) {\n      // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n      byteOffset = dir ? 0 : buffer.length - 1;\n    }\n\n    // Normalize byteOffset: negative offsets start from the end of the buffer\n    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n    if (byteOffset >= buffer.length) {\n      if (dir) return -1;else byteOffset = buffer.length - 1;\n    } else if (byteOffset < 0) {\n      if (dir) byteOffset = 0;else return -1;\n    }\n\n    // Normalize val\n    if (typeof val === \"string\") {\n      val = Buffer.from(val, encoding);\n    }\n\n    // Finally, search either indexOf (if dir is true) or lastIndexOf\n    if (Buffer.isBuffer(val)) {\n      // Special case: looking for empty string/buffer always fails\n      if (val.length === 0) {\n        return -1;\n      }\n      return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n    } else if (typeof val === \"number\") {\n      val = val & 255; // Search for a byte value [0-255]\n      if (typeof Uint8Array.prototype.indexOf === \"function\") {\n        if (dir) {\n          return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n        } else {\n          return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n        }\n      }\n      return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n    }\n    throw new TypeError(\"val must be string, number or Buffer\");\n  }\n  function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n    let indexSize = 1;\n    let arrLength = arr.length;\n    let valLength = val.length;\n    if (encoding !== undefined) {\n      encoding = String(encoding).toLowerCase();\n      if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n        if (arr.length < 2 || val.length < 2) {\n          return -1;\n        }\n        indexSize = 2;\n        arrLength /= 2;\n        valLength /= 2;\n        byteOffset /= 2;\n      }\n    }\n    function read(buf, i) {\n      if (indexSize === 1) {\n        return buf[i];\n      } else {\n        return buf.readUInt16BE(i * indexSize);\n      }\n    }\n    let i;\n    if (dir) {\n      let foundIndex = -1;\n      for (i = byteOffset; i < arrLength; i++) {\n        if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n          if (foundIndex === -1) foundIndex = i;\n          if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n        } else {\n          if (foundIndex !== -1) i -= i - foundIndex;\n          foundIndex = -1;\n        }\n      }\n    } else {\n      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n      for (i = byteOffset; i >= 0; i--) {\n        let found = true;\n        for (let j = 0; j < valLength; j++) {\n          if (read(arr, i + j) !== read(val, j)) {\n            found = false;\n            break;\n          }\n        }\n        if (found) return i;\n      }\n    }\n    return -1;\n  }\n  Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n    return this.indexOf(val, byteOffset, encoding) !== -1;\n  };\n  Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n  };\n  Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n  };\n  function hexWrite(buf, string, offset, length) {\n    offset = Number(offset) || 0;\n    const remaining = buf.length - offset;\n    if (!length) {\n      length = remaining;\n    } else {\n      length = Number(length);\n      if (length > remaining) {\n        length = remaining;\n      }\n    }\n    const strLen = string.length;\n    if (length > strLen / 2) {\n      length = strLen / 2;\n    }\n    let i;\n    for (i = 0; i < length; ++i) {\n      const parsed = parseInt(string.substr(i * 2, 2), 16);\n      if (numberIsNaN(parsed)) return i;\n      buf[offset + i] = parsed;\n    }\n    return i;\n  }\n  function utf8Write(buf, string, offset, length) {\n    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  function asciiWrite(buf, string, offset, length) {\n    return blitBuffer(asciiToBytes(string), buf, offset, length);\n  }\n  function base64Write(buf, string, offset, length) {\n    return blitBuffer(base64ToBytes(string), buf, offset, length);\n  }\n  function ucs2Write(buf, string, offset, length) {\n    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  Buffer.prototype.write = function write(string, offset, length, encoding) {\n    // Buffer#write(string)\n    if (offset === undefined) {\n      encoding = \"utf8\";\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, encoding)\n    } else if (length === undefined && typeof offset === \"string\") {\n      encoding = offset;\n      length = this.length;\n      offset = 0;\n      // Buffer#write(string, offset[, length][, encoding])\n    } else if (isFinite(offset)) {\n      offset = offset >>> 0;\n      if (isFinite(length)) {\n        length = length >>> 0;\n        if (encoding === undefined) encoding = \"utf8\";\n      } else {\n        encoding = length;\n        length = undefined;\n      }\n    } else {\n      throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    }\n    const remaining = this.length - offset;\n    if (length === undefined || length > remaining) length = remaining;\n    if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n      throw new RangeError(\"Attempt to write outside buffer bounds\");\n    }\n    if (!encoding) encoding = \"utf8\";\n    let loweredCase = false;\n    for (;;) {\n      switch (encoding) {\n        case \"hex\":\n          return hexWrite(this, string, offset, length);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Write(this, string, offset, length);\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return asciiWrite(this, string, offset, length);\n        case \"base64\":\n          // Warning: maxLength not taken into account in base64Write\n          return base64Write(this, string, offset, length);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return ucs2Write(this, string, offset, length);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  };\n  Buffer.prototype.toJSON = function toJSON() {\n    return {\n      type: \"Buffer\",\n      data: Array.prototype.slice.call(this._arr || this, 0)\n    };\n  };\n  function base64Slice(buf, start, end) {\n    if (start === 0 && end === buf.length) {\n      return base64.fromByteArray(buf);\n    } else {\n      return base64.fromByteArray(buf.slice(start, end));\n    }\n  }\n  function utf8Slice(buf, start, end) {\n    end = Math.min(buf.length, end);\n    const res = [];\n    let i = start;\n    while (i < end) {\n      const firstByte = buf[i];\n      let codePoint = null;\n      let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n      if (i + bytesPerSequence <= end) {\n        let secondByte, thirdByte, fourthByte, tempCodePoint;\n        switch (bytesPerSequence) {\n          case 1:\n            if (firstByte < 128) {\n              codePoint = firstByte;\n            }\n            break;\n          case 2:\n            secondByte = buf[i + 1];\n            if ((secondByte & 192) === 128) {\n              tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n              if (tempCodePoint > 127) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 3:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n              if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 4:\n            secondByte = buf[i + 1];\n            thirdByte = buf[i + 2];\n            fourthByte = buf[i + 3];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n              if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n                codePoint = tempCodePoint;\n              }\n            }\n        }\n      }\n      if (codePoint === null) {\n        // we did not generate a valid codePoint so insert a\n        // replacement char (U+FFFD) and advance only 1 byte\n        codePoint = 65533;\n        bytesPerSequence = 1;\n      } else if (codePoint > 65535) {\n        // encode to utf16 (surrogate pair dance)\n        codePoint -= 65536;\n        res.push(codePoint >>> 10 & 1023 | 55296);\n        codePoint = 56320 | codePoint & 1023;\n      }\n      res.push(codePoint);\n      i += bytesPerSequence;\n    }\n    return decodeCodePointsArray(res);\n  }\n\n  // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n  // the lowest limit is Chrome, with 0x10000 args.\n  // We go 1 magnitude less, for safety\n  const MAX_ARGUMENTS_LENGTH = 4096;\n  function decodeCodePointsArray(codePoints) {\n    const len = codePoints.length;\n    if (len <= MAX_ARGUMENTS_LENGTH) {\n      return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n    }\n\n    // Decode in chunks to avoid \"call stack size exceeded\".\n    let res = \"\";\n    let i = 0;\n    while (i < len) {\n      res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n    }\n    return res;\n  }\n  function asciiSlice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i] & 127);\n    }\n    return ret;\n  }\n  function latin1Slice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i = start; i < end; ++i) {\n      ret += String.fromCharCode(buf[i]);\n    }\n    return ret;\n  }\n  function hexSlice(buf, start, end) {\n    const len = buf.length;\n    if (!start || start < 0) start = 0;\n    if (!end || end < 0 || end > len) end = len;\n    let out = \"\";\n    for (let i = start; i < end; ++i) {\n      out += hexSliceLookupTable[buf[i]];\n    }\n    return out;\n  }\n  function utf16leSlice(buf, start, end) {\n    const bytes = buf.slice(start, end);\n    let res = \"\";\n    // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n    for (let i = 0; i < bytes.length - 1; i += 2) {\n      res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n    }\n    return res;\n  }\n  Buffer.prototype.slice = function slice(start, end) {\n    const len = this.length;\n    start = ~~start;\n    end = end === undefined ? len : ~~end;\n    if (start < 0) {\n      start += len;\n      if (start < 0) start = 0;\n    } else if (start > len) {\n      start = len;\n    }\n    if (end < 0) {\n      end += len;\n      if (end < 0) end = 0;\n    } else if (end > len) {\n      end = len;\n    }\n    if (end < start) end = start;\n    const newBuf = this.subarray(start, end);\n    // Return an augmented `Uint8Array` instance\n    Object.setPrototypeOf(newBuf, Buffer.prototype);\n    return newBuf;\n  };\n\n  /*\n   * Need to make sure that buffer isn't trying to write out of bounds.\n   */\n  function checkOffset(offset, ext, length) {\n    if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n    if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n  }\n  Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      checkOffset(offset, byteLength, this.length);\n    }\n    let val = this[offset + --byteLength];\n    let mul = 1;\n    while (byteLength > 0 && (mul *= 256)) {\n      val += this[offset + --byteLength] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    return this[offset];\n  };\n  Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] | this[offset + 1] << 8;\n  };\n  Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] << 8 | this[offset + 1];\n  };\n  Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n  };\n  Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n  };\n  Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n    const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n    return BigInt(lo) + (BigInt(hi) << BigInt(32));\n  });\n  Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n    return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  });\n  Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i = 0;\n    while (++i < byteLength && (mul *= 256)) {\n      val += this[offset + i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength, this.length);\n    let i = byteLength;\n    let mul = 1;\n    let val = this[offset + --i];\n    while (i > 0 && (mul *= 256)) {\n      val += this[offset + --i] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n    return val;\n  };\n  Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    if (!(this[offset] & 128)) return this[offset];\n    return (255 - this[offset] + 1) * -1;\n  };\n  Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset] | this[offset + 1] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset + 1] | this[offset] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n  };\n  Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n  };\n  Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n    return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n  });\n  Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === undefined || last === undefined) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = (first << 24) +\n    // Overflow\n    this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n  });\n  Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, true, 23, 4);\n  };\n  Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, false, 23, 4);\n  };\n  Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, true, 52, 8);\n  };\n  Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, false, 52, 8);\n  };\n  function checkInt(buf, value, offset, ext, max, min) {\n    if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n    if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n  }\n  Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let mul = 1;\n    let i = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength = byteLength >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n      checkInt(this, value, offset, byteLength, maxBytes, 0);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      this[offset + i] = value / mul & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  function wrtBigUInt64LE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    return offset;\n  }\n  function wrtBigUInt64BE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset + 7] = lo;\n    lo = lo >> 8;\n    buf[offset + 6] = lo;\n    lo = lo >> 8;\n    buf[offset + 5] = lo;\n    lo = lo >> 8;\n    buf[offset + 4] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset + 3] = hi;\n    hi = hi >> 8;\n    buf[offset + 2] = hi;\n    hi = hi >> 8;\n    buf[offset + 1] = hi;\n    hi = hi >> 8;\n    buf[offset] = hi;\n    return offset + 8;\n  }\n  Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = 0;\n    let mul = 1;\n    let sub = 0;\n    this[offset] = value & 255;\n    while (++i < byteLength && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength - 1);\n      checkInt(this, value, offset, byteLength, limit - 1, -limit);\n    }\n    let i = byteLength - 1;\n    let mul = 1;\n    let sub = 0;\n    this[offset + i] = value & 255;\n    while (--i >= 0 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength;\n  };\n  Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n    if (value < 0) value = 255 + value + 1;\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n    return offset + 4;\n  };\n  Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    if (value < 0) value = 4294967295 + value + 1;\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  function checkIEEE754(buf, value, offset, ext, max, min) {\n    if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n    if (offset < 0) throw new RangeError(\"Index out of range\");\n  }\n  function writeFloat(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 4);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 23, 4);\n    return offset + 4;\n  }\n  Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, false, noAssert);\n  };\n  function writeDouble(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 8);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 52, 8);\n    return offset + 8;\n  }\n  Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, false, noAssert);\n  };\n\n  // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n  Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n    if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n    if (!start) start = 0;\n    if (!end && end !== 0) end = this.length;\n    if (targetStart >= target.length) targetStart = target.length;\n    if (!targetStart) targetStart = 0;\n    if (end > 0 && end < start) end = start;\n\n    // Copy 0 bytes; we're done\n    if (end === start) return 0;\n    if (target.length === 0 || this.length === 0) return 0;\n\n    // Fatal error conditions\n    if (targetStart < 0) {\n      throw new RangeError(\"targetStart out of bounds\");\n    }\n    if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n    if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n\n    // Are we oob?\n    if (end > this.length) end = this.length;\n    if (target.length - targetStart < end - start) {\n      end = target.length - targetStart + start;\n    }\n    const len = end - start;\n    if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n      // Use built-in when available, missing from IE11\n      this.copyWithin(targetStart, start, end);\n    } else {\n      Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n    }\n    return len;\n  };\n\n  // Usage:\n  //    buffer.fill(number[, offset[, end]])\n  //    buffer.fill(buffer[, offset[, end]])\n  //    buffer.fill(string[, offset[, end]][, encoding])\n  Buffer.prototype.fill = function fill(val, start, end, encoding) {\n    // Handle string cases:\n    if (typeof val === \"string\") {\n      if (typeof start === \"string\") {\n        encoding = start;\n        start = 0;\n        end = this.length;\n      } else if (typeof end === \"string\") {\n        encoding = end;\n        end = this.length;\n      }\n      if (encoding !== undefined && typeof encoding !== \"string\") {\n        throw new TypeError(\"encoding must be a string\");\n      }\n      if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n        throw new TypeError(\"Unknown encoding: \" + encoding);\n      }\n      if (val.length === 1) {\n        const code = val.charCodeAt(0);\n        if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n          // Fast path: If `val` fits into a single byte, use that numeric value.\n          val = code;\n        }\n      }\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n    } else if (typeof val === \"boolean\") {\n      val = Number(val);\n    }\n\n    // Invalid ranges are not set to a default, so can range check early.\n    if (start < 0 || this.length < start || this.length < end) {\n      throw new RangeError(\"Out of range index\");\n    }\n    if (end <= start) {\n      return this;\n    }\n    start = start >>> 0;\n    end = end === undefined ? this.length : end >>> 0;\n    if (!val) val = 0;\n    let i;\n    if (typeof val === \"number\") {\n      for (i = start; i < end; ++i) {\n        this[i] = val;\n      }\n    } else {\n      const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n      const len = bytes.length;\n      if (len === 0) {\n        throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n      }\n      for (i = 0; i < end - start; ++i) {\n        this[i + start] = bytes[i % len];\n      }\n    }\n    return this;\n  };\n\n  // CUSTOM ERRORS\n  // =============\n\n  // Simplified versions from Node, changed for Buffer-only usage\n  const errors = {};\n  function E(sym, getMessage, Base) {\n    errors[sym] = class NodeError extends Base {\n      constructor() {\n        super();\n        Object.defineProperty(this, \"message\", {\n          value: getMessage.apply(this, arguments),\n          writable: true,\n          configurable: true\n        });\n\n        // Add the error code to the name to include it in the stack trace.\n        this.name = `${this.name} [${sym}]`;\n        // Access the stack to generate the error message including the error code\n        // from the name.\n        this.stack; // eslint-disable-line no-unused-expressions\n        // Reset the name to the actual name.\n        delete this.name;\n      }\n      get code() {\n        return sym;\n      }\n      set code(value) {\n        Object.defineProperty(this, \"code\", {\n          configurable: true,\n          enumerable: true,\n          value,\n          writable: true\n        });\n      }\n      toString() {\n        return `${this.name} [${sym}]: ${this.message}`;\n      }\n    };\n  }\n  E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`;\n    }\n    return \"Attempt to access memory outside buffer bounds\";\n  }, RangeError);\n  E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n  }, TypeError);\n  E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`;\n    let received = input;\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input));\n    } else if (typeof input === \"bigint\") {\n      received = String(input);\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received);\n      }\n      received += \"n\";\n    }\n    msg += ` It must be ${range}. Received ${received}`;\n    return msg;\n  }, RangeError);\n  function addNumericalSeparator(val) {\n    let res = \"\";\n    let i = val.length;\n    const start = val[0] === \"-\" ? 1 : 0;\n    for (; i >= start + 4; i -= 3) {\n      res = `_${val.slice(i - 3, i)}${res}`;\n    }\n    return `${val.slice(0, i)}${res}`;\n  }\n\n  // CHECK FUNCTIONS\n  // ===============\n\n  function checkBounds(buf, offset, byteLength) {\n    validateNumber(offset, \"offset\");\n    if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n      boundsError(offset, buf.length - (byteLength + 1));\n    }\n  }\n  function checkIntBI(value, min, max, buf, offset, byteLength) {\n    if (value > max || value < min) {\n      const n = typeof min === \"bigint\" ? \"n\" : \"\";\n      let range;\n      {\n        if (min === 0 || min === BigInt(0)) {\n          range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n        } else {\n          range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n        }\n      }\n      throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n    }\n    checkBounds(buf, offset, byteLength);\n  }\n  function validateNumber(value, name) {\n    if (typeof value !== \"number\") {\n      throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n    }\n  }\n  function boundsError(value, length, type) {\n    if (Math.floor(value) !== value) {\n      validateNumber(value, type);\n      throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n    }\n    if (length < 0) {\n      throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n    }\n    throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n  }\n\n  // HELPER FUNCTIONS\n  // ================\n\n  const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n  function base64clean(str) {\n    // Node takes equal signs as end of the Base64 encoding\n    str = str.split(\"=\")[0];\n    // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n    str = str.trim().replace(INVALID_BASE64_RE, \"\");\n    // Node converts strings with length < 2 to ''\n    if (str.length < 2) return \"\";\n    // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n    while (str.length % 4 !== 0) {\n      str = str + \"=\";\n    }\n    return str;\n  }\n  function utf8ToBytes(string, units) {\n    units = units || Infinity;\n    let codePoint;\n    const length = string.length;\n    let leadSurrogate = null;\n    const bytes = [];\n    for (let i = 0; i < length; ++i) {\n      codePoint = string.charCodeAt(i);\n\n      // is surrogate component\n      if (codePoint > 55295 && codePoint < 57344) {\n        // last char was a lead\n        if (!leadSurrogate) {\n          // no lead yet\n          if (codePoint > 56319) {\n            // unexpected trail\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          } else if (i + 1 === length) {\n            // unpaired lead\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          }\n\n          // valid lead\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // 2 leads in a row\n        if (codePoint < 56320) {\n          if ((units -= 3) > -1) bytes.push(239, 191, 189);\n          leadSurrogate = codePoint;\n          continue;\n        }\n\n        // valid surrogate pair\n        codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n      } else if (leadSurrogate) {\n        // valid bmp char, but last char was a lead\n        if ((units -= 3) > -1) bytes.push(239, 191, 189);\n      }\n      leadSurrogate = null;\n\n      // encode utf8\n      if (codePoint < 128) {\n        if ((units -= 1) < 0) break;\n        bytes.push(codePoint);\n      } else if (codePoint < 2048) {\n        if ((units -= 2) < 0) break;\n        bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n      } else if (codePoint < 65536) {\n        if ((units -= 3) < 0) break;\n        bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else if (codePoint < 1114112) {\n        if ((units -= 4) < 0) break;\n        bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else {\n        throw new Error(\"Invalid code point\");\n      }\n    }\n    return bytes;\n  }\n  function asciiToBytes(str) {\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      // Node's code seems to be doing this and not & 0x7F..\n      byteArray.push(str.charCodeAt(i) & 255);\n    }\n    return byteArray;\n  }\n  function utf16leToBytes(str, units) {\n    let c, hi, lo;\n    const byteArray = [];\n    for (let i = 0; i < str.length; ++i) {\n      if ((units -= 2) < 0) break;\n      c = str.charCodeAt(i);\n      hi = c >> 8;\n      lo = c % 256;\n      byteArray.push(lo);\n      byteArray.push(hi);\n    }\n    return byteArray;\n  }\n  function base64ToBytes(str) {\n    return base64.toByteArray(base64clean(str));\n  }\n  function blitBuffer(src, dst, offset, length) {\n    let i;\n    for (i = 0; i < length; ++i) {\n      if (i + offset >= dst.length || i >= src.length) break;\n      dst[i + offset] = src[i];\n    }\n    return i;\n  }\n\n  // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n  // the `instanceof` check but they should be treated as of that type.\n  // See: https://github.com/feross/buffer/issues/166\n  function isInstance(obj, type) {\n    return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n  }\n  function numberIsNaN(obj) {\n    // For IE11 support\n    return obj !== obj; // eslint-disable-line no-self-compare\n  }\n\n  // Create lookup table for `toString('hex')`\n  // See: https://github.com/feross/buffer/issues/219\n  const hexSliceLookupTable = function () {\n    const alphabet = \"0123456789abcdef\";\n    const table = new Array(256);\n    for (let i = 0; i < 16; ++i) {\n      const i16 = i * 16;\n      for (let j = 0; j < 16; ++j) {\n        table[i16 + j] = alphabet[i] + alphabet[j];\n      }\n    }\n    return table;\n  }();\n\n  // Return not function with Error if BigInt not supported\n  function defineBigIntMethod(fn) {\n    return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n  }\n  function BufferBigIntNotDefined() {\n    throw new Error(\"BigInt not supported\");\n  }\n  return exports;\n}\n\nexport { dew as d };\n","import { d as dew } from './chunk-DtuTasat.js';\n\nconst exports = dew();\nexports['Buffer']; exports['SlowBuffer']; exports['INSPECT_MAX_BYTES']; exports['kMaxLength'];\n\nvar Buffer = exports.Buffer;\r\nvar INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;\r\nvar kMaxLength = exports.kMaxLength;\n\nexport { Buffer, INSPECT_MAX_BYTES, exports as default, kMaxLength };\n","export { Buffer } from \"buffer\";\n","export { DynamicSnippetsGenerator } from \"./DynamicSnippetsGenerator.js\";\n","import {\n    AbstractAstNode,\n    AbstractDynamicSnippetsGenerator,\n    FernGeneratorExec,\n    Options\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { EndpointSnippetGenerator } from \"./EndpointSnippetGenerator.js\";\n\nexport class DynamicSnippetsGenerator extends AbstractDynamicSnippetsGenerator<\n    DynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator\n> {\n    constructor({\n        ir,\n        config\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n    }) {\n        super(new DynamicSnippetsGeneratorContext({ ir, config }));\n    }\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        return super.generate(request, options);\n    }\n\n    public generateSync(request: FernIr.dynamic.EndpointSnippetRequest): FernIr.dynamic.EndpointSnippetResponse {\n        return super.generateSync(request);\n    }\n\n    public override async generateSnippetAst(request: FernIr.dynamic.EndpointSnippetRequest): Promise<AbstractAstNode> {\n        return super.generateSnippetAst(request);\n    }\n\n    protected createSnippetGenerator(context: DynamicSnippetsGeneratorContext): EndpointSnippetGenerator {\n        return new EndpointSnippetGenerator({ context });\n    }\n}\n","// Force cache invalidation for CI - server URL templating feature\nexport { addPrefixToString } from \"./addPrefixToString.js\";\nexport { applyOpenAPIOverlay, type Overlay, type OverlayAction } from \"./applyOpenAPIOverlay.js\";\nexport {\n    assert,\n    assertDefined,\n    assertNever,\n    assertNeverNoThrow,\n    assertNonNull,\n    assertString,\n    assertVoidNoThrow\n} from \"./assert.js\";\nexport { delay } from \"./delay/delay.js\";\nexport { withMinimumTime } from \"./delay/withMinimumTime.js\";\nexport { EMPTY_ARRAY, EMPTY_OBJECT } from \"./empty.js\";\nexport * as Examples from \"./examples.js\";\nexport { extractErrorMessage } from \"./extractErrorMessage.js\";\nexport { getDuplicates } from \"./getDuplicates.js\";\nexport { identity } from \"./identity.js\";\nexport { isNonNullish } from \"./isNonNullish.js\";\nexport { MediaType } from \"./mediaType.js\";\nexport { mergeWithOverrides } from \"./mergeWithOverrides.js\";\nexport { noop } from \"./noop.js\";\nexport {\n    haveSameNullishness,\n    nullIfNullish,\n    nullIfSomeNullish,\n    undefinedIfNullish,\n    undefinedIfSomeNullish\n} from \"./nullishUtils.js\";\nexport { type ObjectPropertiesVisitor, visitObject, visitObjectAsync } from \"./ObjectPropertiesVisitor.js\";\nexport { type Entries, entries } from \"./objects/entries.js\";\nexport { isPlainObject } from \"./objects/isPlainObject.js\";\nexport { keys } from \"./objects/keys.js\";\nexport { mapValues } from \"./objects/mapValues.js\";\nexport { type Values, values } from \"./objects/values.js\";\nexport { parseEndpointLocator } from \"./parseEndpointLocator.js\";\nexport { PLATFORM, type Platform } from \"./platform.js\";\nexport { removeSuffix } from \"./removeSuffix.js\";\nexport { replaceEnvVariables } from \"./replaceEnvVars.js\";\nexport { SymbolRegistry, type SymbolRegistryOptions } from \"./SymbolRegistry.js\";\nexport { sanitizeChangelogEntry } from \"./sanitizeChangelogEntry.js\";\nexport { SKIP_MARKER, sanitizeNullValues } from \"./sanitizeNullValues.js\";\nexport { diffSemverOrThrow, parseSemverOrThrow } from \"./semverUtils.js\";\nexport { type SetRequired } from \"./setRequired.js\";\nexport { stripLeadingSlash } from \"./stripLeadingSlash.js\";\nexport { titleCase } from \"./titleCase.js\";\nexport type { ContainerRunner, Digit, Letter, LowercaseLetter, UppercaseLetter } from \"./types.js\";\nexport { validateAgainstJsonSchema } from \"./validateAgainstJsonSchema.js\";\nexport { visitDiscriminatedUnion } from \"./visitDiscriminatedUnion.js\";\nexport type { WithoutQuestionMarks } from \"./withoutQuestionMarks.js\";\n","/**\n * @license\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"es\" --repo lodash/lodash#4.18.1 -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nexport { default as add } from './add.js';\nexport { default as after } from './after.js';\nexport { default as ary } from './ary.js';\nexport { default as assign } from './assign.js';\nexport { default as assignIn } from './assignIn.js';\nexport { default as assignInWith } from './assignInWith.js';\nexport { default as assignWith } from './assignWith.js';\nexport { default as at } from './at.js';\nexport { default as attempt } from './attempt.js';\nexport { default as before } from './before.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as bindKey } from './bindKey.js';\nexport { default as camelCase } from './camelCase.js';\nexport { default as capitalize } from './capitalize.js';\nexport { default as castArray } from './castArray.js';\nexport { default as ceil } from './ceil.js';\nexport { default as chain } from './chain.js';\nexport { default as chunk } from './chunk.js';\nexport { default as clamp } from './clamp.js';\nexport { default as clone } from './clone.js';\nexport { default as cloneDeep } from './cloneDeep.js';\nexport { default as cloneDeepWith } from './cloneDeepWith.js';\nexport { default as cloneWith } from './cloneWith.js';\nexport { default as commit } from './commit.js';\nexport { default as compact } from './compact.js';\nexport { default as concat } from './concat.js';\nexport { default as cond } from './cond.js';\nexport { default as conforms } from './conforms.js';\nexport { default as conformsTo } from './conformsTo.js';\nexport { default as constant } from './constant.js';\nexport { default as countBy } from './countBy.js';\nexport { default as create } from './create.js';\nexport { default as curry } from './curry.js';\nexport { default as curryRight } from './curryRight.js';\nexport { default as debounce } from './debounce.js';\nexport { default as deburr } from './deburr.js';\nexport { default as defaultTo } from './defaultTo.js';\nexport { default as defaults } from './defaults.js';\nexport { default as defaultsDeep } from './defaultsDeep.js';\nexport { default as defer } from './defer.js';\nexport { default as delay } from './delay.js';\nexport { default as difference } from './difference.js';\nexport { default as differenceBy } from './differenceBy.js';\nexport { default as differenceWith } from './differenceWith.js';\nexport { default as divide } from './divide.js';\nexport { default as drop } from './drop.js';\nexport { default as dropRight } from './dropRight.js';\nexport { default as dropRightWhile } from './dropRightWhile.js';\nexport { default as dropWhile } from './dropWhile.js';\nexport { default as each } from './each.js';\nexport { default as eachRight } from './eachRight.js';\nexport { default as endsWith } from './endsWith.js';\nexport { default as entries } from './entries.js';\nexport { default as entriesIn } from './entriesIn.js';\nexport { default as eq } from './eq.js';\nexport { default as escape } from './escape.js';\nexport { default as escapeRegExp } from './escapeRegExp.js';\nexport { default as every } from './every.js';\nexport { default as extend } from './extend.js';\nexport { default as extendWith } from './extendWith.js';\nexport { default as fill } from './fill.js';\nexport { default as filter } from './filter.js';\nexport { default as find } from './find.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findKey } from './findKey.js';\nexport { default as findLast } from './findLast.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as findLastKey } from './findLastKey.js';\nexport { default as first } from './first.js';\nexport { default as flatMap } from './flatMap.js';\nexport { default as flatMapDeep } from './flatMapDeep.js';\nexport { default as flatMapDepth } from './flatMapDepth.js';\nexport { default as flatten } from './flatten.js';\nexport { default as flattenDeep } from './flattenDeep.js';\nexport { default as flattenDepth } from './flattenDepth.js';\nexport { default as flip } from './flip.js';\nexport { default as floor } from './floor.js';\nexport { default as flow } from './flow.js';\nexport { default as flowRight } from './flowRight.js';\nexport { default as forEach } from './forEach.js';\nexport { default as forEachRight } from './forEachRight.js';\nexport { default as forIn } from './forIn.js';\nexport { default as forInRight } from './forInRight.js';\nexport { default as forOwn } from './forOwn.js';\nexport { default as forOwnRight } from './forOwnRight.js';\nexport { default as fromPairs } from './fromPairs.js';\nexport { default as functions } from './functions.js';\nexport { default as functionsIn } from './functionsIn.js';\nexport { default as get } from './get.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as gt } from './gt.js';\nexport { default as gte } from './gte.js';\nexport { default as has } from './has.js';\nexport { default as hasIn } from './hasIn.js';\nexport { default as head } from './head.js';\nexport { default as identity } from './identity.js';\nexport { default as inRange } from './inRange.js';\nexport { default as includes } from './includes.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as initial } from './initial.js';\nexport { default as intersection } from './intersection.js';\nexport { default as intersectionBy } from './intersectionBy.js';\nexport { default as intersectionWith } from './intersectionWith.js';\nexport { default as invert } from './invert.js';\nexport { default as invertBy } from './invertBy.js';\nexport { default as invoke } from './invoke.js';\nexport { default as invokeMap } from './invokeMap.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isArrayLike } from './isArrayLike.js';\nexport { default as isArrayLikeObject } from './isArrayLikeObject.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isBuffer } from './isBuffer.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isEqualWith } from './isEqualWith.js';\nexport { default as isError } from './isError.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isInteger } from './isInteger.js';\nexport { default as isLength } from './isLength.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isMatchWith } from './isMatchWith.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isNative } from './isNative.js';\nexport { default as isNil } from './isNil.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isObject } from './isObject.js';\nexport { default as isObjectLike } from './isObjectLike.js';\nexport { default as isPlainObject } from './isPlainObject.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isSafeInteger } from './isSafeInteger.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isString } from './isString.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isWeakSet } from './isWeakSet.js';\nexport { default as iteratee } from './iteratee.js';\nexport { default as join } from './join.js';\nexport { default as kebabCase } from './kebabCase.js';\nexport { default as keyBy } from './keyBy.js';\nexport { default as keys } from './keys.js';\nexport { default as keysIn } from './keysIn.js';\nexport { default as last } from './last.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as lodash } from './wrapperLodash.js';\nexport { default as lowerCase } from './lowerCase.js';\nexport { default as lowerFirst } from './lowerFirst.js';\nexport { default as lt } from './lt.js';\nexport { default as lte } from './lte.js';\nexport { default as map } from './map.js';\nexport { default as mapKeys } from './mapKeys.js';\nexport { default as mapValues } from './mapValues.js';\nexport { default as matches } from './matches.js';\nexport { default as matchesProperty } from './matchesProperty.js';\nexport { default as max } from './max.js';\nexport { default as maxBy } from './maxBy.js';\nexport { default as mean } from './mean.js';\nexport { default as meanBy } from './meanBy.js';\nexport { default as memoize } from './memoize.js';\nexport { default as merge } from './merge.js';\nexport { default as mergeWith } from './mergeWith.js';\nexport { default as method } from './method.js';\nexport { default as methodOf } from './methodOf.js';\nexport { default as min } from './min.js';\nexport { default as minBy } from './minBy.js';\nexport { default as mixin } from './mixin.js';\nexport { default as multiply } from './multiply.js';\nexport { default as negate } from './negate.js';\nexport { default as next } from './next.js';\nexport { default as noop } from './noop.js';\nexport { default as now } from './now.js';\nexport { default as nth } from './nth.js';\nexport { default as nthArg } from './nthArg.js';\nexport { default as omit } from './omit.js';\nexport { default as omitBy } from './omitBy.js';\nexport { default as once } from './once.js';\nexport { default as orderBy } from './orderBy.js';\nexport { default as over } from './over.js';\nexport { default as overArgs } from './overArgs.js';\nexport { default as overEvery } from './overEvery.js';\nexport { default as overSome } from './overSome.js';\nexport { default as pad } from './pad.js';\nexport { default as padEnd } from './padEnd.js';\nexport { default as padStart } from './padStart.js';\nexport { default as parseInt } from './parseInt.js';\nexport { default as partial } from './partial.js';\nexport { default as partialRight } from './partialRight.js';\nexport { default as partition } from './partition.js';\nexport { default as pick } from './pick.js';\nexport { default as pickBy } from './pickBy.js';\nexport { default as plant } from './plant.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as pull } from './pull.js';\nexport { default as pullAll } from './pullAll.js';\nexport { default as pullAllBy } from './pullAllBy.js';\nexport { default as pullAllWith } from './pullAllWith.js';\nexport { default as pullAt } from './pullAt.js';\nexport { default as random } from './random.js';\nexport { default as range } from './range.js';\nexport { default as rangeRight } from './rangeRight.js';\nexport { default as rearg } from './rearg.js';\nexport { default as reduce } from './reduce.js';\nexport { default as reduceRight } from './reduceRight.js';\nexport { default as reject } from './reject.js';\nexport { default as remove } from './remove.js';\nexport { default as repeat } from './repeat.js';\nexport { default as replace } from './replace.js';\nexport { default as rest } from './rest.js';\nexport { default as result } from './result.js';\nexport { default as reverse } from './reverse.js';\nexport { default as round } from './round.js';\nexport { default as sample } from './sample.js';\nexport { default as sampleSize } from './sampleSize.js';\nexport { default as set } from './set.js';\nexport { default as setWith } from './setWith.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as size } from './size.js';\nexport { default as slice } from './slice.js';\nexport { default as snakeCase } from './snakeCase.js';\nexport { default as some } from './some.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as sortedIndexBy } from './sortedIndexBy.js';\nexport { default as sortedIndexOf } from './sortedIndexOf.js';\nexport { default as sortedLastIndex } from './sortedLastIndex.js';\nexport { default as sortedLastIndexBy } from './sortedLastIndexBy.js';\nexport { default as sortedLastIndexOf } from './sortedLastIndexOf.js';\nexport { default as sortedUniq } from './sortedUniq.js';\nexport { default as sortedUniqBy } from './sortedUniqBy.js';\nexport { default as split } from './split.js';\nexport { default as spread } from './spread.js';\nexport { default as startCase } from './startCase.js';\nexport { default as startsWith } from './startsWith.js';\nexport { default as stubArray } from './stubArray.js';\nexport { default as stubFalse } from './stubFalse.js';\nexport { default as stubObject } from './stubObject.js';\nexport { default as stubString } from './stubString.js';\nexport { default as stubTrue } from './stubTrue.js';\nexport { default as subtract } from './subtract.js';\nexport { default as sum } from './sum.js';\nexport { default as sumBy } from './sumBy.js';\nexport { default as tail } from './tail.js';\nexport { default as take } from './take.js';\nexport { default as takeRight } from './takeRight.js';\nexport { default as takeRightWhile } from './takeRightWhile.js';\nexport { default as takeWhile } from './takeWhile.js';\nexport { default as tap } from './tap.js';\nexport { default as template } from './template.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as throttle } from './throttle.js';\nexport { default as thru } from './thru.js';\nexport { default as times } from './times.js';\nexport { default as toArray } from './toArray.js';\nexport { default as toFinite } from './toFinite.js';\nexport { default as toInteger } from './toInteger.js';\nexport { default as toIterator } from './toIterator.js';\nexport { default as toJSON } from './toJSON.js';\nexport { default as toLength } from './toLength.js';\nexport { default as toLower } from './toLower.js';\nexport { default as toNumber } from './toNumber.js';\nexport { default as toPairs } from './toPairs.js';\nexport { default as toPairsIn } from './toPairsIn.js';\nexport { default as toPath } from './toPath.js';\nexport { default as toPlainObject } from './toPlainObject.js';\nexport { default as toSafeInteger } from './toSafeInteger.js';\nexport { default as toString } from './toString.js';\nexport { default as toUpper } from './toUpper.js';\nexport { default as transform } from './transform.js';\nexport { default as trim } from './trim.js';\nexport { default as trimEnd } from './trimEnd.js';\nexport { default as trimStart } from './trimStart.js';\nexport { default as truncate } from './truncate.js';\nexport { default as unary } from './unary.js';\nexport { default as unescape } from './unescape.js';\nexport { default as union } from './union.js';\nexport { default as unionBy } from './unionBy.js';\nexport { default as unionWith } from './unionWith.js';\nexport { default as uniq } from './uniq.js';\nexport { default as uniqBy } from './uniqBy.js';\nexport { default as uniqWith } from './uniqWith.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as unset } from './unset.js';\nexport { default as unzip } from './unzip.js';\nexport { default as unzipWith } from './unzipWith.js';\nexport { default as update } from './update.js';\nexport { default as updateWith } from './updateWith.js';\nexport { default as upperCase } from './upperCase.js';\nexport { default as upperFirst } from './upperFirst.js';\nexport { default as value } from './value.js';\nexport { default as valueOf } from './valueOf.js';\nexport { default as values } from './values.js';\nexport { default as valuesIn } from './valuesIn.js';\nexport { default as without } from './without.js';\nexport { default as words } from './words.js';\nexport { default as wrap } from './wrap.js';\nexport { default as wrapperAt } from './wrapperAt.js';\nexport { default as wrapperChain } from './wrapperChain.js';\nexport { default as wrapperCommit } from './commit.js';\nexport { default as wrapperLodash } from './wrapperLodash.js';\nexport { default as wrapperNext } from './next.js';\nexport { default as wrapperPlant } from './plant.js';\nexport { default as wrapperReverse } from './wrapperReverse.js';\nexport { default as wrapperToIterator } from './toIterator.js';\nexport { default as wrapperValue } from './wrapperValue.js';\nexport { default as xor } from './xor.js';\nexport { default as xorBy } from './xorBy.js';\nexport { default as xorWith } from './xorWith.js';\nexport { default as zip } from './zip.js';\nexport { default as zipObject } from './zipObject.js';\nexport { default as zipObjectDeep } from './zipObjectDeep.js';\nexport { default as zipWith } from './zipWith.js';\nexport { default } from './lodash.default.js';\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nexport default createCaseFirst;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nexport default baseSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nexport default stringToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nexport default createCompounder;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\nexport default arrayReduce;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nexport default basePropertyOf;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nexport default words;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","/**\n * Asserts that a condition is truthy, throwing an exception with the specified message if it is falsy.\n */\nexport function assert(condition: unknown, message?: string): asserts condition {\n    if (!condition) {\n        throw new Error(message ?? \"Expected condition to be truthy but got falsy.\");\n    }\n}\n\nexport function assertDefined<T>(val: T, message?: string): asserts val is Exclude<T, undefined> {\n    if (val === undefined) {\n        throw new Error(message ?? \"Expected value to be defined but got undefined.\");\n    }\n}\n\nexport function assertNonNull<T>(val: T, message?: string): asserts val is Exclude<T, null> {\n    if (val === null) {\n        throw new Error(message ?? \"Expected value to be non-null but got null.\");\n    }\n}\n\nexport function assertString(val: unknown, message?: string): asserts val is string {\n    if (typeof val !== \"string\") {\n        throw new Error(message ?? `Expected value to be a string but got ${typeof val}.`);\n    }\n}\n\nexport function assertNever(x: never): never {\n    throw new Error(\"Unexpected value: \" + JSON.stringify(x));\n}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertNeverNoThrow(_: never): void {}\n\n// biome-ignore lint/suspicious/noEmptyBlockStatements: allow\nexport function assertVoidNoThrow(_x: void): void {}\n","export function keys<T extends object>(object: T): (keyof T)[] {\n    return Object.keys(object) as (keyof T)[];\n}\n","export { AbstractAstNode } from \"./AbstractAstNode.js\";\nexport { AbstractFormatter, NopFormatter } from \"./AbstractFormatter.js\";\nexport { AbstractWriter } from \"./AbstractWriter.js\";\nexport {\n    type Argument,\n    type Arguments,\n    hasNamedArgument,\n    isNamedArgument,\n    type NamedArgument,\n    type UnnamedArgument\n} from \"./Argument.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Ternary } from \"./Ternary.js\";\n","import { tag } from \"../utils/stacktrace.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport abstract class AbstractAstNode {\n    /**\n     * Every AST node knows how to write itself to a string.\n     */\n    public abstract write(writer: AbstractWriter): void;\n\n    public constructor() {\n        // when FERN_STACK_TRACK is defined this will track the stack trace of the current AstNode.\n        // otherwise this has absolutely no effect whatsoever.\n        tag(this);\n    }\n}\n","/**\n * Global flag that enables or disables stack tracing functionality throughout the application.\n * This is controlled via the FERN_STACK_TRACK environment variable.\n *\n * When enabled (truthy environment variable value), stack traces will be captured and processed\n * by the stacktrace functions in this module. When disabled, the stacktrace() function returns\n * an empty array for performance optimization.\n *\n * @example\n * // Enable tracing by setting the environment variable\n * // FERN_STACK_TRACK=1 <cmdline>\n */\nconst key = process.env[\"FERN_STACK_TRACK\"]?.toLowerCase() ?? \"\";\n\nexport const enableStackTracking = key !== \"\" && key !== \"0\" && key !== \"false\";\n\n/** The style of comments desired for the stack tracking comments\n *\n * can be \"single\", \"multiline\", or \"box\".\n * if not set to one of those, defaults to \"single\".\n */\nexport const trackingType = [\"single\", \"multiline\", \"box\"].includes(key) ? key : \"single\";\n\nif (enableStackTracking) {\n    // we're going to put a hard max limit on the stack trace to prevent infinite recursion and excessive stack generation\n    Error.stackTraceLimit = 50;\n}\n\n/**\n * Configuration options for controlling stack trace capture and filtering behavior.\n */\ninterface StackTraceOptions {\n    /**\n     * Maximum number of stack frames to return after filtering.\n     *\n     * Maximum may never exceed 50.\n     * @default 50\n     */\n    maxFrames?: number;\n\n    /**\n     * Number of frames to skip from the beginning of the filtered stack trace.\n     * Useful for omitting wrapper functions from the output.\n     * @default 0\n     */\n    skip?: number;\n\n    /**\n     * Array of function name substrings that trigger an early stop when encountered.\n     * When a frame's function name includes any of these strings, that frame and all\n     * subsequent frames will be excluded from the output.\n     *\n     * implicitly includes \"runInteractiveTask\"\n     * @default []\n     */\n    stopOn?: string[];\n\n    /**\n     * Array of file path substrings to filter out. Any frame whose path contains\n     * any of these strings will be excluded from the output.\n     * @default []\n     */\n    filterPaths?: string[];\n\n    /**\n     * Array of function name substrings to filter out. Any frame whose function name\n     * contains any of these strings will be excluded from the output.\n     *\n     * implicitly includes \"SdkGeneratorCLI\", \"runCli\",\"Frames.trace\",\"Frames.tag\", \"at\", \"stacktrace\"\n     * @default []\n     */\n    filterFunctions?: string[];\n\n    /**\n     * Whether to filter out Node.js internal frames (paths starting with \"node:\").\n     * @default true\n     */\n    filterNode?: boolean;\n\n    /**\n     * Whether to filter out .js files, which typically indicate non-source files\n     * without source map information.\n     * @default true\n     */\n    filterJs?: boolean;\n\n    /**\n     * A function to format the file path of the stack trace frame.\n     * @default (filename) => filename\n     */\n    formatFilename?: (filename: string) => string;\n}\n\n/**\n * Represents a single parsed stack trace frame containing function, file path, and position information.\n */\nexport interface StackTraceFrame {\n    /**\n     * The function name or context. May include special formatting like \"alias()=> { ... }\"\n     * for certain Object methods, or be an empty string for anonymous contexts.\n     */\n    fn: string;\n\n    /**\n     * The file path where this frame originated. This will typically be the full path\n     * to the source file.\n     */\n    path: string;\n\n    /**\n     * The line and column position in the format \"line:column\" (e.g., \"42:13\").\n     */\n    position: string;\n}\n\nconst globalFunctionFilters = new Set<string>([\"SdkGeneratorCLI\", \"runCli\", \"LoggerImpl\", \"Array.forEach\"]);\nconst globalFileFilters = new Set<string>([\"stacktrace\"]);\n\n/**\n * Adds a function name to the global function filters for stack traces\n * @param filter - The function name to add to the global function filters.\n */\nexport function addGlobalFunctionFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFunctionFilters.add(filter);\n    }\n}\n\n/**\n * Adds a file path to the global file filters for stack traces.\n * @param filter - The file path to add to the global file filters.\n */\nexport function addGlobalFileFilter(filter: string): void {\n    if (enableStackTracking) {\n        globalFileFilters.add(filter);\n    }\n}\n\n/**\n * Captures and parses the current call stack, returning an array of stack frames with filtering options.\n *\n * This function creates a new Error object to capture the stack trace, then parses each frame\n * to extract function names, file paths, and positions. It applies multiple filtering strategies\n * to exclude unwanted frames (e.g., Node.js internals, .js files, specific functions).\n *\n * The function only operates when `enableStackTracking` is true. If tracing is disabled, it returns\n * an empty array for performance optimization.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns Array of parsed stack trace frames, filtered and limited according to the options\n *\n * @example\n * // Capture the first 10 frames, skipping the first 2\n * const frames = stacktrace({ maxFrames: 10, skip: 2 });\n *\n * @example\n * // Capture frames until hitting \"main\" function, filter out test files\n * const frames = stacktrace({\n *   stopOn: [\"main\"],\n *   filterPaths: [\"/test/\"],\n *   filterFunctions: [\"runTests\"]\n * });\n *\n * @remarks\n * The function applies filters in the following order:\n * 1. Parses each stack frame using regex to extract function, path, line, and column\n * 2. Applies early-stop logic when encountering functions in the `stopOn` array\n * 3. Formats special function names (e.g., \"Object.alias\" → \"alias()=> { ... }\")\n * 4. Filters out:\n *    - The stacktrace function itself (\"at\", \"stacktrace\")\n *    - Functions matching `filterFunctions` (substring match)\n *    - Node.js internal frames (if `filterNode` is true)\n *    - .js files (if `filterJs` is true)\n *    - Paths matching `filterPaths` (substring match)\n * 5. Applies `skip` and `maxFrames` to limit the output\n */\nexport function stacktrace({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    formatFilename = (filename) => filename\n}: StackTraceOptions = {}): StackTraceFrame[] {\n    if (!enableStackTracking) {\n        return [];\n    }\n    filterFunctions = [...filterFunctions, ...globalFunctionFilters];\n    filterPaths = [...filterPaths, ...globalFileFilters];\n    stopOn = [...stopOn, \"runInteractiveTask\"];\n    let stop = false;\n    return (\n        (new Error().stack ?? \"\")\n            .split(\"\\n\")\n            .map((line) => {\n                const match = line.match(/at\\s+(.*)\\s+\\((.*):(\\d+):(\\d+)\\)/);\n                if (match && match.length === 5) {\n                    let [, fn, path, line, column] = match;\n                    if (!fn || !path || !line || !column) {\n                        return undefined;\n                    }\n\n                    if (stop || stopOn.some((s) => fn?.includes(s))) {\n                        stop = true;\n                        return undefined;\n                    }\n\n                    switch (fn) {\n                        case \"Object.<anonymous>\":\n                            fn = \"\";\n                            break;\n                        case \"Object.object\":\n                        case \"Object.alias\":\n                        case \"Object.union\":\n                        case \"Object.enum\":\n                        case \"Object.undiscriminatedUnion\":\n                            fn = `${fn.substring(fn.indexOf(\".\") + 1)}()=> { ... }`;\n                            break;\n                    }\n                    return {\n                        fn,\n                        path: formatFilename(path),\n                        position: `${line}:${column}`\n                    } as StackTraceFrame;\n                }\n                return undefined;\n            })\n            .filter(\n                (each) =>\n                    each &&\n                    !filterFunctions.some((f) => each.fn.includes(f)) && // substring match for filter functions\n                    !(filterNode && each.path?.startsWith(\"node:\")) && // starts with node:\n                    !(filterJs && each.path?.endsWith(\".js\")) && // ends with .js (meaning likely not a source file - no source map info)\n                    !filterPaths.some((p) => each.path.includes(p)) // substring match for filter paths\n            ) as StackTraceFrame[]\n    ).slice(skip, skip + maxFrames);\n}\n\n/**\n * Returns a formatted stack trace string at the current location for debugging purposes.\n *\n * This is a convenience function that wraps `stacktrace()` and formats the output as a\n * human-readable string. It's particularly useful for logging or debugging to understand\n * the execution flow and call hierarchy.\n *\n * The function supports both single-line and multi-line output formats. Single-line format\n * concatenates all frames into one line (useful for compact logging), while multi-line format\n * adds newlines and indentation for better readability.\n *\n * @param options - Configuration options for stack trace capture, filtering, and formatting\n * @param options.multiline - Whether to format the output with newlines and indentation.\n *                            When true, each frame is on its own line with 4-space indent.\n *                            When false (default), all frames are concatenated on one line.\n * @returns A formatted string containing the stack trace information, prefixed with \"stacktrace - \"\n *\n * @example\n * // Single-line format (compact)\n * console.log(at());\n * // Output: \"stacktrace - myFunction - /path/to/file.ts:42:13anotherFunc - /path/to/other.ts:17:5\"\n *\n * @example\n * // Multi-line format (readable)\n * console.log(at({ multiline: true, maxFrames: 5 }));\n * // Output:\n * // stacktrace -\n * //     myFunction - /path/to/file.ts:42:13\n * //     anotherFunc - /path/to/other.ts:17:5\n * //     main - /path/to/index.ts:10:1\n *\n * @example\n * // Custom filtering for specific use case\n * console.log(at({\n *   maxFrames: 10,\n *   skip: 1,\n *   filterPaths: [\"foo.ts\"],\n *   multiline: true\n * }));\n *\n * @remarks\n * This function automatically skips itself from the stack trace output by default.\n * The \"at\" function name is filtered by the underlying `stacktrace()` function.\n */\nexport function at({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [\"runInteractiveTask\"],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}): string {\n    return enableStackTracking\n        ? `${stacktrace({ maxFrames, skip, filterPaths, filterFunctions, stopOn, filterNode, filterJs, formatFilename })\n              .map((each) => `${multiline ? \"\\n    \" : \" > \"}${each.fn} - ${each.path}:${each.position}`)\n              .join(\"\")}`\n        : \"\";\n}\n\n/** This class allows the developer to attach stack trace information to objects  */\nexport class StackTraces {\n    private readonly maxFrames: number;\n    private readonly skip: number;\n    private readonly filterPaths: string[];\n    private readonly filterFunctions: string[];\n    private readonly stopOn: string[];\n    private readonly filterNode: boolean;\n    private readonly filterJs: boolean;\n    private readonly multiline: boolean;\n    private readonly formatFilename: (filename: string) => string;\n    private tracking = new WeakMap<object, Set<StackTraceFrame>>();\n\n    constructor({\n        maxFrames = 50,\n        skip = 0,\n        filterPaths = [],\n        filterFunctions = [],\n        stopOn = [],\n        filterNode = true,\n        filterJs = true,\n        multiline = false,\n        formatFilename = (filename) => filename\n    }: StackTraceOptions & { multiline?: boolean } = {}) {\n        this.maxFrames = maxFrames;\n        this.skip = skip;\n        this.filterPaths = filterPaths;\n        this.filterFunctions = filterFunctions;\n        this.stopOn = stopOn;\n        this.filterNode = filterNode;\n        this.filterJs = filterJs;\n        this.multiline = multiline;\n        this.formatFilename = formatFilename;\n    }\n\n    /**\n     * Tags the current stack trace with the given object.\n     *\n     * This can be called multiple times to add more stack trace information to the object.\n     *\n     * @param obj - The object to tag the stack trace with.\n     */\n    tag(obj: object): void {\n        const current = this.tracking.get(obj) || new Set<StackTraceFrame>();\n        stacktrace({\n            maxFrames: this.maxFrames,\n            skip: this.skip,\n            filterPaths: this.filterPaths,\n            filterFunctions: this.filterFunctions,\n            stopOn: this.stopOn,\n            filterNode: this.filterNode,\n            filterJs: this.filterJs,\n            formatFilename: this.formatFilename\n        }).forEach((frame) => current.add(frame));\n        this.tracking.set(obj, current);\n    }\n\n    /**\n     * Returns a formatted stack trace string for the given object.\n     * @param obj - The object to get the stack trace for.\n     * @returns A formatted string containing the stack trace information.\n     */\n    trace(obj: object): string {\n        if (!enableStackTracking) {\n            return \"\";\n        }\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return \"\";\n        }\n\n        return [...frames]\n            .map((each) => `${this.multiline ? \"\\n    \" : \"\"}${each.fn} - ${each.path}:${each.position}`)\n            .join(\"\");\n    }\n\n    /**\n     * Gets the stack trace frames for the given object.\n     *\n     * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n     *       Otherwise this will return an empty array.\n     *\n     * @param obj - The object to get the stack trace frames for.\n     * @returns The stack trace frames for the given object.\n     */\n    frames(obj: object): StackTraceFrame[] {\n        const frames = this.tracking.get(obj);\n        if (!frames) {\n            return [];\n        }\n        return [...frames];\n    }\n\n    /**\n     * Frees the stack trace information for the given object.\n     * @param obj - The object to free the stack trace information for.\n     */\n    free(obj: object): void {\n        this.tracking.delete(obj);\n    }\n\n    /**\n     * Clears all stack trace information.\n     */\n    clear(): void {\n        this.tracking = new WeakMap<object, Set<StackTraceFrame>>();\n    }\n}\n\nlet stackTraces: StackTraces | undefined;\n/**\n * Starts tracking the stack trace of the current object.\n *\n * Note: This will only start tracking when FERN_STACK_TRACK is defined.\n *\n * @param options - Configuration options for stack trace capture and filtering\n * @returns The stack traces object.\n */\nexport function startTracking({\n    maxFrames = 50,\n    skip = 0,\n    filterPaths = [],\n    filterFunctions = [],\n    stopOn = [],\n    filterNode = true,\n    filterJs = true,\n    multiline = false,\n    formatFilename = (filename) => filename\n}: StackTraceOptions & { multiline?: boolean } = {}) {\n    if (!enableStackTracking) {\n        return;\n    }\n    stackTraces ??= new StackTraces({\n        maxFrames,\n        skip,\n        filterPaths,\n        filterFunctions,\n        stopOn,\n        filterNode,\n        filterJs,\n        multiline,\n        formatFilename\n    });\n}\n\n/**\n * Tags the current stack trace with the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to tag the stack trace with.\n */\nexport function tag(obj: object) {\n    stackTraces?.tag(obj);\n}\n\n/**\n * Returns a formatted stack trace string for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to get the stack trace for.\n * @returns A formatted string containing the stack trace information.\n */\nexport function trace(obj: object) {\n    return stackTraces?.trace(obj) ?? \"\";\n}\n\n/**\n * Frees the stack trace information for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will do nothing whatsoever.\n *\n * @param obj - The object to free the stack trace information for.\n */\nexport function free(obj: object) {\n    stackTraces?.free(obj);\n}\n\n/**\n * Gets the stack trace frames for the given object.\n *\n * Note: This will only work when FERN_STACK_TRACK is defined and the .startTracking() function has been called.\n *       Otherwise this will return an empty array.\n *\n * @param obj - The object to get the stack trace frames for.\n * @returns The stack trace frames for the given object.\n */\nexport function getFramesForTaggedObject(obj: object): StackTraceFrame[] {\n    return stackTraces?.frames(obj) ?? [];\n}\n","export abstract class AbstractFormatter {\n    abstract format(content: string): Promise<string>;\n    abstract formatSync(content: string): string;\n    formatMultiple(contents: string[]): Promise<string[]> {\n        return Promise.all(contents.map((content) => this.format(content)));\n    }\n    formatMultipleSync(contents: string[]): string[] {\n        return contents.map((content) => this.formatSync(content));\n    }\n    dispose(): void {\n        // no-op by default; subclasses may override to clean up resources\n    }\n}\n\nexport class NopFormatter extends AbstractFormatter {\n    public async format(content: string): Promise<string> {\n        return content;\n    }\n\n    public formatSync(content: string): string {\n        return content;\n    }\n}\n","import { enableStackTracking } from \"../utils/index.js\";\nimport {\n    getFramesForTaggedObject,\n    StackTraceFrame,\n    stacktrace,\n    startTracking,\n    trackingType\n} from \"../utils/stacktrace.js\";\nimport { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { CodeBlock } from \"./CodeBlock.js\";\n\nconst TAB_SIZE = 4;\n// this will start tracking only when FERN_STACK_TRACK is defined\n// otherwise this has absolutely no effect whatsoever.\nstartTracking({ skip: 0, maxFrames: 15, filterFunctions: [\"Abstract\"] });\n\nexport class AbstractWriter {\n    /* The buffer of lines being written */\n    protected readonly lineBuffer: string[] = [];\n\n    /* The contents being written */\n    public get buffer() {\n        if (enableStackTracking && this.nodeStackFrames.length > 0) {\n            // if we're emitting tracking comments, let's ensure we get the last little bit of info.\n            // by appending a newline to the buffer before returning it.\n            // (this can be useful when using toString() to get a node's content.)\n            this.writeInternal(\"\\n\");\n        }\n        return this.lineBuffer.join(\"\\n\") + (this.lastCharacterIsNewline ? \"\\n\" : \"\");\n    }\n\n    /* Indentation level (multiple of 4) */\n    private indentLevel = 0;\n    /* Whether anything has been written to the buffer */\n    private hasWrittenAnything = false;\n    /* Whether the last character written was a semi colon */\n    private lastCharacterIsSemicolon = false;\n    /* Whether the last character written was a newline */\n    private lastCharacterIsNewline = false;\n    /* The stack traces associated with the current node */\n    private nodeStackFrames: StackTraceFrame[] = [];\n\n    /**\n     * Writes arbitrary text and nodes\n     * @param text\n     */\n    public write(...parts: (string | AbstractAstNode | undefined)[]): void {\n        for (const text of parts) {\n            if (text != null) {\n                if (typeof text === \"string\") {\n                    const textEndsInNewline = text.length > 0 && text.endsWith(\"\\n\");\n                    // temporarily remove the trailing newline, since we don't want to add the indent prefix after it\n                    const textWithoutNewline = textEndsInNewline ? text.substring(0, text.length - 1) : text;\n\n                    const indent = this.getIndentString();\n                    let indentedText = textWithoutNewline.replaceAll(\"\\n\", `\\n${indent}`);\n                    if (this.isAtStartOfLine()) {\n                        indentedText = indent + indentedText;\n                    }\n                    if (textEndsInNewline) {\n                        indentedText += \"\\n\";\n                    }\n                    this.writeInternal(indentedText);\n                } else {\n                    this.writeNode(text);\n                }\n            }\n        }\n    }\n\n    public writeStatement(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...parts);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes arbitrary text without indentation\n     * @param text\n     */\n    public writeNoIndent(text: string): void {\n        const currIndentLevel = this.indentLevel;\n        this.indentLevel = 0;\n        this.write(text);\n        this.indentLevel = currIndentLevel;\n    }\n\n    /**\n     * Writes a node\n     * @param node\n     */\n    public writeNode(node: AbstractAstNode): void {\n        if (enableStackTracking) {\n            this.nodeStackFrames.push(...getFramesForTaggedObject(node));\n        }\n        node.write(this);\n\n        // if we're using box or multiline comments, write a newline after every node so it emits a comment for the node\n        // since we're dumping a lot of data anyway, might as well be explicit about it.\n        if (enableStackTracking && trackingType !== \"single\") {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    /**\n     * Writes a node or string\n     * @param input\n     */\n    public writeNodeOrString(input: AbstractAstNode | string): void {\n        if (typeof input === \"string\") {\n            this.write(input);\n            return;\n        }\n\n        this.writeNode(input);\n    }\n\n    /**\n     * Writes a node but then suffixes with a `;` and new line\n     * @param node\n     */\n    public writeNodeStatement(node: AbstractAstNode): void {\n        this.writeNode(node);\n        this.write(\";\");\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Writes text but then suffixes with a `;`\n     * @param node\n     */\n    public writeTextStatement(text: string): void {\n        const codeBlock = new CodeBlock(text);\n        codeBlock.write(this);\n        if (!text.endsWith(\";\")) {\n            this.write(\";\");\n        }\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlow(prefix: string, statement: AbstractAstNode): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow block\n     * @param prefix\n     * @param statement\n     */\n    public controlFlowWithoutStatement(prefix: string): void {\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    /**\n     * Ends a control flow block\n     */\n    public endControlFlow(): void {\n        this.popScope();\n    }\n\n    /**\n     * Starts a control flow without a newline from the previous control flow block\n     * @param prefix\n     * @param statement\n     */\n    public contiguousControlFlow(prefix: string, statement: AbstractAstNode): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.write(\" (\", statement, \")\");\n        this.pushScope();\n    }\n\n    /**\n     * Starts a control flow alternative block\n     * @param prefix\n     */\n    public alternativeControlFlow(prefix: string): void {\n        this.dedent();\n        this.write(\"} \");\n        const codeBlock = new CodeBlock(prefix);\n        codeBlock.write(this);\n        this.pushScope();\n    }\n\n    public pushScope() {\n        this.writeLine(\"{\");\n        this.indent();\n    }\n\n    public popScope(withNewline = true) {\n        this.dedent();\n        this.writeNewLineIfLastLineNot();\n        if (withNewline) {\n            this.writeLine(\"}\");\n        } else {\n            this.write(\"}\");\n        }\n    }\n\n    /* Only writes a newline if last line in the buffer is not a newline */\n    public writeLine(...parts: (string | AbstractAstNode | undefined)[]): void {\n        this.write(...(parts.length === 0 ? [\"\"] : parts));\n        this.writeNewLineIfLastLineNot();\n    }\n\n    /* Always writes newline */\n    public newLine(): void {\n        this.writeInternal(\"\\n\");\n    }\n\n    public writeSemicolonIfLastCharacterIsNot(): void {\n        if (!this.lastCharacterIsSemicolon) {\n            this.writeInternal(\";\");\n        }\n    }\n\n    public writeNewLineIfLastLineNot(): void {\n        if (!this.lastCharacterIsNewline) {\n            this.writeInternal(\"\\n\");\n        }\n    }\n\n    public indent(): void {\n        this.indentLevel++;\n    }\n\n    public dedent(): void {\n        this.indentLevel--;\n    }\n\n    public delimit<T extends AbstractAstNode>({\n        nodes,\n        delimiter,\n        writeFunction\n    }: {\n        nodes: T[];\n        delimiter: string;\n        writeFunction: (node: T) => void;\n    }): void {\n        if (nodes.length > 0) {\n            const firstNode = nodes[0];\n            if (firstNode != null) {\n                writeFunction(firstNode);\n            }\n            for (let i = 1; i < nodes.length; i++) {\n                this.write(delimiter);\n                const node = nodes[i];\n                if (node != null) {\n                    writeFunction(node);\n                }\n            }\n        }\n    }\n\n    public toString(): string {\n        return this.buffer;\n    }\n\n    /*******************************\n     * Helper Methods\n     *******************************/\n    private writeInternal(text: string) {\n        if (text.length === 0) {\n            return;\n        }\n\n        const appendToLastLine = !this.lastCharacterIsNewline;\n\n        this.hasWrittenAnything = true;\n        this.lastCharacterIsNewline = text.endsWith(\"\\n\");\n        this.lastCharacterIsSemicolon = text.endsWith(\";\");\n\n        const lines = text.split(\"\\n\");\n\n        const appendTrackingComment =\n            enableStackTracking && !this.shouldSkipTracking(lines) && this.lastCharacterIsNewline;\n\n        if (appendToLastLine) {\n            this.lastLine = `${this.lastLine}${lines.shift() || \"\"}`;\n        }\n\n        if (this.lastCharacterIsNewline) {\n            lines.pop();\n        }\n\n        this.lineBuffer.push(...lines);\n\n        if (appendTrackingComment) {\n            this.appendTrackingComment();\n        }\n    }\n\n    /**\n     * Sets the last line of the buffer\n     * @param line - The line to set\n     */\n    protected set lastLine(line: string) {\n        if (this.lineBuffer.length > 0) {\n            this.lineBuffer[this.lineBuffer.length - 1] = line;\n        } else {\n            this.lineBuffer.push(line);\n        }\n    }\n\n    /**\n     * Gets the last line of the buffer\n     * @returns The last line of the buffer\n     */\n    protected get lastLine() {\n        return this.lineBuffer[this.lineBuffer.length - 1] || \"\";\n    }\n\n    /**\n     * Determines if the tracking comment should be skipped\n     * @param lines - The that are being written out\n     *\n     * @returns True if the tracking comment should be skipped\n     */\n    protected shouldSkipTracking(lines: string[]) {\n        return false;\n    }\n\n    /**\n     * Formats the stack trace frames into a string\n     * @param stack - The stack trace to format\n     * @param prefix - The prefix to add to the stack trace\n     * @returns The formatted stack trace\n     */\n    protected formatStack(stack: StackTraceFrame[], prefix = \"\") {\n        return stack.map((each) => `${prefix ? `(${prefix}) ` : \"\"} ${each.fn} - ${each.path} : ${each.position}`);\n    }\n\n    /**\n     * Filters out frames that start with the name of the current class\n     *\n     * This will filter out frames that start with the name of the current class that inherits from AbstractWriter.\n     *\n     * You can override this function to filter out more things.\n     * @param stack - The stack trace to filter\n     * @returns The filtered stack trace\n     */\n    protected filterStack(stack: StackTraceFrame[]) {\n        return stack.filter((each) => !each.fn.startsWith(`${this.constructor.name}.`));\n    }\n\n    /**\n     * Prepares the stack trace and calls the appropriate tracking comment formatter\n     */\n    protected appendTrackingComment() {\n        const stack = [\n            // adds the stack frames of the current function call\n            ...this.formatStack(this.filterStack(stacktrace({ maxFrames: 15, skip: 3 }))),\n\n            // adds the stack frames of any AstNodes that have been written since the last tracking comment\n            ...this.formatStack(this.filterStack(this.nodeStackFrames), \"node\")\n        ];\n        // reset the ast node stack frames\n        this.nodeStackFrames.length = 0;\n\n        switch (trackingType) {\n            case \"single\":\n                return this.singleLineTrackingComment(stack);\n\n            case \"multiline\":\n                return this.multiLineTrackingComment(stack);\n\n            case \"box\":\n                return this.boxTrackingComment(stack);\n        }\n    }\n\n    /**\n     * Creates a single line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected singleLineTrackingComment(stack: string[]) {\n        this.lastLine = `${this.lastLine} // ${stack.join(\" \")}`;\n    }\n    /**\n     * Creates a multi line tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected multiLineTrackingComment(stack: string[]) {\n        this.lineBuffer.push(...stack.map((each) => `    // ${each}`));\n    }\n    /**\n     * Creates a box tracking comment\n     *\n     * Override this to change the format of the comment.\n     *\n     * @param stack - The stack trace to add to the comment\n     */\n    protected boxTrackingComment(stack: string[]) {\n        this.lineBuffer.push(\"/*\", ...stack.map((each) => `    ${each}`), \"*/\");\n    }\n\n    private isAtStartOfLine(): boolean {\n        return this.lastCharacterIsNewline || !this.hasWrittenAnything;\n    }\n\n    private getIndentString(): string {\n        return \" \".repeat(this.indentLevel * this.getTabSize());\n    }\n\n    protected getTabSize(): number {\n        return TAB_SIZE;\n    }\n}\n","export { getPackageName } from \"./getPackageName.js\";\nexport { getSdkVersion } from \"./getSdkVersion.js\";\nexport {\n    addGlobalFileFilter,\n    addGlobalFunctionFilter,\n    at,\n    enableStackTracking,\n    getFramesForTaggedObject,\n    StackTraces,\n    stacktrace\n} from \"./stacktrace.js\";\n","import { AbstractAstNode } from \"./AbstractAstNode.js\";\nimport { AbstractWriter } from \"./AbstractWriter.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Arg<T extends AbstractWriter> = string | AbstractAstNode | ((writer: T) => void);\n}\n\nexport class CodeBlock<T extends AbstractWriter> extends AbstractAstNode {\n    private value: CodeBlock.Arg<T>;\n\n    constructor(value: CodeBlock.Arg<T>) {\n        super();\n        this.value = value;\n    }\n\n    public write(writer: T): void {\n        if (typeof this.value === \"string\") {\n            writer.write(this.value);\n            // if function\n        } else if (typeof this.value === \"function\") {\n            this.value(writer);\n        } else {\n            this.value.write(writer);\n        }\n    }\n}\n","export { AbstractDynamicSnippetsGenerator } from \"./AbstractDynamicSnippetsGenerator.js\";\nexport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nexport { type DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nexport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nexport { type Options, Style } from \"./Options.js\";\nexport { Result } from \"./Result.js\";\nexport { Scope } from \"./Scope.js\";\nexport { type TypeInstance } from \"./TypeInstance.js\";\nexport { DynamicSnippetsTestRunner } from \"./test-utils/DynamicSnippetsTestRunner.js\";\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { AbstractAstNode } from \"../ast/index.js\";\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { AbstractEndpointSnippetGenerator } from \"./AbstractEndpointSnippetGenerator.js\";\nimport { Options } from \"./Options.js\";\nimport { Result } from \"./Result.js\";\n\nexport abstract class AbstractDynamicSnippetsGenerator<\n    Context extends AbstractDynamicSnippetsGeneratorContext,\n    EndpointSnippetGenerator extends AbstractEndpointSnippetGenerator<Context>\n> {\n    public constructor(public readonly context: Context) {}\n\n    protected abstract createSnippetGenerator(context: Context): EndpointSnippetGenerator;\n\n    public async generate(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<FernIr.dynamic.EndpointSnippetResponse> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = await snippetGenerator.generateSnippet({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    public async generateSnippetAst(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): Promise<AbstractAstNode> {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        let lastError: Error | undefined = undefined;\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const ast = await snippetGenerator.generateSnippetAst({ endpoint, request, options });\n                return ast;\n            } catch (error) {\n                lastError = error as Error;\n            }\n        }\n        if (lastError != null) {\n            throw lastError;\n        }\n        throw new Error(\n            `Failed to generate snippet AST for endpoint: ${request.endpoint.method} ${request.endpoint.path}`\n        );\n    }\n\n    public generateSync(\n        request: FernIr.dynamic.EndpointSnippetRequest,\n        options: Options = {}\n    ): FernIr.dynamic.EndpointSnippetResponse {\n        const endpoints = this.resolveEndpoints({ request, options });\n        if (endpoints.length === 0) {\n            throw new Error(`No endpoints found that match \"${request.endpoint.method} ${request.endpoint.path}\"`);\n        }\n        const result = new Result();\n        for (const endpoint of endpoints) {\n            const context = this.context.clone() as Context;\n            const snippetGenerator = this.createSnippetGenerator(context);\n            try {\n                const snippet = snippetGenerator.generateSnippetSync({ endpoint, request, options });\n                if (context.errors.empty()) {\n                    return {\n                        snippet,\n                        errors: undefined\n                    };\n                }\n                result.update({ context, snippet });\n            } catch (error) {\n                if (result.err == null) {\n                    result.err = error as Error;\n                }\n            }\n        }\n        return result.getResponseOrThrow({ endpoint: request.endpoint });\n    }\n\n    /**\n     * Resolves endpoints based on the request and options.\n     * If an endpointId is specified in options, returns only that specific endpoint.\n     * Otherwise, resolves all endpoints matching the endpoint location (method + path).\n     */\n    private resolveEndpoints({\n        request,\n        options\n    }: {\n        request: FernIr.dynamic.EndpointSnippetRequest;\n        options: Options;\n    }): FernIr.dynamic.Endpoint[] {\n        if (options.endpointId != null) {\n            const endpoint = this.context.resolveEndpointById(options.endpointId);\n            if (endpoint == null) {\n                throw new Error(`No endpoint found with ID \"${options.endpointId}\"`);\n            }\n            return [endpoint];\n        }\n        return this.context.resolveEndpointLocationOrThrow(request.endpoint);\n    }\n}\n","import { FernIr } from \"@fern-api/dynamic-ir-sdk\";\n\nimport { AbstractDynamicSnippetsGeneratorContext } from \"./AbstractDynamicSnippetsGeneratorContext.js\";\nimport { ErrorReporter } from \"./ErrorReporter.js\";\n\nexport class Result {\n    public reporter: ErrorReporter | undefined;\n    public snippet: string | undefined;\n    public err: Error | undefined;\n\n    constructor() {\n        this.snippet = undefined;\n        this.reporter = undefined;\n        this.err = undefined;\n    }\n\n    public update({ context, snippet }: { context: AbstractDynamicSnippetsGeneratorContext; snippet: string }): void {\n        if (this.shouldUpdate({ snippet, reporter: context.errors })) {\n            this.reporter = context.errors.clone();\n            this.snippet = snippet;\n        }\n    }\n\n    public getResponseOrThrow({\n        endpoint\n    }: {\n        endpoint: FernIr.dynamic.EndpointLocation;\n    }): FernIr.dynamic.EndpointSnippetResponse {\n        if (this.snippet != null && this.reporter != null) {\n            return {\n                snippet: this.snippet,\n                errors: this.reporter.toDynamicSnippetErrors()\n            };\n        }\n        throw this.err ?? new Error(`Failed to generate snippet for endpoint \"${endpoint.method} ${endpoint.path}\"`);\n    }\n\n    private shouldUpdate({ snippet, reporter }: { snippet: string; reporter: ErrorReporter }): boolean {\n        if (this.reporter == null || (this.reporter.size() > 0 && reporter.size() === 0)) {\n            return true;\n        }\n        return snippet.length > (this.snippet?.length ?? 0);\n    }\n}\n","import { assertNever, keys } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { HttpEndpointReferenceParser } from \"@fern-api/fern-definition-schema\";\n\nimport { FernGeneratorExec } from \"../GeneratorNotificationService.js\";\nimport { DiscriminatedUnionTypeInstance } from \"./DiscriminatedUnionTypeInstance.js\";\nimport { ErrorReporter, Severity } from \"./ErrorReporter.js\";\nimport { Options } from \"./Options.js\";\nimport { TypeInstance } from \"./TypeInstance.js\";\n\nexport abstract class AbstractDynamicSnippetsGeneratorContext {\n    public config: FernGeneratorExec.GeneratorConfig;\n    public options: Options;\n    public errors: ErrorReporter;\n\n    private _ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    private httpEndpointReferenceParser: HttpEndpointReferenceParser;\n\n    constructor({\n        ir,\n        config,\n        options = {}\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n        options?: Options;\n    }) {\n        this._ir = ir;\n        this.config = config;\n        this.options = options;\n        this.errors = new ErrorReporter();\n        this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n    }\n\n    public abstract clone(): AbstractDynamicSnippetsGeneratorContext;\n\n    public associateQueryParametersByWireValue({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    throw this.newParameterNotRecognizedError(key);\n                }\n                // If this query parameter supports allow-multiple, the user-provided values\n                // must be wrapped in an array.\n                const typeInstanceValue =\n                    this.isListTypeReference(parameter.typeReference) && !Array.isArray(value) ? [value] : value;\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value: typeInstanceValue\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    public associateByWireValueOrDefault({\n        parameters,\n        values\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            this.errors.scope(parameter.name.wireValue);\n            try {\n                let value = values[parameter.name.wireValue];\n\n                if (value == null) {\n                    if (parameter.typeReference.type === \"primitive\" && parameter.typeReference.value === \"STRING\") {\n                        // synthesize a parameter value for string parameters that are missing data\n                        value = `<${parameter.name.wireValue}>`;\n                    } else {\n                        this.errors.add({\n                            severity: Severity.Critical,\n                            message: this.newParameterNotRecognizedError(parameter.name.wireValue).message\n                        });\n                        continue;\n                    }\n                }\n\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n\n        return instances;\n    }\n\n    public associateByWireValue({\n        parameters,\n        values,\n        ignoreMissingParameters\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n        ignoreMissingParameters?: boolean;\n    }): TypeInstance[] {\n        const instances: TypeInstance[] = [];\n        for (const [key, value] of Object.entries(values)) {\n            if (value === undefined) {\n                continue;\n            }\n            this.errors.scope(key);\n            try {\n                const parameter = parameters.find((param) => param.name.wireValue === key);\n                if (parameter == null) {\n                    if (ignoreMissingParameters) {\n                        // Required for request payloads that include more information than\n                        // just the target parameters (e.g. union base properties).\n                        continue;\n                    }\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: this.newParameterNotRecognizedError(key).message\n                    });\n                    continue;\n                }\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            } finally {\n                this.errors.unscope();\n            }\n        }\n        return instances;\n    }\n\n    /**\n     * Similar to `associateByWireValue` but it builds TypeInstance objects by iterating over schema parameters rather\n     * than snippet values. Skips non-nullable parameters that are missing from the snippet object.\n     */\n    public getExampleObjectProperties({\n        parameters,\n        snippetObject\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        snippetObject: unknown;\n    }): TypeInstance[] {\n        const objectRecord = (\n            typeof snippetObject === \"object\" && snippetObject !== null && !Array.isArray(snippetObject)\n                ? snippetObject\n                : {}\n        ) as Record<string, unknown>;\n        const instances: TypeInstance[] = [];\n        for (const parameter of parameters) {\n            const value = objectRecord[parameter.name.wireValue];\n            if (value == null) {\n                if (parameter.typeReference.type === \"nullable\") {\n                    instances.push({\n                        name: parameter.name,\n                        typeReference: parameter.typeReference,\n                        value: null\n                    });\n                }\n            } else {\n                instances.push({\n                    name: parameter.name,\n                    typeReference: parameter.typeReference,\n                    value\n                });\n            }\n        }\n        return instances;\n    }\n\n    public getSingleFileValue({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): string | undefined {\n        const fileValue = record[property.wireValue];\n        if (fileValue == null) {\n            return undefined;\n        }\n        if (typeof fileValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file value to be a string, got ${typeof fileValue}`\n            });\n            return undefined;\n        }\n        return fileValue;\n    }\n\n    public getFileArrayValues({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): string[] | undefined {\n        const fileArrayValue = record[property.wireValue];\n        if (fileArrayValue == null) {\n            return undefined;\n        }\n        if (!Array.isArray(fileArrayValue)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected file array value to be an array of strings, got ${typeof fileArrayValue}`\n            });\n            return undefined;\n        }\n        const stringValues: string[] = [];\n        for (const value of fileArrayValue) {\n            if (typeof value !== \"string\") {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message: `Expected file array value to be an array of strings, got ${typeof value}`\n                });\n                return undefined;\n            }\n            stringValues.push(value);\n        }\n        return stringValues;\n    }\n\n    public getRecord(value: unknown): Record<string, unknown> | undefined {\n        if (typeof value !== \"object\" || Array.isArray(value)) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object with key, value pairs but got: ${\n                    Array.isArray(value) ? \"array\" : typeof value\n                }`\n            });\n            return undefined;\n        }\n        if (value == null) {\n            return {};\n        }\n        return value as Record<string, unknown>;\n    }\n\n    public resolveNamedType({ typeId }: { typeId: FernIr.dynamic.TypeId }): FernIr.dynamic.NamedType | undefined {\n        const namedType = this._ir.types[typeId];\n        if (namedType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Type identified by \"${typeId}\" could not be found`\n            });\n            return undefined;\n        }\n        return namedType;\n    }\n\n    public resolveDiscriminatedUnionTypeInstance({\n        discriminatedUnion,\n        value\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n    }): DiscriminatedUnionTypeInstance | undefined {\n        const record = this.getRecord(value);\n        if (record == null) {\n            return undefined;\n        }\n\n        const discriminantFieldName = discriminatedUnion.discriminant.wireValue;\n        const discriminantValue = record[discriminantFieldName];\n        if (discriminantValue == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newParameterNotRecognizedError(discriminantFieldName).message\n            });\n            return undefined;\n        }\n        if (typeof discriminantValue !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `Expected discriminant value to be a string but got: ${typeof discriminantValue}`\n            });\n            return undefined;\n        }\n\n        const singleDiscriminatedUnionType = discriminatedUnion.types[discriminantValue];\n        if (singleDiscriminatedUnionType == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: `No type found for discriminant value \"${discriminantValue}\"`\n            });\n            return undefined;\n        }\n\n        // Remove the discriminant from the record so that the value is valid for the type.\n        const { [discriminantFieldName]: _, ...filtered } = record;\n\n        return {\n            singleDiscriminatedUnionType,\n            discriminantValue: singleDiscriminatedUnionType.discriminantValue,\n            value: filtered\n        };\n    }\n\n    public resolveEndpointOrThrow(rawEndpoint: string): FernIr.dynamic.Endpoint[] {\n        const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(rawEndpoint);\n        if (parsedEndpoint == null) {\n            throw new Error(`Failed to parse endpoint reference \"${rawEndpoint}\"`);\n        }\n        return this.resolveEndpointLocationOrThrow(parsedEndpoint);\n    }\n\n    public resolveEndpointLocation(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints: FernIr.dynamic.Endpoint[] = [];\n        for (const endpoint of Object.values(this._ir.endpoints)) {\n            if (this.parsedEndpointMatches({ endpoint, parsedEndpoint: location })) {\n                endpoints.push(endpoint);\n            }\n        }\n\n        return endpoints;\n    }\n\n    public resolveEndpointLocationOrThrow(location: FernIr.dynamic.EndpointLocation): FernIr.dynamic.Endpoint[] {\n        const endpoints = this.resolveEndpointLocation(location);\n        if (endpoints.length === 0) {\n            throw new Error(`Failed to find endpoint identified by \"${location.method} ${location.path}\"`);\n        }\n        return endpoints;\n    }\n\n    public resolveEndpointById(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint | undefined {\n        return this._ir.endpoints[endpointId];\n    }\n\n    public resolveEndpointByIdOrThrow(endpointId: FernIr.dynamic.EndpointId): FernIr.dynamic.Endpoint {\n        const endpoint = this.resolveEndpointById(endpointId);\n        if (endpoint == null) {\n            throw new Error(`Failed to find endpoint with ID \"${endpointId}\"`);\n        }\n        return endpoint;\n    }\n\n    public needsRequestParameter({\n        request,\n        inlinePathParameters,\n        inlineFileProperties\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n        inlineFileProperties: boolean;\n    }): boolean {\n        if (this.includePathParametersInWrappedRequest({ request, inlinePathParameters })) {\n            return true;\n        }\n        if (request.queryParameters != null && request.queryParameters.length > 0) {\n            return true;\n        }\n        if (request.headers != null && request.headers.length > 0) {\n            return true;\n        }\n        if (request.body != null) {\n            return this.includeRequestBodyInWrappedRequest({ body: request.body, inlineFileProperties });\n        }\n        if (request.metadata?.onlyPathParameters) {\n            return false;\n        }\n        return true;\n    }\n\n    public includePathParametersInWrappedRequest({\n        request,\n        inlinePathParameters\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        inlinePathParameters: boolean;\n    }): boolean {\n        return inlinePathParameters && (request.metadata?.includePathParameters ?? false);\n    }\n\n    public isFileUploadRequestBody(\n        body: FernIr.dynamic.InlinedRequestBody\n    ): body is FernIr.dynamic.InlinedRequestBody.FileUpload {\n        switch (body.type) {\n            case \"fileUpload\":\n                return true;\n            case \"properties\":\n            case \"referenced\":\n                return false;\n            default:\n                assertNever(body);\n        }\n    }\n\n    public resolveEnvironmentName(environmentID: string): FernIr.Name | undefined {\n        if (this._ir.environments == null) {\n            return undefined;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            case \"multipleBaseUrls\": {\n                const environment = environments.environments.find((env) => env.id === environmentID);\n                if (environment == null) {\n                    return undefined;\n                }\n                return environment.name;\n            }\n            default:\n                assertNever(environments);\n        }\n    }\n\n    public isSingleEnvironmentID(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.EnvironmentId {\n        return typeof environment === \"string\";\n    }\n\n    public isMultiEnvironmentValues(\n        environment: FernIr.dynamic.EnvironmentValues\n    ): environment is FernIr.dynamic.MultipleEnvironmentUrlValues {\n        return typeof environment === \"object\";\n    }\n\n    public validateMultiEnvironmentUrlValues(\n        multiEnvironmentUrlValues: FernIr.dynamic.MultipleEnvironmentUrlValues\n    ): boolean {\n        if (this._ir.environments == null) {\n            this.errors.add({\n                severity: Severity.Critical,\n                message:\n                    \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n            });\n            return false;\n        }\n        const environments = this._ir.environments.environments;\n        switch (environments.type) {\n            case \"singleBaseUrl\": {\n                this.errors.add({\n                    severity: Severity.Critical,\n                    message:\n                        \"Multiple environments are not supported for single base URL environments; use the baseUrl option instead\"\n                });\n                return false;\n            }\n            case \"multipleBaseUrls\": {\n                const firstEnvironment = environments.environments[0];\n                if (firstEnvironment == null) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Multiple environments are not supported; use the baseUrl option instead\"\n                    });\n                    return false;\n                }\n                const expectedKeys = new Set(keys(firstEnvironment.urls));\n                for (const key of keys(multiEnvironmentUrlValues)) {\n                    if (expectedKeys.has(key)) {\n                        expectedKeys.delete(key);\n                    }\n                }\n                if (expectedKeys.size > 0) {\n                    this.errors.add({\n                        severity: Severity.Critical,\n                        message: `The provided environments are invalid; got: [${Object.keys(multiEnvironmentUrlValues).join(\", \")}], expected: [${keys(firstEnvironment.urls).join(\", \")}]`\n                    });\n                    return false;\n                }\n                return true;\n            }\n        }\n    }\n\n    public getValueAsNumber({ value }: { value: unknown }): number | undefined {\n        if (typeof value !== \"number\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"number\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsBoolean({ value }: { value: unknown }): boolean | undefined {\n        if (typeof value !== \"boolean\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"boolean\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public getValueAsString({ value }: { value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.errors.add({\n                severity: Severity.Critical,\n                message: this.newTypeMismatchError({ expected: \"string\", value }).message\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    public isOptional(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return this.isOptional(typeReference.value);\n            case \"optional\":\n                return true;\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public isNullable(typeReference: FernIr.dynamic.TypeReference): boolean {\n        switch (typeReference.type) {\n            case \"nullable\":\n                return true;\n            case \"optional\":\n                return this.isNullable(typeReference.value);\n            case \"named\": {\n                const resolvedType = this.resolveNamedType({ typeId: typeReference.value });\n                if (resolvedType == null) {\n                    return false;\n                }\n                if (resolvedType.type === \"alias\") {\n                    return this.isNullable(resolvedType.typeReference);\n                }\n                return false;\n            }\n        }\n        return false;\n    }\n\n    public newAuthMismatchError({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): Error {\n        return new Error(`Expected auth type ${auth.type}, got ${values.type}`);\n    }\n\n    public newParameterNotRecognizedError(parameterName: string): Error {\n        return new Error(`\"${parameterName}\" is not a recognized parameter for this endpoint`);\n    }\n\n    public newTypeMismatchError({ expected, value }: { expected: string; value: unknown }): Error {\n        return new Error(`Expected ${expected}, got ${typeof value}`);\n    }\n\n    private includeRequestBodyInWrappedRequest({\n        body,\n        inlineFileProperties\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        switch (body.type) {\n            case \"properties\":\n            case \"referenced\":\n                return true;\n            case \"fileUpload\":\n                return this.includeFileUploadBodyInWrappedRequest({ fileUpload: body, inlineFileProperties });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private includeFileUploadBodyInWrappedRequest({\n        fileUpload,\n        inlineFileProperties\n    }: {\n        fileUpload: FernIr.dynamic.FileUploadRequestBody;\n        inlineFileProperties: boolean;\n    }): boolean {\n        return (\n            this.fileUploadHasBodyProperties({ fileUpload }) ||\n            (inlineFileProperties && this.fileUploadHasFileProperties({ fileUpload }))\n        );\n    }\n\n    private fileUploadHasBodyProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return false;\n                case \"bodyProperty\":\n                    return true;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private fileUploadHasFileProperties({ fileUpload }: { fileUpload: FernIr.dynamic.FileUploadRequestBody }): boolean {\n        return fileUpload.properties.some((property) => {\n            switch (property.type) {\n                case \"file\":\n                case \"fileArray\":\n                    return true;\n                case \"bodyProperty\":\n                    return false;\n                default:\n                    assertNever(property);\n            }\n        });\n    }\n\n    private isListTypeReference(typeReference: FernIr.dynamic.TypeReference): boolean {\n        if (typeReference.type === \"optional\") {\n            return this.isListTypeReference(typeReference.value);\n        }\n        return typeReference.type === \"list\" || typeReference.type === \"set\";\n    }\n\n    private parsedEndpointMatches({\n        endpoint,\n        parsedEndpoint\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        parsedEndpoint: { method: string; path: string; namespace?: string };\n    }): boolean {\n        return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n    }\n}\n","export { EXAMPLE_REFERENCE_PREFIX, YAML_SCHEMA_VERSION } from \"./constants.js\";\nexport { type NodePath, type NodePathItem } from \"./NodePath.js\";\nexport * as RawSchemas from \"./schemas/index.js\";\nexport { type DefinitionFileSchema, type PackageMarkerFileSchema, type RootApiFileSchema } from \"./schemas/index.js\";\nexport * from \"./utils/auth/index.js\";\nexport * from \"./utils/generics/index.js\";\nexport { getRequestBody } from \"./utils/getRequestBody.js\";\nexport { getResponseBodyType } from \"./utils/getResponseBodyType.js\";\nexport { HttpEndpointReferenceParser } from \"./utils/HttpEndpointReferenceParser.js\";\nexport { isInlineRequestBody } from \"./utils/isInlineRequestBody.js\";\nexport { isOpenApiSourceSchema } from \"./utils/isOpenApiSourceSchema.js\";\nexport { isRawProtobufSourceSchema } from \"./utils/isRawProtobufSourceSchema.js\";\nexport { isRawTextType } from \"./utils/isRawTextType.js\";\nexport { type BytesRequest, parseBytesRequest } from \"./utils/parseBytesRequest.js\";\nexport { parseFileUploadRequest, type RawFileUploadRequest } from \"./utils/parseFileUploadRequest.js\";\nexport { parseRawBytesType, type RawBytesType } from \"./utils/parseRawBytesType.js\";\nexport { parseRawFileType, type RawFileType } from \"./utils/parseRawFileType.js\";\nexport { parseRawTextType, type RawTextType } from \"./utils/parseRawTextType.js\";\nexport { RawPrimitiveType } from \"./utils/RawPrimitiveType.js\";\nexport { recursivelyVisitRawTypeReference } from \"./utils/recursivelyVisitRawTypeReference.js\";\nexport { visitExampleCodeSampleSchema } from \"./utils/visitExampleCodeSampleSchema.js\";\nexport { type ExampleResponseSchemaVisitor, visitExampleResponseSchema } from \"./utils/visitExampleResponseSchema.js\";\nexport {\n    isAnyAuthSchemes,\n    isSingleAuthScheme,\n    type RawApiAuthVisitor,\n    visitRawApiAuth\n} from \"./utils/visitRawApiAuth.js\";\nexport {\n    type AuthSchemeDeclarationVisitor,\n    isHeaderAuthScheme,\n    visitRawAuthSchemeDeclaration\n} from \"./utils/visitRawAuthSchemeDeclaration.js\";\nexport {\n    isRawMultipleBaseUrlsEnvironment,\n    isRawSingleBaseUrlEnvironment,\n    visitRawEnvironmentDeclaration\n} from \"./utils/visitRawEnvironmentDeclaration.js\";\nexport {\n    isVariablePathParameter,\n    type PathParameterDeclarationVisitor,\n    visitRawPathParameter\n} from \"./utils/visitRawPathParameter.js\";\nexport {\n    isRawAliasDefinition,\n    isRawDiscriminatedUnionDefinition,\n    isRawEnumDefinition,\n    isRawObjectDefinition,\n    isRawUndiscriminatedUnionDefinition,\n    type RawTypeDeclarationVisitor,\n    visitRawTypeDeclaration\n} from \"./utils/visitRawTypeDeclaration.js\";\nexport { FernContainerRegex, visitRawTypeReference } from \"./utils/visitRawTypeReference.js\";\n","export declare namespace HttpEndpointReferenceParser {\n    interface Parsed {\n        path: string;\n        method: Method;\n        namespace: string | undefined;\n    }\n\n    type Method = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\";\n\n    export type ValidationResult = Valid | Invalid;\n\n    interface Valid {\n        type: \"valid\";\n    }\n\n    interface Invalid {\n        type: \"invalid\";\n    }\n}\n\n/**\n * Parses an HTTP endpoint reference like `POST /users/get` or `namespace::POST /users/get`\n */\nexport class HttpEndpointReferenceParser {\n    //eslint-disable-next-line\n    private REFERENCE_REGEX = /^(?:(\\w+)::)?(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n\n    public validate(reference: string): HttpEndpointReferenceParser.ValidationResult {\n        const validFormat = this.REFERENCE_REGEX.test(reference);\n        if (!validFormat) {\n            return { type: \"invalid\" };\n        }\n        return { type: \"valid\" };\n    }\n\n    public tryParse(reference: string): HttpEndpointReferenceParser.Parsed | undefined {\n        const validationResponse = this.validate(reference);\n        if (validationResponse.type === \"invalid\") {\n            return undefined;\n        }\n        const match = reference.match(this.REFERENCE_REGEX);\n        if (match == null || match[2] == null || match[3] == null) {\n            return undefined;\n        }\n        return {\n            namespace: match[1], // undefined if no namespace prefix\n            method: match[2] as HttpEndpointReferenceParser.Method,\n            path: match[3]\n        };\n    }\n}\n","export const Severity = {\n    Critical: \"CRITICAL\",\n    Warning: \"WARNING\"\n} as const;\n\nexport declare namespace ErrorReporter {\n    type Path = readonly PathItem[];\n\n    type PathItem = string | ArrayPathItem;\n\n    type Severity = (typeof Severity)[keyof typeof Severity];\n\n    interface ArrayPathItem {\n        index: number;\n    }\n\n    interface Error {\n        path?: Path;\n        severity: Severity;\n        message: string;\n    }\n}\n\ninterface Error_ {\n    severity: \"CRITICAL\" | \"WARNING\";\n    path: string[] | undefined;\n    message: string;\n}\n\nexport class ErrorReporter {\n    private errors: ErrorReporter.Error[];\n    private path: ErrorReporter.PathItem[];\n\n    constructor() {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public add(err: Omit<ErrorReporter.Error, \"path\">): void {\n        this.errors.push({\n            ...err,\n            path: [...this.path]\n        });\n    }\n\n    public scope(path: ErrorReporter.PathItem): void {\n        this.path.push(path);\n    }\n\n    public unscope(): void {\n        this.path.pop();\n    }\n\n    public getBySeverity(severity: ErrorReporter.Severity): ErrorReporter.Error[] {\n        return this.errors.filter((err) => err.severity === severity);\n    }\n\n    public empty(): boolean {\n        return this.errors.length === 0;\n    }\n\n    public size(): number {\n        return this.errors.length;\n    }\n\n    public truncate(size: number): void {\n        this.errors.length = size;\n    }\n\n    public clone(): ErrorReporter {\n        const clone = new ErrorReporter();\n        clone.errors = [...this.errors];\n        clone.path = [...this.path];\n        return clone;\n    }\n\n    public reset(): void {\n        this.errors = [];\n        this.path = [];\n    }\n\n    public toDynamicSnippetErrors(): Error_[] {\n        return this.errors.map((err) => ({\n            severity: err.severity,\n            path: err.path != null ? this.pathToStringArray(err.path) : undefined,\n            message: err.message\n        }));\n    }\n\n    private pathToStringArray(path: ErrorReporter.Path): string[] {\n        const result: string[] = [];\n        for (const item of path) {\n            if (typeof item === \"string\") {\n                result.push(item);\n                continue;\n            }\n            result[result.length - 1] += `[${item.index}]`;\n        }\n        return result;\n    }\n}\n","export const Scope = {\n    PathParameters: \"pathParameters\",\n    QueryParameters: \"queryParameters\",\n    Headers: \"headers\",\n    RequestBody: \"requestBody\"\n} as const;\n\nexport type Scope = (typeof Scope)[keyof typeof Scope];\n","import {\n    AbstractDynamicSnippetsGeneratorContext,\n    FernGeneratorExec\n} from \"@fern-api/browser-compatible-base-generator\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { TypescriptCustomConfigSchema, ts } from \"@fern-api/typescript-ast\";\nimport { constructNpmPackage, getNamespaceExport, resolveNaming } from \"@fern-api/typescript-browser-compatible-base\";\n\nimport { DynamicTypeLiteralMapper } from \"./DynamicTypeLiteralMapper.js\";\nimport { FilePropertyMapper } from \"./FilePropertyMapper.js\";\n\nexport class DynamicSnippetsGeneratorContext extends AbstractDynamicSnippetsGeneratorContext {\n    public ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n    public customConfig: TypescriptCustomConfigSchema | undefined;\n    public dynamicTypeLiteralMapper: DynamicTypeLiteralMapper;\n    public filePropertyMapper: FilePropertyMapper;\n    public moduleName: string;\n    public namespaceExport: string;\n    private resolvedClientName: string;\n    private resolvedEnvironmentName: string;\n\n    constructor({\n        ir,\n        config\n    }: {\n        ir: FernIr.dynamic.DynamicIntermediateRepresentation;\n        config: FernGeneratorExec.GeneratorConfig;\n    }) {\n        super({ ir, config });\n        this.ir = ir;\n        this.customConfig =\n            config.customConfig != null ? (config.customConfig as TypescriptCustomConfigSchema) : undefined;\n        this.dynamicTypeLiteralMapper = new DynamicTypeLiteralMapper({ context: this });\n        this.filePropertyMapper = new FilePropertyMapper({ context: this });\n        this.moduleName = getModuleName({ config, customConfig: this.customConfig });\n        this.namespaceExport = getNamespaceExport({\n            organization: config.organization,\n            workspaceName: config.workspaceName,\n            namespaceExport: this.customConfig?.namespaceExport,\n            naming: this.customConfig?.naming\n        });\n        const resolved = resolveNaming({\n            namespaceExport: this.namespaceExport,\n            naming: this.customConfig?.naming\n        });\n        this.resolvedClientName = resolved.client;\n        this.resolvedEnvironmentName = resolved.environment;\n    }\n\n    public clone(): DynamicSnippetsGeneratorContext {\n        return new DynamicSnippetsGeneratorContext({\n            ir: this.ir,\n            config: this.config\n        });\n    }\n\n    public getModuleImport(): ts.Reference.ModuleImport {\n        return {\n            type: \"named\",\n            moduleName: this.moduleName\n        };\n    }\n\n    public getRootClientName(): string {\n        return this.resolvedClientName;\n    }\n\n    public getPropertyName(name: FernIr.Name): string {\n        if (this.customConfig?.retainOriginalCasing || this.customConfig?.noSerdeLayer) {\n            return this.formatOriginalPropertyName(name.originalName);\n        }\n        return name.camelCase.unsafeName;\n    }\n\n    public getMethodName(name: FernIr.Name): string {\n        return name.camelCase.unsafeName;\n    }\n\n    public getTypeName(name: FernIr.Name): string {\n        return name.pascalCase.unsafeName;\n    }\n\n    public getEnvironmentTypeReferenceFromID(environmentID: string): ts.Reference | undefined {\n        const environmentName = this.resolveEnvironmentName(environmentID);\n        if (environmentName == null) {\n            return undefined;\n        }\n        return this.getEnvironmentsTypeReference(environmentName);\n    }\n\n    public getFullyQualifiedReference({ declaration }: { declaration: FernIr.dynamic.Declaration }): string {\n        if (declaration.fernFilepath.allParts.length > 0) {\n            return `${declaration.fernFilepath.allParts\n                .map((val) => val.camelCase.unsafeName)\n                .join(\".\")}.${this.getTypeName(declaration.name)}`;\n        }\n        return `${this.getTypeName(declaration.name)}`;\n    }\n\n    private getEnvironmentsTypeReference(name: FernIr.Name): ts.Reference {\n        return ts.reference({\n            name: this.resolvedEnvironmentName,\n            importFrom: this.getModuleImport(),\n            memberName: this.getTypeName(name)\n        });\n    }\n\n    private formatOriginalPropertyName(value: string): string {\n        if (value.includes(\"-\")) {\n            // For example, header names like the following:\n            //\n            // {\n            //   \"X-API-Version\": \"X-API-Version\",\n            //   body: \"string\"\n            // }\n            return `\"${value}\"`;\n        }\n        return value;\n    }\n}\n\nfunction getModuleName({\n    config,\n    customConfig\n}: {\n    config: FernGeneratorExec.GeneratorConfig;\n    customConfig: TypescriptCustomConfigSchema | undefined;\n}): string {\n    return (\n        constructNpmPackage({\n            generatorConfig: config,\n            isPackagePrivate: customConfig?.private ?? false\n        })?.packageName ?? config.organization\n    );\n}\n","export * from \"./ast/core/index.js\";\nexport {\n    NamingConfigSchema,\n    NamingObjectSchema,\n    TypescriptCustomConfigSchema\n} from \"./custom-config/TypescriptCustomConfigSchema.js\";\nexport * as ts from \"./typescript.js\";\n","export { AstNode } from \"./AstNode.js\";\nexport { Writer } from \"./Writer.js\";\n","import { AbstractAstNode, AbstractFormatter } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { TypescriptCustomConfigSchema } from \"../../custom-config/TypescriptCustomConfigSchema.js\";\nimport { TypeScriptFile } from \"./TypeScriptFile.js\";\n\nexport abstract class AstNode extends AbstractAstNode {\n    /**\n     * Writes the node to a string.\n     */\n    public async toStringAsync({\n        customConfig,\n        formatter\n    }: {\n        customConfig: TypescriptCustomConfigSchema | undefined;\n        formatter?: AbstractFormatter;\n    }): Promise<string> {\n        const file = new TypeScriptFile({ customConfig, formatter });\n        this.write(file);\n        return await file.toStringAsync();\n    }\n\n    public toString({\n        customConfig,\n        formatter\n    }: {\n        customConfig: TypescriptCustomConfigSchema | undefined;\n        formatter?: AbstractFormatter;\n    }): string {\n        const file = new TypeScriptFile({ customConfig, formatter });\n        this.write(file);\n        return file.toString();\n    }\n}\n","import { Writer } from \"./Writer.js\";\n\nexport declare namespace TypeScriptFile {\n    interface Args extends Writer.Args {}\n}\n\nexport class TypeScriptFile extends Writer {\n    constructor({ customConfig, formatter }: TypeScriptFile.Args) {\n        super({ customConfig, formatter });\n    }\n\n    public async toStringAsync(): Promise<string> {\n        const content = this.getContent();\n        if (this.formatter != null) {\n            try {\n                return this.formatter.format(content);\n            } catch (error) {\n                throw new Error(`Failed to format TypeScript file: ${error}\\n${content}`);\n            }\n        }\n        return content;\n    }\n\n    public toString(): string {\n        const content = this.getContent();\n        if (this.formatter != null) {\n            try {\n                return this.formatter.formatSync(content);\n            } catch (error) {\n                throw new Error(`Failed to format TypeScript file: ${error}\\n${content}`);\n            }\n        }\n        return content;\n    }\n\n    public getContent(): string {\n        const imports = this.stringifyImports();\n        if (imports.length > 0) {\n            return imports + \"\\n\" + this.buffer;\n        }\n        return this.buffer;\n    }\n\n    private stringifyImports(): string {\n        let result = \"\";\n        for (const [module, references] of Object.entries(this.imports)) {\n            const defaultImport = this.defaultImports[module];\n            let stringifiedNonDefault = \"\";\n            const named = references.filter((r) => r.importFrom?.type === \"named\");\n            const starImportAlias = this.starImportAliases[module];\n            if (named.length > 0 || defaultImport != null || starImportAlias != null) {\n                result += \"import\";\n                if (defaultImport != null) {\n                    result += ` ${defaultImport.name}`;\n                }\n                if (named.length > 0) {\n                    for (const ref of named.slice(0, -1)) {\n                        stringifiedNonDefault += `${ref.name}, `;\n                    }\n                    const lastRef = named[named.length - 1];\n                    // Need for eslint; lastRef will not be null because length > 0\n                    if (lastRef != null) {\n                        stringifiedNonDefault += `${lastRef.name}`;\n                    }\n                    if (defaultImport != null) {\n                        result += \",\";\n                    }\n                    result += ` { ${stringifiedNonDefault} }`;\n                }\n                if (starImportAlias != null) {\n                    if (defaultImport != null || named.length > 0) {\n                        result += \", \";\n                    }\n                    result += ` * as ${starImportAlias}`;\n                }\n                result += ` from \"${module}\";\\n`;\n            }\n        }\n        return result;\n    }\n}\n","import { AbstractFormatter, AbstractWriter, NopFormatter } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { TypescriptCustomConfigSchema } from \"../../custom-config/TypescriptCustomConfigSchema.js\";\nimport { Reference } from \"../Reference.js\";\n\ntype ModuleName = string;\ntype Alias = string;\n\nexport declare namespace Writer {\n    interface Args {\n        /* Custom generator config */\n        customConfig: TypescriptCustomConfigSchema | undefined;\n        /* Formatter used to format TypeScript source files */\n        formatter?: AbstractFormatter;\n    }\n}\n\nexport class Writer extends AbstractWriter {\n    /* Custom generator config */\n    public customConfig: TypescriptCustomConfigSchema | undefined;\n    /* Formatter used to format Go source files */\n    public formatter: AbstractFormatter;\n\n    /* Import statements */\n    protected imports: Record<ModuleName, Reference[]> = {};\n    protected defaultImports: Record<ModuleName, Reference> = {};\n    protected starImportAliases: Record<ModuleName, Alias> = {};\n    protected starImportAliasesInverse: Record<Alias, ModuleName> = {};\n\n    constructor({ customConfig, formatter }: Writer.Args) {\n        super();\n        this.customConfig = customConfig;\n        this.formatter = formatter ?? new NopFormatter();\n    }\n\n    /**\n     * Adds the given import under its module name.\n     */\n    public addImport(reference: Reference): void {\n        if (reference.importFrom != null) {\n            switch (reference.importFrom.type) {\n                case \"default\": {\n                    this.validateDefault(reference);\n                    break;\n                }\n                case \"named\": {\n                    this.validateNamed(reference);\n                    break;\n                }\n                case \"star\": {\n                    this.validateStar(reference);\n                    break;\n                }\n            }\n            const moduleImports = (this.imports[reference.importFrom.moduleName] ??= []);\n            const names = moduleImports.map((import_) => import_.name);\n            if (!names.includes(reference.name)) {\n                moduleImports.push(reference);\n            }\n        }\n    }\n\n    private validateDefault(reference: Reference): void {\n        if (reference.importFrom?.type !== \"default\") {\n            return;\n        }\n        const moduleDefault = (this.defaultImports[reference.importFrom.moduleName] ??= reference);\n        if (moduleDefault.name !== reference.name) {\n            throw new Error(\n                `Cannot have multiple default imports for module ${reference.importFrom.moduleName}: ` +\n                    `got ${reference.name} but already had ${moduleDefault.name}`\n            );\n        }\n    }\n\n    private validateNamed(reference: Reference): void {\n        if (reference.importFrom?.type !== \"named\") {\n            return;\n        }\n\n        const existing = this.imports[reference.importFrom.moduleName] ?? [];\n        const existingStar = existing.filter((e) => e.importFrom?.type === \"star\");\n        if (existingStar.length > 0) {\n            throw new Error(\n                `Cannot add named import ${reference.name} because non-named` +\n                    ` imports ${existingStar.map((e) => e.name)} already exist`\n            );\n        }\n\n        const duplicates = [];\n        for (const references of Object.values(this.imports)) {\n            for (const ref of references) {\n                if (\n                    ref.importFrom?.type === \"named\" &&\n                    ref.importFrom.moduleName !== reference.importFrom.moduleName &&\n                    ref.name === reference.name\n                ) {\n                    duplicates.push(ref);\n                }\n            }\n        }\n        // TODO: Need to be able to resolve conflicts instead of throwing\n        if (duplicates.length > 0) {\n            throw new Error(\n                `Cannot add named import from module ${reference.importFrom.moduleName} ` +\n                    `because it is already imported from ${duplicates[0]?.importFrom?.moduleName}`\n            );\n        }\n    }\n\n    private validateStar(reference: Reference): void {\n        if (reference.importFrom?.type !== \"star\") {\n            return;\n        }\n\n        const moduleAlias = (this.starImportAliases[reference.importFrom.moduleName] ??=\n            reference.importFrom.starImportAlias);\n        if (moduleAlias !== reference.importFrom.starImportAlias) {\n            throw new Error(\n                \"Cannot have more than one alias for non-named imports from a module: \" +\n                    `got ${reference.importFrom.starImportAlias} but already have ${moduleAlias}.`\n            );\n        }\n\n        const aliasModule = (this.starImportAliasesInverse[reference.importFrom.starImportAlias] ??=\n            reference.importFrom.moduleName);\n        // TODO: Need to be able to resolve conflicts instead of throwing\n        if (aliasModule !== reference.importFrom.moduleName) {\n            throw new Error(\n                `Attempted to use alias ${reference.importFrom.starImportAlias} for more than one ` +\n                    \"module in the same file\"\n            );\n        }\n    }\n}\n","import * as AST from \"./ast/index.js\";\n\nexport function codeblock(arg: AST.CodeBlock.Args): AST.CodeBlock {\n    return new AST.CodeBlock(arg);\n}\n\nexport function function_(args: AST.Function.Args): AST.Function {\n    return new AST.Function(args);\n}\n\nexport function instantiateClass(args: AST.ClassInstantiation.Args): AST.ClassInstantiation {\n    return new AST.ClassInstantiation(args);\n}\n\nexport function invokeFunction(args: AST.FunctionInvocation.Args): AST.FunctionInvocation {\n    return new AST.FunctionInvocation(args);\n}\n\nexport function invokeMethod(args: AST.MethodInvocation.Args): AST.MethodInvocation {\n    return new AST.MethodInvocation(args);\n}\n\nexport function parameter(args: AST.Parameter.Args): AST.Parameter {\n    return new AST.Parameter(args);\n}\n\nexport function reference(arg: AST.Reference.Args): AST.Reference {\n    return new AST.Reference(arg);\n}\n\nexport function variable(arg: AST.Variable.Args): AST.Variable {\n    return new AST.Variable(arg);\n}\n\nexport * from \"./ast/core/index.js\";\nexport * from \"./ast/index.js\";\nexport { Reference, Type as Types, TypeLiteral } from \"./ast/index.js\";\n","export { ClassInstantiation } from \"./ClassInstantiation.js\";\nexport { CodeBlock } from \"./CodeBlock.js\";\nexport { Comment } from \"./Comment.js\";\nexport { AstNode, Writer } from \"./core/index.js\";\nexport { Function } from \"./Function.js\";\nexport { FunctionInvocation } from \"./FunctionInvocation.js\";\nexport { MethodInvocation } from \"./MethodInvocation.js\";\nexport { Parameter } from \"./Parameter.js\";\nexport { Reference } from \"./Reference.js\";\nexport { Type } from \"./Type.js\";\nexport { type ObjectField, TypeLiteral } from \"./TypeLiteral.js\";\nexport { Variable } from \"./Variable.js\";\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Reference } from \"./Reference.js\";\n\nexport declare namespace ClassInstantiation {\n    interface Args {\n        class_: Reference;\n        arguments_: AstNode[];\n    }\n}\n\nexport class ClassInstantiation extends AstNode {\n    private class_: Reference;\n    private arguments_: AstNode[];\n\n    constructor({ class_, arguments_ }: ClassInstantiation.Args) {\n        super();\n        this.class_ = class_;\n        this.arguments_ = arguments_;\n    }\n\n    public write(writer: Writer): void {\n        writer.write(\"new \");\n        writer.writeNode(this.class_);\n        writer.write(\"(\");\n        writer.delimit({\n            nodes: this.arguments_,\n            delimiter: \", \",\n            writeFunction: (argument) => argument.write(writer)\n        });\n        writer.write(\")\");\n    }\n}\n","import { CodeBlock as CommonCodeBlock } from \"@fern-api/browser-compatible-base-generator\";\n\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace CodeBlock {\n    /* Write arbitrary code */\n    type Args = CommonCodeBlock.Arg<Writer>;\n}\n\nexport class CodeBlock extends AstNode {\n    private args: CodeBlock.Args;\n\n    public constructor(args: CodeBlock.Args) {\n        super();\n        this.args = args;\n    }\n\n    public write(writer: Writer): void {\n        const commonCodeBlock = new CommonCodeBlock(this.args);\n        return commonCodeBlock.write(writer);\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\nexport declare namespace Comment {\n    interface Args {\n        docs: string | undefined;\n    }\n}\n\nexport class Comment extends AstNode {\n    public readonly docs: string | undefined;\n\n    constructor({ docs }: Comment.Args = { docs: undefined }) {\n        super();\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            writer.writeLine(\"/**\");\n            this.docs.split(\"\\n\").forEach((line) => {\n                writer.writeLine(` * ${line}`);\n            });\n            writer.writeLine(\"*/\");\n        }\n    }\n}\n","import { CodeBlock } from \"./CodeBlock.js\";\nimport { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Parameter } from \"./Parameter.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Function {\n    interface Args {\n        name: string;\n        parameters: Parameter[];\n        body: CodeBlock;\n        return_?: Type;\n        async?: boolean;\n        docs?: string;\n    }\n}\n\nexport class Function extends AstNode {\n    readonly name: string;\n    readonly parameters: Parameter[];\n    readonly [\"async\"]: boolean;\n    readonly body: CodeBlock;\n    readonly return_: Type | undefined;\n    readonly docs: string | undefined;\n\n    constructor({ name, parameters, async, body, return_, docs }: Function.Args) {\n        super();\n        this.name = name;\n        this.parameters = parameters;\n        this.async = async ?? false;\n        this.body = body;\n        this.return_ = return_;\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(new Comment({ docs: this.docs }));\n        if (this.async) {\n            writer.write(\"async \");\n        }\n        writer.write(\"function \");\n        writer.write(`${this.name}`);\n        this.writeParameters(writer);\n        if (this.return_ != null) {\n            writer.write(\": \");\n            writer.writeNode(this.async ? Type.promise(this.return_) : this.return_);\n        }\n        writer.writeLine(\" {\");\n        writer.indent();\n        this.body?.write(writer);\n        writer.dedent();\n        writer.writeNewLineIfLastLineNot();\n        writer.writeLine(\"}\");\n    }\n\n    private writeParameters(writer: Writer): void {\n        if (this.parameters.length === 0) {\n            writer.write(\"()\");\n            return;\n        }\n        writer.indent();\n        writer.writeLine(\"(\");\n        for (const parameter of this.parameters) {\n            writer.writeNode(parameter);\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\")\");\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\n\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\n\ntype InternalType =\n    | String_\n    | Number_\n    | BigInt_\n    | Boolean_\n    | Array_\n    | Object_\n    | Map_\n    | Enum\n    | Promise_\n    | Any\n    | Unknown\n    | Void\n    | Undefined\n    | Null\n    | Never\n    | Nop;\n\ninterface String_ {\n    type: \"string\";\n}\n\ninterface Number_ {\n    type: \"number\";\n}\n\ninterface BigInt_ {\n    type: \"bigint\";\n}\n\ninterface Boolean_ {\n    type: \"boolean\";\n}\n\ninterface Array_ {\n    type: \"array\";\n    valueType: Type;\n}\n\ninterface Object_ {\n    type: \"object\";\n    fields: Record<string, Type>;\n}\n\ninterface Map_ {\n    type: \"map\";\n    keyType: Type;\n    valueType: Type;\n}\n\ninterface Enum {\n    type: \"enum\";\n    values: string[];\n}\n\ninterface Any {\n    type: \"any\";\n}\n\ninterface Unknown {\n    type: \"unknown\";\n}\n\ninterface Void {\n    type: \"void\";\n}\n\ninterface Undefined {\n    type: \"undefined\";\n}\n\ninterface Null {\n    type: \"null\";\n}\n\ninterface Never {\n    type: \"never\";\n}\n\ninterface Nop {\n    type: \"nop\";\n}\n\ninterface Promise_ {\n    type: \"promise\";\n    value: Type;\n}\n\nexport class Type extends AstNode {\n    private constructor(public readonly internalType: InternalType) {\n        super();\n    }\n\n    public write(writer: Writer): void {\n        switch (this.internalType.type) {\n            case \"string\":\n                writer.write(\"string\");\n                break;\n            case \"number\":\n                writer.write(\"number\");\n                break;\n            case \"bigint\":\n                writer.write(\"bigint\");\n                break;\n            case \"boolean\":\n                writer.write(\"boolean\");\n                break;\n            case \"array\":\n                this.internalType.valueType.write(writer);\n                writer.write(\"[]\");\n                break;\n            case \"map\":\n                writer.write(\"Record<\");\n                this.internalType.keyType.write(writer);\n                writer.write(\", \");\n                this.internalType.valueType.write(writer);\n                writer.write(\">\");\n                break;\n            case \"object\":\n                writer.write(\"{\");\n                writer.indent();\n                for (const [key, value] of Object.entries(this.internalType.fields)) {\n                    writer.write(`${key}: `);\n                    value.write(writer);\n                    writer.writeLine(\",\");\n                }\n                writer.dedent();\n                writer.write(\"}\");\n                break;\n            case \"enum\":\n                writer.write(\"enum\");\n                break;\n            case \"any\":\n                writer.write(\"any\");\n                break;\n            case \"promise\":\n                writer.write(\"Promise<\");\n                this.internalType.value.write(writer);\n                writer.write(\">\");\n                break;\n            case \"unknown\":\n                writer.write(\"unknown\");\n                break;\n            case \"void\":\n                writer.write(\"void\");\n                break;\n            case \"undefined\":\n                writer.write(\"undefined\");\n                break;\n            case \"null\":\n                writer.write(\"null\");\n                break;\n            case \"never\":\n                writer.write(\"never\");\n                break;\n            case \"nop\":\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    /* Static factory methods for creating a Type */\n    public static string(): Type {\n        return new this({\n            type: \"string\"\n        });\n    }\n\n    public static number(): Type {\n        return new this({\n            type: \"number\"\n        });\n    }\n\n    public static bigint(): Type {\n        return new this({\n            type: \"bigint\"\n        });\n    }\n\n    public static boolean(): Type {\n        return new this({\n            type: \"boolean\"\n        });\n    }\n\n    public static array(valueType: Type): Type {\n        return new this({\n            type: \"array\",\n            valueType\n        });\n    }\n\n    public static object(fields: Record<string, Type>): Type {\n        return new this({\n            type: \"object\",\n            fields\n        });\n    }\n\n    public static enum(values: string[]): Type {\n        return new this({\n            type: \"enum\",\n            values\n        });\n    }\n\n    public static any(): Type {\n        return new this({\n            type: \"any\"\n        });\n    }\n\n    public static promise(value: Type): Type {\n        if (value.internalType.type === \"promise\") {\n            // Avoids double promise.\n            return value;\n        }\n        return new this({\n            type: \"promise\",\n            value\n        });\n    }\n\n    public static unknown(): Type {\n        return new this({\n            type: \"unknown\"\n        });\n    }\n\n    public static void(): Type {\n        return new this({\n            type: \"void\"\n        });\n    }\n\n    public static undefined(): Type {\n        return new this({\n            type: \"undefined\"\n        });\n    }\n\n    public static null(): Type {\n        return new this({\n            type: \"null\"\n        });\n    }\n\n    public static never(): Type {\n        return new this({\n            type: \"never\"\n        });\n    }\n\n    public static nop(): Type {\n        return new this({\n            type: \"nop\"\n        });\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Reference } from \"./Reference.js\";\n\nexport declare namespace FunctionInvocation {\n    interface Args {\n        function_: Reference;\n        arguments_: AstNode[];\n    }\n}\n\nexport class FunctionInvocation extends AstNode {\n    private function_: Reference;\n    private arguments_: AstNode[];\n\n    constructor({ function_, arguments_ }: FunctionInvocation.Args) {\n        super();\n        this.function_ = function_;\n        this.arguments_ = arguments_;\n    }\n\n    public write(writer: Writer): void {\n        writer.writeNode(this.function_);\n        writer.write(\"(\");\n        writer.delimit({\n            nodes: this.arguments_,\n            delimiter: \", \",\n            writeFunction: (argument) => argument.write(writer)\n        });\n        writer.write(\")\");\n    }\n}\n","import { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Reference } from \"./Reference.js\";\n\nexport declare namespace MethodInvocation {\n    interface Args {\n        on: Reference;\n        method: string;\n        arguments_: AstNode[];\n        async?: boolean;\n    }\n}\n\nexport class MethodInvocation extends AstNode {\n    private on: Reference;\n    private method: string;\n    private arguments_: AstNode[];\n    private [\"async\"]: boolean | undefined;\n\n    constructor({ on, method, arguments_, async }: MethodInvocation.Args) {\n        super();\n        this.on = on;\n        this.method = method;\n        this.arguments_ = arguments_;\n        this.async = async;\n    }\n\n    public write(writer: Writer): void {\n        if (this.async) {\n            writer.write(\"await \");\n        }\n        this.on.write(writer);\n        writer.write(\".\");\n        writer.write(this.method);\n        writer.write(\"(\");\n        writer.delimit({\n            nodes: this.arguments_,\n            delimiter: \", \",\n            writeFunction: (argument) => argument.write(writer)\n        });\n        writer.write(\")\");\n    }\n}\n","import { Comment } from \"./Comment.js\";\nimport { AstNode } from \"./core/AstNode.js\";\nimport { Writer } from \"./core/Writer.js\";\nimport { Type } from \"./Type.js\";\n\nexport declare namespace Parameter {\n    interface Args {\n        name: string;\n        type: Type;\n        docs?: string;\n    }\n}\n\nexport class Parameter extends AstNode {\n    public readonly name: string;\n    public readonly type: Type;\n    public readonly docs: string | undefined;\n\n    constructor({ name, type, docs }: Parameter.Args) {\n        super();\n        this.name = name;\n        this.type = type;\n        this.docs = docs;\n    }\n\n    public write(writer: Writer): void {\n        if (this.docs != null) {\n            writer.writeNode(new Comment({ docs: this.docs }));\n        }\n        writer.write(`${this.name}: `);\n        this.type.write(writer);\n    }\n}\n","import { AstNode, Writer } from \"./core/index.js\";\n\nexport declare namespace Reference {\n    type ModuleImport = DefaultImport | NamedImport | StarImport;\n\n    interface DefaultImport {\n        type: \"default\";\n        moduleName: string;\n    }\n\n    interface NamedImport {\n        type: \"named\";\n        moduleName: string;\n    }\n\n    interface StarImport {\n        type: \"star\";\n        moduleName: string;\n        starImportAlias: string;\n    }\n\n    interface Args {\n        /* The name of the reference */\n        name: string;\n        /* The member name within the imported reference, if any (e.g. 'Address' in 'User.Address') */\n        memberName?: string;\n        /* The module it's from, if it's imported */\n        importFrom?: ModuleImport;\n    }\n}\n\nexport class Reference extends AstNode {\n    public readonly name: string;\n    public readonly importFrom: Reference.ModuleImport | undefined;\n    public readonly memberName: string | undefined;\n\n    constructor({ name, importFrom, memberName }: Reference.Args) {\n        super();\n        this.name = name;\n        this.importFrom = importFrom;\n        this.memberName = memberName;\n    }\n\n    public write(writer: Writer): void {\n        if (this.importFrom != null) {\n            writer.addImport(this);\n        }\n        const prefix = this.importFrom?.type === \"star\" ? `${this.importFrom.starImportAlias}.` : \"\";\n        const suffix = this.memberName != null ? `.${this.memberName}` : \"\";\n        writer.write(`${prefix}${this.name}${suffix}`);\n    }\n}\n","import { assertNever } from \"@fern-api/core-utils\";\n\nimport { AstNode, Writer } from \"./core/index.js\";\n\ntype InternalTypeLiteral =\n    | Array_\n    | Blob_\n    | Boolean_\n    | BigInt_\n    | DateTime\n    | Number_\n    | Object_\n    | Record_\n    | Reference\n    | Set_\n    | String_\n    | Tuple\n    | Unknown_\n    | Null_\n    | Nop;\n\ninterface Array_ {\n    type: \"array\";\n    values: TypeLiteral[];\n}\n\ninterface Blob_ {\n    type: \"blob\";\n    value: string;\n}\n\ninterface Boolean_ {\n    type: \"boolean\";\n    value: boolean;\n}\n\ninterface Number_ {\n    type: \"number\";\n    value: number;\n}\n\ninterface BigInt_ {\n    type: \"bigint\";\n    value: bigint;\n}\n\ninterface DateTime {\n    type: \"datetime\";\n    value: string;\n}\n\ninterface Object_ {\n    type: \"object\";\n    fields: ObjectField[];\n}\n\nexport interface ObjectField {\n    name: string;\n    value: TypeLiteral;\n}\n\ninterface Record_ {\n    type: \"record\";\n    entries: RecordEntry[];\n}\n\ninterface RecordEntry {\n    key: TypeLiteral;\n    value: TypeLiteral;\n}\n\ninterface Reference {\n    type: \"reference\";\n    value: AstNode;\n}\n\ninterface Set_ {\n    type: \"set\";\n    values: TypeLiteral[];\n}\n\ninterface String_ {\n    type: \"string\";\n    value: string;\n}\n\ninterface Tuple {\n    type: \"tuple\";\n    values: TypeLiteral[];\n}\n\ninterface Unknown_ {\n    type: \"unknown\";\n    value: unknown;\n}\n\ninterface Null_ {\n    type: \"null\";\n}\n\ninterface Nop {\n    type: \"nop\";\n}\n\nexport class TypeLiteral extends AstNode {\n    private constructor(public readonly internalType: InternalTypeLiteral) {\n        super();\n    }\n\n    public write(writer: Writer): void {\n        const noSerdeLayer = !!writer.customConfig?.noSerdeLayer;\n        const useBigInt = !!writer.customConfig?.useBigInt;\n        switch (this.internalType.type) {\n            case \"array\": {\n                this.writeIterable({ writer, iterable: this.internalType });\n                break;\n            }\n            case \"blob\": {\n                if (noSerdeLayer) {\n                    writer.writeNode(TypeLiteral.string(this.internalType.value));\n                    return;\n                }\n                writer.write(\"new Blob([\");\n                writer.writeNode(TypeLiteral.string(this.internalType.value));\n                writer.write(\"])\");\n                break;\n            }\n            case \"boolean\": {\n                writer.write(this.internalType.value.toString());\n                break;\n            }\n            case \"bigint\": {\n                if (useBigInt) {\n                    writer.write(`BigInt(\"${this.internalType.value.toString()}\")`);\n                    return;\n                }\n                writer.write(`\"${this.internalType.value.toString()}\"`);\n                return;\n            }\n            case \"datetime\": {\n                if (noSerdeLayer) {\n                    writer.writeNode(TypeLiteral.string(this.internalType.value));\n                    return;\n                }\n                writer.write(\"new Date(\");\n                writer.writeNode(TypeLiteral.string(this.internalType.value));\n                writer.write(\")\");\n                break;\n            }\n            case \"number\": {\n                writer.write(this.internalType.value.toString());\n                break;\n            }\n            case \"object\": {\n                this.writeObject({ writer, object: this.internalType });\n                break;\n            }\n            case \"record\": {\n                this.writeRecord({ writer, record: this.internalType });\n                break;\n            }\n            case \"reference\": {\n                writer.writeNode(this.internalType.value);\n                break;\n            }\n            case \"set\": {\n                if (noSerdeLayer || this.isSetOfObjects()) {\n                    writer.writeNode(TypeLiteral.array({ values: this.internalType.values }));\n                    return;\n                }\n                writer.write(\"new Set(\");\n                this.writeIterable({ writer, iterable: this.internalType });\n                writer.write(\")\");\n                break;\n            }\n            case \"string\": {\n                if (this.internalType.value.includes(\"\\n\")) {\n                    this.writeStringWithBackticks({ writer, value: this.internalType.value });\n                } else {\n                    writer.write(`\"${this.internalType.value.replaceAll('\"', '\\\\\"')}\"`);\n                }\n                break;\n            }\n            case \"tuple\": {\n                this.writeIterable({ writer, iterable: this.internalType });\n                break;\n            }\n            case \"unknown\": {\n                this.writeUnknown({ writer, value: this.internalType.value });\n                break;\n            }\n            case \"null\": {\n                writer.write(\"null\");\n                break;\n            }\n            case \"nop\":\n                break;\n            default:\n                assertNever(this.internalType);\n        }\n    }\n\n    public isObject(): this is Object_ {\n        return (this.internalType as Object_).type === \"object\";\n    }\n\n    public asObjectOrThrow(): Object_ {\n        if (this.isObject()) {\n            return this.internalType as Object_;\n        }\n        throw new Error(\"Internal error; ts.TypeLiteral is not an object\");\n    }\n\n    private isSet(): this is Set_ {\n        return (this.internalType as Set_).type === \"set\";\n    }\n\n    private asSetOrThrow(): Set_ {\n        if (this.isSet()) {\n            return this.internalType as Set_;\n        }\n        throw new Error(\"Internal error; ts.TypeLiteral is not a set\");\n    }\n\n    private isSetOfObjects(): boolean {\n        return this.isSet() && this.asSetOrThrow().values.every((value) => value.isObject());\n    }\n\n    private writeStringWithBackticks({ writer, value }: { writer: Writer; value: string }): void {\n        writer.write(\"`\");\n        const parts = value.split(\"\\n\");\n        const head = parts[0] + \"\\n\";\n        const tail = parts.slice(1).join(\"\\n\");\n        writer.write(head.replaceAll(\"`\", \"\\\\`\"));\n        writer.writeNoIndent(tail.replaceAll(\"`\", \"\\\\`\"));\n        writer.write(\"`\");\n    }\n\n    private writeIterable({ writer, iterable }: { writer: Writer; iterable: Array_ | Tuple | Set_ }): void {\n        const values = filterNopValues({ values: iterable.values });\n        if (values.length === 0) {\n            writer.write(\"[]\");\n            return;\n        }\n\n        writer.writeLine(\"[\");\n        writer.indent();\n        for (const value of values) {\n            value.write(writer);\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"]\");\n    }\n\n    private writeRecord({ writer, record }: { writer: Writer; record: Record_ }): void {\n        const entries = filterNopRecordEntries({ entries: record.entries });\n        if (entries.length === 0) {\n            writer.write(\"{}\");\n            return;\n        }\n\n        writer.writeLine(\"{\");\n        writer.indent();\n        for (const entry of entries) {\n            entry.key.write(writer);\n            writer.write(\": \");\n            entry.value.write(writer);\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n\n    private writeObject({ writer, object }: { writer: Writer; object: Object_ }): void {\n        const fields = filterNopObjectFields({ fields: object.fields });\n        if (fields.length === 0) {\n            writer.write(\"{}\");\n            return;\n        }\n\n        writer.writeLine(\"{\");\n        writer.indent();\n        for (const field of fields) {\n            writer.write(`${field.name}: `);\n            field.value.write(writer);\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n\n    /* Static factory methods for creating a TypeLiteral */\n    public static array({ values }: { values: TypeLiteral[] }): TypeLiteral {\n        return new this({\n            type: \"array\",\n            values\n        });\n    }\n\n    public static bigint(value: bigint): TypeLiteral {\n        return new this({ type: \"bigint\", value });\n    }\n\n    public static blob(value: string): TypeLiteral {\n        return new this({ type: \"blob\", value });\n    }\n\n    public static boolean(value: boolean): TypeLiteral {\n        return new this({ type: \"boolean\", value });\n    }\n\n    public static datetime(value: string): TypeLiteral {\n        return new this({ type: \"datetime\", value });\n    }\n\n    public static number(value: number): TypeLiteral {\n        return new this({ type: \"number\", value });\n    }\n\n    public static object({ fields }: { fields: ObjectField[] }): TypeLiteral {\n        return new this({\n            type: \"object\",\n            fields\n        });\n    }\n\n    public static record({ entries }: { entries: RecordEntry[] }): TypeLiteral {\n        return new this({\n            type: \"record\",\n            entries\n        });\n    }\n\n    public static reference(value: AstNode): TypeLiteral {\n        return new this({\n            type: \"reference\",\n            value\n        });\n    }\n\n    public static set({ values }: { values: TypeLiteral[] }): TypeLiteral {\n        return new this({\n            type: \"set\",\n            values\n        });\n    }\n\n    public static string(value: string): TypeLiteral {\n        return new this({\n            type: \"string\",\n            value\n        });\n    }\n\n    public static tuple({ values }: { values: TypeLiteral[] }): TypeLiteral {\n        return new this({\n            type: \"tuple\",\n            values\n        });\n    }\n\n    public static unknown(value: unknown): TypeLiteral {\n        return new this({ type: \"unknown\", value });\n    }\n\n    public static null(): TypeLiteral {\n        return new this({ type: \"null\" });\n    }\n\n    public static nop(): TypeLiteral {\n        return new this({ type: \"nop\" });\n    }\n\n    public static isNop(typeLiteral: TypeLiteral): boolean {\n        return typeLiteral.internalType.type === \"nop\";\n    }\n\n    private writeUnknown({ writer, value }: { writer: Writer; value: unknown }): void {\n        switch (typeof value) {\n            case \"boolean\":\n                writer.write(value.toString());\n                return;\n            case \"string\":\n                writer.write(value.includes('\"') ? `\\`${value}\\`` : `\"${value}\"`);\n                return;\n            case \"number\":\n                writer.write(value.toString());\n                return;\n            case \"object\":\n                if (value == null) {\n                    writer.write(\"null\");\n                    return;\n                }\n                if (Array.isArray(value)) {\n                    this.writeUnknownArray({ writer, value });\n                    return;\n                }\n                this.writeUnknownObject({ writer, value });\n                return;\n            default:\n                throw new Error(`Internal error; unsupported unknown type: ${typeof value}`);\n        }\n    }\n\n    private writeUnknownArray({\n        writer,\n        value\n    }: {\n        writer: Writer;\n        // biome-ignore lint/suspicious/noExplicitAny: allow\n        value: any[];\n    }): void {\n        if (value.length === 0) {\n            writer.write(\"[]\");\n            return;\n        }\n        writer.writeLine(\"[\");\n        writer.indent();\n        for (const element of value) {\n            writer.writeNode(TypeLiteral.unknown(element));\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"]\");\n    }\n\n    private writeUnknownObject({ writer, value }: { writer: Writer; value: object }): void {\n        const entries = Object.entries(value);\n        if (entries.length === 0) {\n            writer.write(\"{}\");\n            return;\n        }\n        writer.writeLine(\"{\");\n        writer.indent();\n        for (const [key, val] of entries) {\n            writer.write(`${key}: `);\n            writer.writeNode(TypeLiteral.unknown(val));\n            writer.writeLine(\",\");\n        }\n        writer.dedent();\n        writer.write(\"}\");\n    }\n}\n\nfunction filterNopObjectFields({ fields }: { fields: ObjectField[] }): ObjectField[] {\n    return fields.filter((field) => !TypeLiteral.isNop(field.value));\n}\n\nfunction filterNopRecordEntries({ entries }: { entries: RecordEntry[] }): RecordEntry[] {\n    return entries.filter((entry) => !TypeLiteral.isNop(entry.key) && !TypeLiteral.isNop(entry.value));\n}\n\nfunction filterNopValues({ values }: { values: TypeLiteral[] }): TypeLiteral[] {\n    return values.filter((value) => !TypeLiteral.isNop(value));\n}\n","import { AstNode, Writer } from \"./core/index.js\";\n\nexport declare namespace Variable {\n    interface Args {\n        /* Whether to export */\n        export?: boolean;\n        /* Whether to label as const */\n        const?: boolean;\n        /* The name of the variable */\n        name: string;\n        /* The initializer for the variable */\n        initializer: AstNode;\n    }\n}\n\nexport class Variable extends AstNode {\n    public constructor(private readonly args: Variable.Args) {\n        super();\n    }\n\n    public write(writer: Writer): void {\n        if (this.args.export) {\n            writer.write(\"export \");\n        }\n        if (this.args.const) {\n            writer.write(\"const \");\n        } else {\n            writer.write(\"let \");\n        }\n        writer.write(`${this.args.name} = `);\n        writer.writeNode(this.args.initializer);\n    }\n}\n","export * from \"./constructNpmPackage.js\";\nexport { getNamespaceExport, type ResolvedNaming, resolveNaming } from \"./getNamespaceExport.js\";\n","import { FernGeneratorExec } from \"@fern-fern/generator-exec-sdk\";\n\nimport { type NpmPackage } from \"../NpmPackage.js\";\nimport { PublishInfo } from \"../PublishInfo.js\";\n\nexport interface constructNpmPackageArgs {\n    packageName?: string;\n    version?: string;\n    repoUrl?: string;\n    publishInfo?: PublishInfo;\n    licenseConfig?: FernGeneratorExec.LicenseConfig;\n    isPackagePrivate: boolean;\n}\n\nexport function constructNpmPackageFromArgs(args: constructNpmPackageArgs): NpmPackage | undefined {\n    const { packageName, version, repoUrl, publishInfo, licenseConfig, isPackagePrivate } = args;\n    if (packageName == null || version == null) {\n        return undefined;\n    }\n\n    return {\n        packageName,\n        version,\n        private: isPackagePrivate,\n        publishInfo,\n        license: licenseFromLicenseConfig(licenseConfig),\n        repoUrl: getRepoUrlFromUrl(repoUrl)\n    };\n}\n\nexport function constructNpmPackage({\n    generatorConfig,\n    isPackagePrivate\n}: {\n    generatorConfig: FernGeneratorExec.GeneratorConfig;\n    isPackagePrivate: boolean;\n}): NpmPackage | undefined {\n    const outputMode = generatorConfig.output.mode;\n    switch (outputMode.type) {\n        case \"downloadFiles\":\n            return undefined;\n        case \"publish\":\n            return {\n                packageName: outputMode.registriesV2.npm.packageName,\n                version: outputMode.version,\n                private: isPackagePrivate,\n                publishInfo: {\n                    registryUrl: outputMode.registriesV2.npm.registryUrl,\n                    token: outputMode.registriesV2.npm.token\n                },\n                license: undefined,\n                repoUrl: undefined\n            };\n        case \"github\":\n            if (outputMode.publishInfo != null && outputMode.publishInfo.type !== \"npm\") {\n                throw new Error(\n                    `Expected to receive npm publish info but received ${outputMode.publishInfo.type} instead`\n                );\n            }\n            return {\n                packageName: outputMode.publishInfo != null ? outputMode.publishInfo.packageName : \"\",\n                version: outputMode.version,\n                private: isPackagePrivate,\n                publishInfo: undefined,\n                repoUrl: getRepoUrlFromUrl(outputMode.repoUrl),\n                license: generatorConfig.license?._visit({\n                    basic: (basic) => basic.id,\n                    custom: (custom) => `See ${custom.filename}`,\n                    _other: () => {\n                        return undefined;\n                    }\n                })\n            };\n        default:\n            throw new Error(`Encountered unknown output mode: ${outputMode}`);\n    }\n}\n\nexport function getRepoUrlFromUrl(repoUrl: string | undefined): string | undefined {\n    if (repoUrl == null) {\n        return undefined;\n    }\n    if (repoUrl.startsWith(\"https://github.com/\")) {\n        // Maybe temporary. Simplifying output so local generation matches remote generation.\n        // return `github:${removeGitSuffix(repoUrl).replace(\"https://github.com/\", \"\")}`;\n        return `git+${repoUrl}`;\n    }\n    if (repoUrl.startsWith(\"ssh://github.com/\")) {\n        return `github:${removeGitSuffix(repoUrl).replace(\"ssh://github.com/\", \"\")}`;\n    }\n    if (repoUrl.startsWith(\"https://bitbucket.org/\")) {\n        return `bitbucket:${removeGitSuffix(repoUrl).replace(\"https://bitbucket.org/\", \"\")}`;\n    }\n    if (repoUrl.startsWith(\"ssh://bitbucket.org/\")) {\n        return `bitbucket:${removeGitSuffix(repoUrl).replace(\"ssh://bitbucket.org/\", \"\")}`;\n    }\n    if (repoUrl.startsWith(\"https://gitlab.com/\")) {\n        return `gitlab:${removeGitSuffix(repoUrl).replace(\"https://gitlab.com/\", \"\")}`;\n    }\n    if (repoUrl.startsWith(\"ssh://gitlab.com/\")) {\n        return `gitlab:${removeGitSuffix(repoUrl).replace(\"ssh://gitlab.com/\", \"\")}`;\n    }\n    if (!repoUrl.startsWith(\"git+\")) {\n        repoUrl = `git+${repoUrl}`;\n    }\n    if (!repoUrl.endsWith(\".git\")) {\n        repoUrl = `${repoUrl}.git`;\n    }\n    return repoUrl;\n}\n\nfunction removeGitSuffix(repoUrl: string): string {\n    if (repoUrl.endsWith(\".git\")) {\n        return repoUrl.slice(0, -4);\n    }\n    return repoUrl;\n}\n\nfunction licenseFromLicenseConfig(licenseConfig: FernGeneratorExec.LicenseConfig | undefined): string | undefined {\n    return licenseConfig?._visit({\n        basic: (basic) => basic.id,\n        custom: (custom) => `See ${custom.filename}`,\n        _other: () => undefined\n    });\n}\n","import { camelCase, upperFirst } from \"lodash-es\";\n\nexport function getNamespaceExport({\n    organization,\n    workspaceName,\n    namespaceExport,\n    naming\n}: {\n    organization: string;\n    workspaceName: string;\n    namespaceExport?: string;\n    naming?: string | { namespace?: string };\n}): string {\n    const namingNamespace = typeof naming === \"string\" ? naming : naming?.namespace;\n    return (\n        namingNamespace ??\n        namespaceExport ??\n        `${upperFirst(camelCase(organization))}${upperFirst(camelCase(workspaceName))}`\n    );\n}\n\nexport interface ResolvedNaming {\n    namespace: string;\n    client: string;\n    error: string;\n    timeoutError: string;\n    environment: string;\n    environmentUrls: string;\n    version: string;\n}\n\nexport function resolveNaming({\n    namespaceExport,\n    naming\n}: {\n    namespaceExport: string;\n    naming?:\n        | string\n        | {\n              namespace?: string;\n              client?: string;\n              error?: string;\n              timeoutError?: string;\n              environment?: string;\n              environmentUrls?: string;\n              version?: string;\n          };\n}): ResolvedNaming {\n    // Normalize string shorthand to object form\n    const namingObj = typeof naming === \"string\" ? {} : naming;\n    // When naming config is explicitly provided, PascalCase the namespace for deriving\n    // default suffix names (e.g., namespace: \"xai\" → XaiClient). When no naming config\n    // is provided, use namespaceExport as-is to preserve backwards compatibility\n    // (e.g., namespaceExport: \"MySDK\" → MySDKClient).\n    const suffixBase = naming != null ? upperFirst(camelCase(namespaceExport)) : namespaceExport;\n    return {\n        namespace: namespaceExport,\n        client: namingObj?.client ?? `${suffixBase}Client`,\n        error: namingObj?.error ?? `${suffixBase}Error`,\n        timeoutError: namingObj?.timeoutError ?? `${suffixBase}TimeoutError`,\n        environment: namingObj?.environment ?? `${suffixBase}Environment`,\n        environmentUrls: namingObj?.environmentUrls ?? `${suffixBase}EnvironmentUrls`,\n        version: namingObj?.version ?? `${suffixBase}Version`\n    };\n}\n","import { DiscriminatedUnionTypeInstance, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { ts } from \"@fern-api/typescript-ast\";\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nconst UNION_VALUE_KEY = \"value\";\n\nexport declare namespace DynamicTypeLiteralMapper {\n    interface Args {\n        typeReference: FernIr.dynamic.TypeReference;\n        value: unknown;\n        as?: ConvertedAs;\n        convertOpts?: ConvertOpts;\n    }\n\n    // Identifies what the type is being converted as, which sometimes influences how\n    // the type is instantiated.\n    type ConvertedAs = \"key\";\n\n    export type ConvertOpts = {\n        isForRequest?: boolean;\n        isForResponse?: boolean;\n    };\n}\n\nexport class DynamicTypeLiteralMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public convert(args: DynamicTypeLiteralMapper.Args): ts.TypeLiteral {\n        const convertOpts = args.convertOpts;\n        // eslint-disable-next-line eqeqeq\n        if (args.value === null) {\n            if (this.context.isNullable(args.typeReference)) {\n                return ts.TypeLiteral.null();\n            }\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Expected non-null value, but got null\"\n            });\n            return ts.TypeLiteral.nop();\n        }\n        if (args.value === undefined) {\n            return ts.TypeLiteral.nop();\n        }\n        switch (args.typeReference.type) {\n            case \"list\":\n                return this.convertList({ list: args.typeReference.value, value: args.value, convertOpts });\n            case \"literal\":\n                return this.convertLiteral({ literalType: args.typeReference.value, value: args.value, convertOpts });\n            case \"map\":\n                return this.convertMap({ map: args.typeReference, value: args.value, convertOpts });\n            case \"named\": {\n                const named = this.context.resolveNamedType({ typeId: args.typeReference.value });\n                if (named == null) {\n                    return ts.TypeLiteral.nop();\n                }\n                return this.convertNamed({ named, value: args.value, as: args.as, convertOpts });\n            }\n            case \"optional\":\n                return this.convert({\n                    typeReference: args.typeReference.value,\n                    value: args.value,\n                    as: args.as,\n                    convertOpts\n                });\n            case \"nullable\":\n                return this.convert({\n                    typeReference: args.typeReference.value,\n                    value: args.value,\n                    as: args.as,\n                    convertOpts\n                });\n            case \"primitive\":\n                return this.convertPrimitive({\n                    primitive: args.typeReference.value,\n                    value: args.value,\n                    as: args.as,\n                    convertOpts\n                });\n            case \"set\":\n                return this.convertSet({ set: args.typeReference.value, value: args.value, convertOpts });\n            case \"unknown\":\n                return this.convertUnknown({ value: args.value, convertOpts });\n            default:\n                assertNever(args.typeReference);\n        }\n    }\n\n    private convertLiteral({\n        literalType,\n        value\n    }: {\n        literalType: FernIr.dynamic.LiteralType;\n        value: unknown;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        switch (literalType.type) {\n            case \"boolean\": {\n                const bool = this.context.getValueAsBoolean({ value });\n                if (bool == null) {\n                    return ts.TypeLiteral.nop();\n                }\n                return ts.TypeLiteral.boolean(bool);\n            }\n            case \"string\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return ts.TypeLiteral.nop();\n                }\n                return ts.TypeLiteral.string(str);\n            }\n            default:\n                assertNever(literalType);\n        }\n    }\n\n    private convertList({\n        list,\n        value,\n        convertOpts\n    }: {\n        list: FernIr.dynamic.TypeReference;\n        value: unknown;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return ts.TypeLiteral.nop();\n        }\n        return ts.TypeLiteral.array({\n            values: value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: list, value: v, convertOpts });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertSet({\n        set,\n        value,\n        convertOpts\n    }: {\n        set: FernIr.dynamic.TypeReference;\n        value: unknown;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        if (!Array.isArray(value)) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected array but got: ${typeof value}`\n            });\n            return ts.TypeLiteral.nop();\n        }\n        return ts.TypeLiteral.set({\n            values: value.map((v, index) => {\n                this.context.errors.scope({ index });\n                try {\n                    return this.convert({ typeReference: set, value: v, convertOpts });\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertMap({\n        map,\n        value,\n        convertOpts\n    }: {\n        map: FernIr.dynamic.MapType;\n        value: unknown;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        if (typeof value !== \"object\" || value == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected object but got: ${value == null ? \"null\" : typeof value}`\n            });\n            return ts.TypeLiteral.nop();\n        }\n        return ts.TypeLiteral.record({\n            entries: Object.entries(value).map(([key, value]) => {\n                this.context.errors.scope(key);\n                try {\n                    return {\n                        key: this.convert({ typeReference: map.key, value: key, as: \"key\", convertOpts }),\n                        value: this.convert({ typeReference: map.value, value, convertOpts })\n                    };\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private convertNamed({\n        named,\n        value,\n        as,\n        convertOpts\n    }: {\n        named: FernIr.dynamic.NamedType;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        switch (named.type) {\n            case \"alias\": {\n                if (this.context.customConfig?.useBrandedStringAliases) {\n                    return ts.TypeLiteral.reference(\n                        ts.codeblock((writer) => {\n                            writer.writeNode(\n                                ts.reference({\n                                    name: this.context.namespaceExport,\n                                    importFrom: this.context.getModuleImport(),\n                                    memberName: this.context.getFullyQualifiedReference({\n                                        declaration: named.declaration\n                                    })\n                                })\n                            );\n                            writer.write(\"(\");\n                            writer.writeNode(\n                                this.convert({ typeReference: named.typeReference, value, as, convertOpts })\n                            );\n                            writer.write(\")\");\n                        })\n                    );\n                }\n                return this.convert({ typeReference: named.typeReference, value, as, convertOpts });\n            }\n            case \"discriminatedUnion\":\n                return this.convertDiscriminatedUnion({\n                    discriminatedUnion: named,\n                    value,\n                    convertOpts\n                });\n            case \"enum\":\n                return this.convertEnum({ enum_: named, value, convertOpts });\n            case \"object\":\n                return this.convertObject({ object_: named, value, convertOpts });\n            case \"undiscriminatedUnion\":\n                return this.convertUndiscriminatedUnion({ undiscriminatedUnion: named, value, convertOpts });\n            default:\n                assertNever(named);\n        }\n    }\n\n    private convertDiscriminatedUnion({\n        discriminatedUnion,\n        value,\n        convertOpts\n    }: {\n        discriminatedUnion: FernIr.dynamic.DiscriminatedUnionType;\n        value: unknown;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        const discriminatedUnionTypeInstance = this.context.resolveDiscriminatedUnionTypeInstance({\n            discriminatedUnion,\n            value\n        });\n        if (discriminatedUnionTypeInstance == null) {\n            return ts.TypeLiteral.nop();\n        }\n        const unionVariant = discriminatedUnionTypeInstance.singleDiscriminatedUnionType;\n        const unionProperties = this.convertDiscriminatedUnionProperties({\n            discriminatedUnionTypeInstance,\n            unionVariant,\n            convertOpts\n        });\n        if (unionProperties == null) {\n            return ts.TypeLiteral.nop();\n        }\n        if (this.context.customConfig?.includeUtilsOnUnionMembers) {\n            return ts.TypeLiteral.reference(\n                ts.codeblock((writer) => {\n                    writer.writeNode(\n                        ts.invokeMethod({\n                            on: ts.reference({\n                                name: this.context.namespaceExport,\n                                importFrom: this.context.getModuleImport(),\n                                memberName: this.context.getFullyQualifiedReference({\n                                    declaration: discriminatedUnion.declaration\n                                })\n                            }),\n                            method: this.context.getMethodName(unionVariant.discriminantValue.name),\n                            arguments_: this.convertDiscriminatedUnionUtilsArgs({\n                                discriminatedUnionTypeInstance,\n                                unionVariant,\n                                unionProperties,\n                                convertOpts\n                            })\n                        })\n                    );\n                })\n            );\n        }\n        const discriminantProperty = {\n            name: this.context.getPropertyName(discriminatedUnion.discriminant.name),\n            value: ts.TypeLiteral.string(unionVariant.discriminantValue.wireValue)\n        };\n        return ts.TypeLiteral.object({\n            fields: [discriminantProperty, ...unionProperties]\n        });\n    }\n\n    private convertDiscriminatedUnionProperties({\n        discriminatedUnionTypeInstance,\n        unionVariant,\n        convertOpts\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        unionVariant: FernIr.dynamic.SingleDiscriminatedUnionType;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.ObjectField[] | undefined {\n        const baseFields = this.getBaseFields({\n            discriminatedUnionTypeInstance,\n            singleDiscriminatedUnionType: unionVariant\n        });\n        switch (unionVariant.type) {\n            case \"samePropertiesAsObject\": {\n                const named = this.context.resolveNamedType({\n                    typeId: unionVariant.typeId\n                });\n                if (named == null) {\n                    return undefined;\n                }\n                const converted = this.convertNamed({\n                    named,\n                    value: discriminatedUnionTypeInstance.value,\n                    convertOpts\n                });\n                if (!converted.isObject()) {\n                    this.context.errors.add({\n                        severity: Severity.Critical,\n                        message: \"Internal error; expected union value to be an object\"\n                    });\n                    return undefined;\n                }\n                const object_ = converted.asObjectOrThrow();\n                return [...baseFields, ...object_.fields];\n            }\n            case \"singleProperty\": {\n                try {\n                    this.context.errors.scope(unionVariant.discriminantValue.wireValue);\n                    const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n                    if (record == null) {\n                        return [\n                            ...baseFields,\n                            {\n                                name: UNION_VALUE_KEY,\n                                value: this.convert({\n                                    typeReference: unionVariant.typeReference,\n                                    value: discriminatedUnionTypeInstance.value,\n                                    convertOpts\n                                })\n                            }\n                        ];\n                    }\n                    return [\n                        ...baseFields,\n                        {\n                            name: this.context.getPropertyName(unionVariant.discriminantValue.name),\n                            value: this.convert({\n                                typeReference: unionVariant.typeReference,\n                                value: record[unionVariant.discriminantValue.wireValue],\n                                convertOpts\n                            })\n                        }\n                    ];\n                } finally {\n                    this.context.errors.unscope();\n                }\n            }\n            case \"noProperties\":\n                return baseFields;\n            default:\n                assertNever(unionVariant);\n        }\n    }\n\n    private convertDiscriminatedUnionUtilsArgs({\n        discriminatedUnionTypeInstance,\n        unionVariant,\n        unionProperties,\n        convertOpts\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        unionVariant: FernIr.dynamic.SingleDiscriminatedUnionType;\n        unionProperties: ts.ObjectField[];\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.AstNode[] {\n        if (unionVariant.type === \"singleProperty\") {\n            const record = this.context.getRecord(discriminatedUnionTypeInstance.value);\n            if (record == null && unionProperties.length === 1) {\n                // The union is a single value without any base properties, e.g.\n                return [\n                    this.convert({\n                        typeReference: unionVariant.typeReference,\n                        value: discriminatedUnionTypeInstance.value,\n                        convertOpts\n                    })\n                ];\n            }\n        }\n        return unionProperties.length > 0 ? [ts.TypeLiteral.object({ fields: unionProperties })] : [];\n    }\n\n    private getBaseFields({\n        discriminatedUnionTypeInstance,\n        singleDiscriminatedUnionType,\n        convertOpts\n    }: {\n        discriminatedUnionTypeInstance: DiscriminatedUnionTypeInstance;\n        singleDiscriminatedUnionType: FernIr.dynamic.SingleDiscriminatedUnionType;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.ObjectField[] {\n        const properties = this.context.associateByWireValue({\n            parameters: singleDiscriminatedUnionType.properties ?? [],\n            values: this.context.getRecord(discriminatedUnionTypeInstance.value) ?? {},\n\n            // We're only selecting the base properties here. The rest of the properties\n            // are handled by the union variant.\n            ignoreMissingParameters: true\n        });\n        return properties.map((property) => {\n            this.context.errors.scope(property.name.wireValue);\n            try {\n                return {\n                    name: this.context.getPropertyName(property.name.name),\n                    value: this.convert({ ...property, convertOpts })\n                };\n            } finally {\n                this.context.errors.unscope();\n            }\n        });\n    }\n\n    private convertObject({\n        object_,\n        value,\n        convertOpts\n    }: {\n        object_: FernIr.dynamic.ObjectType;\n        value: unknown;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        const properties = this.context.associateByWireValue({\n            parameters: this.filterReadWriteProperties(object_.properties, convertOpts),\n            values: this.context.getRecord(value) ?? {}\n        });\n        return ts.TypeLiteral.object({\n            fields: properties.map((property) => {\n                this.context.errors.scope(property.name.wireValue);\n                try {\n                    return {\n                        name: this.context.getPropertyName(property.name.name),\n                        value: this.convert({ ...property, convertOpts })\n                    };\n                } finally {\n                    this.context.errors.unscope();\n                }\n            })\n        });\n    }\n\n    private filterReadWriteProperties(\n        properties: FernIr.dynamic.NamedParameter[],\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts\n    ): FernIr.dynamic.NamedParameter[] {\n        if (this.context.customConfig?.experimentalGenerateReadWriteOnlyTypes !== true) {\n            return properties;\n        }\n        if (typeof convertOpts === \"undefined\") {\n            return properties;\n        }\n        if (convertOpts.isForRequest) {\n            properties = properties.filter(\n                (prop) => prop.propertyAccess !== FernIr.dynamic.ObjectPropertyAccess.ReadOnly\n            );\n        }\n        if (convertOpts.isForResponse) {\n            properties = properties.filter(\n                (prop) => prop.propertyAccess !== FernIr.dynamic.ObjectPropertyAccess.WriteOnly\n            );\n        }\n        return properties;\n    }\n\n    private convertEnum({\n        enum_,\n        value\n    }: {\n        enum_: FernIr.dynamic.EnumType;\n        value: unknown;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        const enumValue = this.getEnumValue({ enum_, value });\n        if (enumValue == null) {\n            return ts.TypeLiteral.nop();\n        }\n        return ts.TypeLiteral.string(enumValue);\n    }\n\n    private getEnumValue({ enum_, value }: { enum_: FernIr.dynamic.EnumType; value: unknown }): string | undefined {\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected enum value string, got: ${typeof value}`\n            });\n            return undefined;\n        }\n        const enumValue = enum_.values.find((v) => v.wireValue === value);\n        if (enumValue == null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `An enum value named \"${value}\" does not exist in this context`\n            });\n            return undefined;\n        }\n        return value;\n    }\n\n    private convertUndiscriminatedUnion({\n        undiscriminatedUnion,\n        value,\n        convertOpts\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        const result = this.findMatchingUndiscriminatedUnionType({\n            undiscriminatedUnion,\n            value,\n            convertOpts\n        });\n        if (result == null) {\n            return ts.TypeLiteral.nop();\n        }\n        return result;\n    }\n\n    private findMatchingUndiscriminatedUnionType({\n        undiscriminatedUnion,\n        value,\n        convertOpts\n    }: {\n        undiscriminatedUnion: FernIr.dynamic.UndiscriminatedUnionType;\n        value: unknown;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral | undefined {\n        for (const typeReference of undiscriminatedUnion.types) {\n            const errorsBefore = this.context.errors.size();\n            try {\n                const result = this.convert({ typeReference, value, convertOpts });\n                if (ts.TypeLiteral.isNop(result)) {\n                    this.context.errors.truncate(errorsBefore);\n                    continue;\n                }\n                return result;\n            } catch (e) {\n                this.context.errors.truncate(errorsBefore);\n                continue;\n            }\n        }\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: `None of the types in the undiscriminated union matched the given \"${typeof value}\" value`\n        });\n        return undefined;\n    }\n\n    private convertUnknown({\n        value,\n        convertOpts\n    }: {\n        value: unknown;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        return ts.TypeLiteral.unknown(value);\n    }\n\n    private convertPrimitive({\n        primitive,\n        value,\n        as,\n        convertOpts\n    }: {\n        primitive: FernIr.dynamic.PrimitiveTypeV1;\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n        convertOpts?: DynamicTypeLiteralMapper.ConvertOpts;\n    }): ts.TypeLiteral {\n        switch (primitive) {\n            case \"INTEGER\":\n            case \"UINT\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return ts.TypeLiteral.nop();\n                }\n                return ts.TypeLiteral.number(num);\n            }\n            case \"LONG\":\n            case \"UINT_64\": {\n                const num = this.getValueAsNumber({ value, as });\n                if (num == null) {\n                    return ts.TypeLiteral.nop();\n                }\n                if (this.context.customConfig?.useBigInt) {\n                    return ts.TypeLiteral.bigint(BigInt(num));\n                }\n                return ts.TypeLiteral.number(num);\n            }\n            case \"FLOAT\":\n            case \"DOUBLE\": {\n                const num = this.getValueAsNumber({ value });\n                if (num == null) {\n                    return ts.TypeLiteral.nop();\n                }\n                return ts.TypeLiteral.number(num);\n            }\n            case \"BOOLEAN\": {\n                const bool = this.getValueAsBoolean({ value, as });\n                if (bool == null) {\n                    return ts.TypeLiteral.nop();\n                }\n                return ts.TypeLiteral.boolean(bool);\n            }\n            case \"BASE_64\":\n            case \"DATE\":\n            case \"UUID\":\n            case \"STRING\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return ts.TypeLiteral.nop();\n                }\n                return ts.TypeLiteral.string(str);\n            }\n            case \"DATE_TIME\": {\n                const str = this.context.getValueAsString({ value });\n                if (str == null) {\n                    return ts.TypeLiteral.nop();\n                }\n                return ts.TypeLiteral.datetime(str);\n            }\n            case \"BIG_INTEGER\": {\n                const bigInt = this.context.getValueAsString({ value });\n                if (bigInt == null) {\n                    return ts.TypeLiteral.nop();\n                }\n                if (this.context.customConfig?.useBigInt) {\n                    return ts.TypeLiteral.bigint(BigInt(bigInt));\n                }\n                return ts.TypeLiteral.string(bigInt);\n            }\n            default:\n                assertNever(primitive);\n        }\n    }\n\n    private getValueAsNumber({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): number | undefined {\n        const num = as === \"key\" ? (typeof value === \"string\" ? Number(value) : value) : value;\n        return this.context.getValueAsNumber({ value: num });\n    }\n\n    private getValueAsBoolean({\n        value,\n        as\n    }: {\n        value: unknown;\n        as?: DynamicTypeLiteralMapper.ConvertedAs;\n    }): boolean | undefined {\n        const bool =\n            as === \"key\" ? (typeof value === \"string\" ? value === \"true\" : value === \"false\" ? false : value) : value;\n        return this.context.getValueAsBoolean({ value: bool });\n    }\n}\n","export * as FernIr from \"./api/index.mjs\";\nexport { FernIrError, FernIrTimeoutError } from \"./errors/index.mjs\";\nexport * from \"./exports.mjs\";\n","export * from \"./resources/index.mjs\";\n","export * as commons from \"./commons/index.mjs\";\nexport * from \"./commons/types/index.mjs\";\nexport * as dynamic from \"./dynamic/index.mjs\";\nexport * as generatorExec from \"./generatorExec/index.mjs\";\n","export * from \"./types/index.mjs\";\n","export * from \"./resources/index.mjs\";\n","export * as auth from \"./auth/index.mjs\";\nexport * from \"./auth/types/index.mjs\";\nexport * as commons from \"./commons/index.mjs\";\nexport * from \"./commons/types/index.mjs\";\nexport * as declaration from \"./declaration/index.mjs\";\nexport * from \"./declaration/types/index.mjs\";\nexport * as endpoints from \"./endpoints/index.mjs\";\nexport * from \"./endpoints/types/index.mjs\";\nexport * as environment from \"./environment/index.mjs\";\nexport * from \"./environment/types/index.mjs\";\nexport * as http from \"./http/index.mjs\";\nexport * from \"./http/types/index.mjs\";\nexport * as ir from \"./ir/index.mjs\";\nexport * from \"./ir/types/index.mjs\";\nexport * as snippets from \"./snippets/index.mjs\";\nexport * from \"./snippets/types/index.mjs\";\nexport * as types from \"./types/index.mjs\";\nexport * from \"./types/types/index.mjs\";\nexport * as variables from \"./variables/index.mjs\";\nexport * from \"./variables/types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nexport const HttpMethod = {\n    Get: \"GET\",\n    Post: \"POST\",\n    Put: \"PUT\",\n    Patch: \"PATCH\",\n    Delete: \"DELETE\",\n    Head: \"HEAD\",\n};\n","export * from \"./types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nexport const ErrorSeverity = {\n    Critical: \"CRITICAL\",\n    Warning: \"WARNING\",\n};\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nexport const ObjectPropertyAccess = {\n    ReadOnly: \"READ_ONLY\",\n    WriteOnly: \"WRITE_ONLY\",\n};\n","// This file was auto-generated by Fern from our API Definition.\nexport const PrimitiveTypeV1 = {\n    Integer: \"INTEGER\",\n    /**\n     * Within the range -2^53 to 2^53 */\n    Long: \"LONG\",\n    Uint: \"UINT\",\n    Uint64: \"UINT_64\",\n    Float: \"FLOAT\",\n    Double: \"DOUBLE\",\n    Boolean: \"BOOLEAN\",\n    String: \"STRING\",\n    Date: \"DATE\",\n    DateTime: \"DATE_TIME\",\n    Uuid: \"UUID\",\n    Base64: \"BASE_64\",\n    BigInteger: \"BIG_INTEGER\",\n};\n","export * from \"./types/index.mjs\";\n","export * from \"./resources/index.mjs\";\n","export * as config from \"./config/index.mjs\";\nexport * from \"./config/types/index.mjs\";\n","export * from \"./types/index.mjs\";\n","// This file was auto-generated by Fern from our API Definition.\nexport const LicenseId = {\n    Mit: \"MIT\",\n    Apache2: \"Apache-2.0\",\n};\n","import { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { ts } from \"@fern-api/typescript-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./DynamicSnippetsGeneratorContext.js\";\n\nexport interface FilePropertyInfo {\n    fileFields: ts.ObjectField[];\n    bodyPropertyFields: ts.ObjectField[];\n}\n\nexport class FilePropertyMapper {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public getFilePropertyInfo({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.FileUploadRequestBody;\n        value: unknown;\n    }): FilePropertyInfo {\n        const result: FilePropertyInfo = {\n            fileFields: [],\n            bodyPropertyFields: []\n        };\n        const record = this.context.getRecord(value) ?? {};\n        for (const property of body.properties) {\n            switch (property.type) {\n                case \"file\":\n                    result.fileFields.push({\n                        name: this.context.getPropertyName(property.name),\n                        value: this.getSingleFileProperty({ property, record })\n                    });\n                    break;\n                case \"fileArray\":\n                    result.fileFields.push({\n                        name: this.context.getPropertyName(property.name),\n                        value: this.getArrayFileProperty({ property, record })\n                    });\n                    break;\n                case \"bodyProperty\":\n                    result.bodyPropertyFields.push({\n                        name: this.context.getPropertyName(property.name.name),\n                        value: this.getBodyProperty({ property, record })\n                    });\n                    break;\n                default:\n                    assertNever(property);\n            }\n        }\n        return result;\n    }\n\n    private getSingleFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.File_;\n        record: Record<string, unknown>;\n    }): ts.TypeLiteral {\n        const fileValue = this.context.getSingleFileValue({ property, record });\n        if (fileValue == null) {\n            return ts.TypeLiteral.nop();\n        }\n        return ts.TypeLiteral.blob(fileValue);\n    }\n\n    private getArrayFileProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.FileUploadRequestBodyProperty.FileArray;\n        record: Record<string, unknown>;\n    }): ts.TypeLiteral {\n        const fileValues = this.context.getFileArrayValues({ property, record });\n        if (fileValues == null) {\n            return ts.TypeLiteral.nop();\n        }\n        return ts.TypeLiteral.array({ values: fileValues.map((value) => ts.TypeLiteral.blob(value)) });\n    }\n\n    private getBodyProperty({\n        property,\n        record\n    }: {\n        property: FernIr.dynamic.NamedParameter;\n        record: Record<string, unknown>;\n    }): ts.TypeLiteral {\n        const bodyPropertyValue = record[property.name.wireValue];\n        if (bodyPropertyValue == null) {\n            return ts.TypeLiteral.nop();\n        }\n        return this.context.dynamicTypeLiteralMapper.convert({\n            typeReference: property.typeReference,\n            value: bodyPropertyValue\n        });\n    }\n}\n","import { Scope, Severity } from \"@fern-api/browser-compatible-base-generator\";\nimport { assertNever } from \"@fern-api/core-utils\";\nimport { FernIr } from \"@fern-api/dynamic-ir-sdk\";\nimport { AstNode, ts } from \"@fern-api/typescript-ast\";\n\nimport { DynamicSnippetsGeneratorContext } from \"./context/DynamicSnippetsGeneratorContext.js\";\nimport { FilePropertyInfo } from \"./context/FilePropertyMapper.js\";\n\nconst CLIENT_VAR_NAME = \"client\";\nconst MAIN_FUNCTION_NAME = \"main\";\nconst STRING_TYPE_REFERENCE: FernIr.dynamic.TypeReference = {\n    type: \"primitive\",\n    value: \"STRING\"\n};\n\nexport class EndpointSnippetGenerator {\n    private context: DynamicSnippetsGeneratorContext;\n\n    constructor({ context }: { context: DynamicSnippetsGeneratorContext }) {\n        this.context = context;\n    }\n\n    public async generateSnippet({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): Promise<string> {\n        const code = this.buildCodeBlock({ endpoint, snippet: request });\n        return await code.toStringAsync({ customConfig: this.context.customConfig });\n    }\n\n    public generateSnippetSync({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): string {\n        const code = this.buildCodeBlock({ endpoint, snippet: request });\n        return code.toString({ customConfig: this.context.customConfig });\n    }\n\n    public async generateSnippetAst({\n        endpoint,\n        request\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        request: FernIr.dynamic.EndpointSnippetRequest;\n    }): Promise<AstNode> {\n        return this.buildCodeBlock({ endpoint, snippet: request });\n    }\n\n    private buildCodeBlock({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ts.AstNode {\n        return ts.codeblock((writer) => {\n            writer.writeNode(\n                ts.function_({\n                    name: MAIN_FUNCTION_NAME,\n                    async: true,\n                    parameters: [],\n                    body: ts.codeblock((writer) => {\n                        writer.writeNodeStatement(this.constructClient({ endpoint, snippet }));\n                        writer.writeNodeStatement(this.callMethod({ endpoint, snippet }));\n                    })\n                })\n            );\n            writer.writeNodeStatement(\n                ts.invokeFunction({\n                    function_: ts.reference({\n                        name: MAIN_FUNCTION_NAME\n                    }),\n                    arguments_: []\n                })\n            );\n        });\n    }\n\n    private constructClient({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ts.AstNode {\n        return ts.variable({\n            name: CLIENT_VAR_NAME,\n            const: true,\n            initializer: ts.instantiateClass({\n                class_: ts.reference({\n                    name: this.context.getRootClientName(),\n                    importFrom: this.context.getModuleImport()\n                }),\n                arguments_: [this.getConstructorArgs({ endpoint, snippet })]\n            })\n        });\n    }\n\n    private getConstructorArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ts.AstNode {\n        const fields: ts.ObjectField[] = [];\n        const environmentArgs = this.getConstructorEnvironmentArgs({\n            baseUrl: snippet.baseURL,\n            environment: snippet.environment\n        });\n        if (environmentArgs.length > 0) {\n            fields.push(...environmentArgs);\n        }\n        if (endpoint.auth != null) {\n            if (snippet.auth != null) {\n                fields.push(...this.getConstructorAuthArgs({ auth: endpoint.auth, values: snippet.auth }));\n            } else {\n                this.context.errors.add({\n                    severity: Severity.Warning,\n                    message: `Auth with ${endpoint.auth.type} configuration is required for this endpoint`\n                });\n            }\n        }\n\n        this.context.errors.scope(Scope.PathParameters);\n        if (this.context.ir.pathParameters != null) {\n            fields.push(...this.getPathParameters({ namedParameters: this.context.ir.pathParameters, snippet }));\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.Headers);\n        if (this.context.ir.headers != null && snippet.headers != null) {\n            fields.push(\n                ...this.getConstructorHeaderArgs({ headers: this.context.ir.headers, values: snippet.headers })\n            );\n        }\n        this.context.errors.unscope();\n        if (fields.length === 0) {\n            return ts.TypeLiteral.nop();\n        }\n        return ts.TypeLiteral.object({ fields });\n    }\n\n    private getConstructorEnvironmentArgs({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): ts.ObjectField[] {\n        const environmentValue = this.getEnvironmentValue({ baseUrl, environment });\n        if (environmentValue == null) {\n            return [];\n        }\n        return [\n            {\n                name: \"environment\",\n                value: environmentValue\n            }\n        ];\n    }\n\n    private getEnvironmentValue({\n        baseUrl,\n        environment\n    }: {\n        baseUrl: string | undefined;\n        environment: FernIr.dynamic.EnvironmentValues | undefined;\n    }): ts.TypeLiteral | undefined {\n        if (baseUrl != null && environment != null) {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: \"Cannot specify both baseUrl and environment options\"\n            });\n            return undefined;\n        }\n        if (baseUrl != null) {\n            return ts.TypeLiteral.string(baseUrl);\n        }\n        if (environment != null) {\n            if (this.context.isSingleEnvironmentID(environment)) {\n                const environmentTypeReference = this.context.getEnvironmentTypeReferenceFromID(environment);\n                if (environmentTypeReference == null) {\n                    this.context.errors.add({\n                        severity: Severity.Warning,\n                        message: `Environment ${JSON.stringify(environment)} was not found`\n                    });\n                    return undefined;\n                }\n                return ts.TypeLiteral.reference(environmentTypeReference);\n            }\n            if (this.context.isMultiEnvironmentValues(environment)) {\n                if (!this.context.validateMultiEnvironmentUrlValues(environment)) {\n                    return undefined;\n                }\n                return ts.TypeLiteral.object({\n                    fields: Object.entries(environment).map(([key, value]) => ({\n                        name: key,\n                        value: this.context.dynamicTypeLiteralMapper.convert({\n                            typeReference: STRING_TYPE_REFERENCE,\n                            value\n                        })\n                    }))\n                });\n            }\n        }\n        return undefined;\n    }\n\n    private getConstructorAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.Auth;\n        values: FernIr.dynamic.AuthValues;\n    }): ts.ObjectField[] {\n        switch (auth.type) {\n            case \"basic\":\n                if (values.type !== \"basic\") {\n                    this.addAuthMismatchError(auth, values);\n                    return [];\n                }\n                return this.getConstructorBasicAuthArg({ auth, values });\n            case \"bearer\":\n                if (values.type !== \"bearer\") {\n                    this.addAuthMismatchError(auth, values);\n                    return [];\n                }\n                return this.getConstructorBearerAuthArgs({ auth, values });\n            case \"header\":\n                if (values.type !== \"header\") {\n                    this.addAuthMismatchError(auth, values);\n                    return [];\n                }\n                return this.getConstructorHeaderAuthArgs({ auth, values });\n            case \"oauth\":\n                if (values.type !== \"oauth\") {\n                    this.addAuthMismatchError(auth, values);\n                    return [];\n                }\n                return this.getConstructorOAuthArgs({ auth, values });\n            case \"inferred\":\n                if (values.type !== \"inferred\") {\n                    this.addAuthMismatchError(auth, values);\n                    return [];\n                }\n                this.addWarning(\"The TypeScript SDK v2 Generator does not support Inferred auth scheme yet\");\n                return [];\n            default:\n                assertNever(auth);\n        }\n    }\n\n    private addAuthMismatchError(auth: FernIr.dynamic.Auth, values: FernIr.dynamic.AuthValues): void {\n        this.context.errors.add({\n            severity: Severity.Critical,\n            message: this.context.newAuthMismatchError({ auth, values }).message\n        });\n    }\n\n    private addWarning(message: string): void {\n        this.context.errors.add({ severity: Severity.Warning, message });\n    }\n\n    private getConstructorBasicAuthArg({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BasicAuth;\n        values: FernIr.dynamic.BasicAuthValues;\n    }): ts.ObjectField[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.username),\n                value: ts.TypeLiteral.string(values.username)\n            },\n            {\n                name: this.context.getPropertyName(auth.password),\n                value: ts.TypeLiteral.string(values.password)\n            }\n        ];\n    }\n\n    private getConstructorBearerAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.BearerAuth;\n        values: FernIr.dynamic.BearerAuthValues;\n    }): ts.ObjectField[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.token),\n                value: ts.TypeLiteral.string(values.token)\n            }\n        ];\n    }\n\n    private getConstructorHeaderAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.HeaderAuth;\n        values: FernIr.dynamic.HeaderAuthValues;\n    }): ts.ObjectField[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.header.name.name),\n                value: this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: auth.header.typeReference,\n                    value: values.value\n                })\n            }\n        ];\n    }\n\n    private getConstructorOAuthArgs({\n        auth,\n        values\n    }: {\n        auth: FernIr.dynamic.OAuth;\n        values: FernIr.dynamic.OAuthValues;\n    }): ts.ObjectField[] {\n        return [\n            {\n                name: this.context.getPropertyName(auth.clientId),\n                value: ts.TypeLiteral.string(values.clientId)\n            },\n            {\n                name: this.context.getPropertyName(auth.clientSecret),\n                value: ts.TypeLiteral.string(values.clientSecret)\n            }\n        ];\n    }\n\n    private getConstructorHeaderArgs({\n        headers,\n        values\n    }: {\n        headers: FernIr.dynamic.NamedParameter[];\n        values: FernIr.dynamic.Values;\n    }): ts.ObjectField[] {\n        const fields: ts.ObjectField[] = [];\n        for (const header of headers) {\n            const value = values[header.name.wireValue];\n            const field = this.getConstructorHeaderArg({ header, value });\n            if (field != null) {\n                fields.push(field);\n            }\n        }\n        return fields;\n    }\n\n    private getConstructorHeaderArg({\n        header,\n        value\n    }: {\n        header: FernIr.dynamic.NamedParameter;\n        value: unknown;\n    }): ts.ObjectField | undefined {\n        const typeLiteral = this.context.dynamicTypeLiteralMapper.convert({\n            typeReference: header.typeReference,\n            value\n        });\n        if (ts.TypeLiteral.isNop(typeLiteral)) {\n            // Literal header values (e.g. \"X-API-Version\") should not be included in the\n            // client constructor.\n            return undefined;\n        }\n        return {\n            name: this.context.getPropertyName(header.name.name),\n            value: typeLiteral\n        };\n    }\n\n    private callMethod({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ts.AstNode {\n        return ts.invokeMethod({\n            on: ts.reference({ name: CLIENT_VAR_NAME }),\n            method: this.getMethod({ endpoint }),\n            async: true,\n            arguments_: this.getMethodArgs({ endpoint, snippet })\n        });\n    }\n\n    private getMethodArgs({\n        endpoint,\n        snippet\n    }: {\n        endpoint: FernIr.dynamic.Endpoint;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ts.AstNode[] {\n        switch (endpoint.request.type) {\n            case \"inlined\":\n                return this.getMethodArgsForInlinedRequest({ request: endpoint.request, snippet });\n            case \"body\":\n                return this.getMethodArgsForBodyRequest({ request: endpoint.request, snippet });\n            default:\n                assertNever(endpoint.request);\n        }\n    }\n\n    private getMethodArgsForBodyRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.BodyRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ts.TypeLiteral[] {\n        const args: ts.TypeLiteral[] = [];\n\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameters = [...(this.context.ir.pathParameters ?? []), ...(request.pathParameters ?? [])];\n        if (pathParameters.length > 0) {\n            args.push(\n                ...this.getPathParameters({ namedParameters: pathParameters, snippet }).map((field) => field.value)\n            );\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        if (request.body != null) {\n            args.push(this.getBodyRequestArg({ body: request.body, value: snippet.requestBody }));\n        }\n        this.context.errors.unscope();\n\n        return args;\n    }\n\n    private getBodyRequestArg({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): ts.TypeLiteral {\n        switch (body.type) {\n            case \"bytes\":\n                return this.getBytesBodyRequestArg({ value });\n            case \"typeReference\":\n                return this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: body.value,\n                    value,\n                    convertOpts: {\n                        isForRequest: true\n                    }\n                });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getBytesBodyRequestArg({ value }: { value: unknown }): ts.TypeLiteral {\n        if (typeof value !== \"string\") {\n            this.context.errors.add({\n                severity: Severity.Critical,\n                message: `Expected bytes value to be a string, got ${typeof value}`\n            });\n            return ts.TypeLiteral.nop();\n        }\n        return ts.TypeLiteral.blob(value);\n    }\n\n    private getMethodArgsForInlinedRequest({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ts.TypeLiteral[] {\n        const args: ts.TypeLiteral[] = [];\n\n        const { inlinePathParameters, inlineFileProperties } = {\n            inlinePathParameters: this.context.customConfig?.inlinePathParameters ?? false,\n            inlineFileProperties: this.context.customConfig?.inlineFileProperties ?? false\n        };\n\n        this.context.errors.scope(Scope.PathParameters);\n        const pathParameterFields: ts.ObjectField[] = [];\n        if (request.pathParameters != null) {\n            pathParameterFields.push(...this.getPathParameters({ namedParameters: request.pathParameters, snippet }));\n        }\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const filePropertyInfo = this.getFilePropertyInfo({ request, snippet });\n        this.context.errors.unscope();\n\n        if (\n            !this.context.includePathParametersInWrappedRequest({\n                request,\n                inlinePathParameters\n            })\n        ) {\n            args.push(...pathParameterFields.map((field) => field.value));\n        }\n\n        if (!inlineFileProperties) {\n            args.push(...filePropertyInfo.fileFields.map((field) => field.value));\n        }\n\n        if (\n            this.context.needsRequestParameter({\n                request,\n                inlinePathParameters,\n                inlineFileProperties\n            })\n        ) {\n            args.push(\n                this.getInlinedRequestArg({\n                    request,\n                    snippet,\n                    pathParameterFields: this.context.includePathParametersInWrappedRequest({\n                        request,\n                        inlinePathParameters\n                    })\n                        ? pathParameterFields\n                        : [],\n                    filePropertyInfo\n                })\n            );\n        }\n        return args;\n    }\n\n    private getFilePropertyInfo({\n        request,\n        snippet\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): FilePropertyInfo {\n        if (request.body == null || !this.context.isFileUploadRequestBody(request.body)) {\n            return {\n                fileFields: [],\n                bodyPropertyFields: []\n            };\n        }\n        return this.context.filePropertyMapper.getFilePropertyInfo({\n            body: request.body,\n            value: snippet.requestBody\n        });\n    }\n\n    private getInlinedRequestArg({\n        request,\n        snippet,\n        pathParameterFields,\n        filePropertyInfo\n    }: {\n        request: FernIr.dynamic.InlinedRequest;\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n        pathParameterFields: ts.ObjectField[];\n        filePropertyInfo: FilePropertyInfo;\n    }): ts.TypeLiteral {\n        this.context.errors.scope(Scope.QueryParameters);\n        const queryParameters = this.context.associateQueryParametersByWireValue({\n            parameters: request.queryParameters ?? [],\n            values: snippet.queryParameters ?? {}\n        });\n        const queryParameterFields = queryParameters.map((queryParameter) => ({\n            name: this.context.getPropertyName(queryParameter.name.name),\n            value: this.context.dynamicTypeLiteralMapper.convert({\n                ...queryParameter,\n                convertOpts: { isForRequest: true }\n            })\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.Headers);\n        const headers = this.context.associateByWireValue({\n            parameters: request.headers ?? [],\n            values: snippet.headers ?? {}\n        });\n        const headerFields = headers.map((header) => ({\n            name: this.context.getPropertyName(header.name.name),\n            value: this.context.dynamicTypeLiteralMapper.convert({ ...header, convertOpts: { isForRequest: true } })\n        }));\n        this.context.errors.unscope();\n\n        this.context.errors.scope(Scope.RequestBody);\n        const requestBodyFields =\n            request.body != null\n                ? this.getInlinedRequestBodyObjectFields({\n                      body: request.body,\n                      value: snippet.requestBody,\n                      filePropertyInfo\n                  })\n                : [];\n        this.context.errors.unscope();\n\n        return ts.TypeLiteral.object({\n            fields: [...pathParameterFields, ...queryParameterFields, ...headerFields, ...requestBodyFields]\n        });\n    }\n\n    private getInlinedRequestBodyObjectFields({\n        body,\n        value,\n        filePropertyInfo\n    }: {\n        body: FernIr.dynamic.InlinedRequestBody;\n        value: unknown;\n        filePropertyInfo: FilePropertyInfo;\n    }): ts.ObjectField[] {\n        switch (body.type) {\n            case \"properties\":\n                return this.getInlinedRequestBodyPropertyObjectFields({ parameters: body.value, value });\n            case \"referenced\":\n                return [this.getReferencedRequestBodyPropertyObjectField({ body, value })];\n            case \"fileUpload\":\n                return this.getFileUploadRequestBodyObjectFields({ filePropertyInfo });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getFileUploadRequestBodyObjectFields({\n        filePropertyInfo\n    }: {\n        filePropertyInfo: FilePropertyInfo;\n    }): ts.ObjectField[] {\n        if (this.context.customConfig?.inlineFileProperties) {\n            return [...filePropertyInfo.fileFields, ...filePropertyInfo.bodyPropertyFields];\n        }\n        return filePropertyInfo.bodyPropertyFields;\n    }\n\n    private getReferencedRequestBodyPropertyObjectField({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBody;\n        value: unknown;\n    }): ts.ObjectField {\n        return {\n            name: this.context.getPropertyName(body.bodyKey),\n            value: this.getReferencedRequestBodyPropertyTypeLiteral({ body: body.bodyType, value })\n        };\n    }\n\n    private getReferencedRequestBodyPropertyTypeLiteral({\n        body,\n        value\n    }: {\n        body: FernIr.dynamic.ReferencedRequestBodyType;\n        value: unknown;\n    }): ts.TypeLiteral {\n        switch (body.type) {\n            case \"bytes\":\n                return this.getBytesBodyRequestArg({ value });\n            case \"typeReference\":\n                return this.context.dynamicTypeLiteralMapper.convert({\n                    typeReference: body.value,\n                    value,\n                    convertOpts: { isForRequest: true }\n                });\n            default:\n                assertNever(body);\n        }\n    }\n\n    private getInlinedRequestBodyPropertyObjectFields({\n        parameters,\n        value\n    }: {\n        parameters: FernIr.dynamic.NamedParameter[];\n        value: unknown;\n    }): ts.ObjectField[] {\n        const fields: ts.ObjectField[] = [];\n\n        const bodyProperties = this.context.associateByWireValue({\n            parameters,\n            values: this.context.getRecord(value) ?? {}\n        });\n        for (const parameter of bodyProperties) {\n            fields.push({\n                name: this.context.getPropertyName(parameter.name.name),\n                value: this.context.dynamicTypeLiteralMapper.convert({\n                    ...parameter,\n                    convertOpts: { isForRequest: true }\n                })\n            });\n        }\n\n        return fields;\n    }\n\n    private getPathParameters({\n        namedParameters,\n        snippet\n    }: {\n        namedParameters: FernIr.dynamic.NamedParameter[];\n        snippet: FernIr.dynamic.EndpointSnippetRequest;\n    }): ts.ObjectField[] {\n        const args: ts.ObjectField[] = [];\n\n        const pathParameters = this.context.associateByWireValue({\n            parameters: namedParameters,\n            values: snippet.pathParameters ?? {},\n\n            // Path parameters are distributed across the client constructor\n            // and the request method, so we ignore missing parameters here.\n            ignoreMissingParameters: true\n        });\n        for (const parameter of pathParameters) {\n            args.push({\n                name: this.context.getPropertyName(parameter.name.name),\n                value: this.context.dynamicTypeLiteralMapper.convert({\n                    ...parameter,\n                    convertOpts: { isForRequest: true }\n                })\n            });\n        }\n\n        return args;\n    }\n\n    private getMethod({ endpoint }: { endpoint: FernIr.dynamic.Endpoint }): string {\n        if (endpoint.declaration.fernFilepath.allParts.length > 0) {\n            return `${endpoint.declaration.fernFilepath.allParts\n                .map((val) => this.context.getMethodName(val))\n                .join(\".\")}.${this.context.getMethodName(endpoint.declaration.name)}`;\n        }\n        return this.context.getMethodName(endpoint.declaration.name);\n    }\n}\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\n// src/config/csharp/config.json\nvar config_default = {\n  irFilepath: \"/fern/ir.json\",\n  output: {\n    mode: {\n      type: \"github\",\n      repoUrl: \"\",\n      version: \"\",\n      publishInfo: {\n        type: \"nuget\",\n        registryUrl: \"\",\n        packageName: \"\",\n        apiKeyEnvironmentVariable: \"\"\n      }\n    },\n    path: \"/fern/output\",\n    publishingMetadata: null,\n    snippetFilepath: \"/fern/snippet.json\",\n    snippetTemplateFilepath: \"/fern/snippet-templates.json\"\n  },\n  publish: null,\n  customConfig: {},\n  workspaceName: \"\",\n  organization: \"\",\n  environment: {\n    _type: \"local\"\n  },\n  dryRun: false,\n  whitelabel: false,\n  writeUnitTests: true,\n  generateOauthClients: true,\n  generatePaginatedClients: true\n};\n\n// src/config/go/config.json\nvar config_default2 = {\n  irFilepath: \"/fern/ir.json\",\n  output: {\n    mode: {\n      type: \"github\",\n      repoUrl: \"\",\n      version: \"\",\n      publishInfo: null\n    },\n    path: \"/fern/output\",\n    publishingMetadata: null,\n    snippetFilepath: \"/fern/snippet.json\",\n    snippetTemplateFilepath: \"/fern/snippet-templates.json\"\n  },\n  publish: null,\n  customConfig: {},\n  workspaceName: \"\",\n  organization: \"\",\n  environment: {\n    _type: \"local\"\n  },\n  dryRun: false,\n  whitelabel: false,\n  writeUnitTests: true,\n  generateOauthClients: true,\n  generatePaginatedClients: true\n};\n\n// src/config/java/config.json\nvar config_default3 = {\n  irFilepath: \"/fern/ir.json\",\n  output: {\n    mode: {\n      type: \"github\",\n      repoUrl: \"\",\n      version: \"\",\n      publishInfo: {\n        type: \"maven\",\n        registryUrl: \"\",\n        coordinate: \"\",\n        usernameEnvironmentVariable: \"\",\n        passwordEnvironmentVariable: \"\"\n      }\n    },\n    path: \"/fern/output\",\n    publishingMetadata: null,\n    snippetFilepath: \"/fern/snippet.json\",\n    snippetTemplateFilepath: \"/fern/snippet-templates.json\"\n  },\n  publish: null,\n  customConfig: {},\n  workspaceName: \"\",\n  organization: \"\",\n  environment: {\n    _type: \"local\"\n  },\n  dryRun: false,\n  whitelabel: false,\n  writeUnitTests: true,\n  generateOauthClients: true,\n  generatePaginatedClients: true\n};\n\n// src/config/php/config.json\nvar config_default4 = {\n  irFilepath: \"/fern/ir.json\",\n  output: {\n    mode: {\n      type: \"github\",\n      repoUrl: \"\",\n      version: \"\",\n      publishInfo: null\n    },\n    path: \"/fern/output\",\n    publishingMetadata: null,\n    snippetFilepath: \"/fern/snippet.json\",\n    snippetTemplateFilepath: \"/fern/snippet-templates.json\"\n  },\n  publish: null,\n  customConfig: {},\n  workspaceName: \"\",\n  organization: \"\",\n  environment: {\n    _type: \"local\"\n  },\n  dryRun: false,\n  whitelabel: false,\n  writeUnitTests: true,\n  generateOauthClients: true,\n  generatePaginatedClients: true\n};\n\n// src/config/python/config.json\nvar config_default5 = {\n  irFilepath: \"/fern/ir.json\",\n  output: {\n    mode: {\n      type: \"github\",\n      repoUrl: \"\",\n      version: \"\",\n      publishInfo: {\n        type: \"pypi\",\n        registryUrl: \"https://pypi.org\",\n        packageName: \"\",\n        usernameEnvironmentVariable: \"\",\n        passwordEnvironmentVariable: \"\"\n      }\n    },\n    path: \"/fern/output\",\n    publishingMetadata: null,\n    snippetFilepath: \"/fern/snippet.json\",\n    snippetTemplateFilepath: \"/fern/snippet-templates.json\"\n  },\n  publish: null,\n  customConfig: {},\n  workspaceName: \"\",\n  organization: \"\",\n  environment: {\n    _type: \"local\"\n  },\n  dryRun: false,\n  whitelabel: false,\n  writeUnitTests: true,\n  generateOauthClients: true,\n  generatePaginatedClients: true\n};\n\n// src/config/ruby/config.json\nvar config_default6 = {\n  irFilepath: \"/fern/ir.json\",\n  output: {\n    mode: {\n      type: \"github\",\n      repoUrl: \"\",\n      version: \"\",\n      publishInfo: {\n        type: \"rubygems\",\n        registryUrl: \"https://rubygems.org\",\n        packageName: \"\",\n        apiKeyEnvironmentVariable: \"\"\n      }\n    },\n    path: \"/fern/output\",\n    publishingMetadata: null,\n    snippetFilepath: \"/fern/snippet.json\",\n    snippetTemplateFilepath: \"/fern/snippet-templates.json\"\n  },\n  publish: null,\n  customConfig: {},\n  workspaceName: \"\",\n  organization: \"\",\n  environment: {\n    _type: \"local\"\n  },\n  dryRun: false,\n  whitelabel: false,\n  writeUnitTests: true,\n  generateOauthClients: true,\n  generatePaginatedClients: true\n};\n\n// src/config/swift/config.json\nvar config_default7 = {\n  irFilepath: \"/fern/ir.json\",\n  output: {\n    mode: {\n      type: \"github\",\n      repoUrl: \"\",\n      version: \"\",\n      publishInfo: null\n    },\n    path: \"/fern/output\",\n    publishingMetadata: null,\n    snippetFilepath: \"/fern/snippet.json\",\n    snippetTemplateFilepath: \"/fern/snippet-templates.json\"\n  },\n  publish: null,\n  customConfig: {},\n  workspaceName: \"\",\n  organization: \"\",\n  environment: {\n    _type: \"local\"\n  },\n  dryRun: false,\n  whitelabel: false,\n  writeUnitTests: true,\n  generateOauthClients: true,\n  generatePaginatedClients: true\n};\n\n// src/config/typescript/config.json\nvar config_default8 = {\n  irFilepath: \"/fern/ir.json\",\n  output: {\n    mode: {\n      type: \"github\",\n      repoUrl: \"\",\n      version: \"\",\n      publishInfo: {\n        type: \"npm\",\n        registryUrl: \"https://registry.npmjs.org\",\n        packageName: \"\",\n        tokenEnvironmentVariable: \"\"\n      }\n    },\n    path: \"/fern/output\",\n    publishingMetadata: null,\n    snippetFilepath: \"/fern/snippet.json\",\n    snippetTemplateFilepath: \"/fern/snippet-templates.json\"\n  },\n  publish: null,\n  customConfig: {},\n  workspaceName: \"\",\n  organization: \"\",\n  environment: {\n    _type: \"local\"\n  },\n  dryRun: false,\n  whitelabel: false,\n  writeUnitTests: true,\n  generateOauthClients: true,\n  generatePaginatedClients: true\n};\n\n// src/EndpointProvider.ts\nimport { DynamicSnippetsGenerator as CSharp } from \"@fern-api/csharp-dynamic-snippets\";\nimport { DynamicSnippetsGenerator as Go } from \"@fern-api/go-dynamic-snippets\";\nimport { DynamicSnippetsGenerator as Java } from \"@fern-api/java-dynamic-snippets\";\nimport { DynamicSnippetsGenerator as PHP } from \"@fern-api/php-dynamic-snippets\";\nimport { DynamicSnippetsGenerator as Python } from \"@fern-api/python-dynamic-snippets\";\nimport { DynamicSnippetsGenerator as Ruby } from \"@fern-api/ruby-dynamic-snippets\";\nimport { DynamicSnippetsGenerator as Swift } from \"@fern-api/swift-dynamic-snippets\";\nimport { DynamicSnippetsGenerator as TypeScript } from \"@fern-api/typescript-dynamic-snippets\";\n\n// src/core/HttpEndpointReferenceParser.ts\nvar HttpEndpointReferenceParser = class {\n  constructor() {\n    this.REFERENCE_REGEX = /^(?:(\\w+)::)?(GET|POST|PUT|DELETE|PATCH|HEAD)\\s(\\/\\S*)$/;\n  }\n  validate(reference) {\n    const validFormat = this.REFERENCE_REGEX.test(reference);\n    if (!validFormat) {\n      return { type: \"invalid\" };\n    }\n    return { type: \"valid\" };\n  }\n  tryParse(reference) {\n    const validationResponse = this.validate(reference);\n    if (validationResponse.type === \"invalid\") {\n      return void 0;\n    }\n    const match = reference.match(this.REFERENCE_REGEX);\n    if (!(match == null ? void 0 : match[2]) || !(match == null ? void 0 : match[3])) {\n      return void 0;\n    }\n    return {\n      namespace: match[1],\n      method: match[2],\n      path: match[3]\n    };\n  }\n};\n\n// src/EndpointSnippetGenerator.ts\nvar EndpointSnippetGenerator = class {\n  constructor({\n    generator,\n    endpoint\n  }) {\n    this.generator = generator;\n    this.endpoint = endpoint;\n  }\n  async generate(request) {\n    const _request = request != null ? request : this.resolveDefaultRequestOrThrow();\n    return this.generator.generate({\n      endpoint: this.endpoint.location,\n      baseURL: _request.baseURL,\n      environment: _request.environment,\n      auth: _request.auth,\n      pathParameters: _request.pathParameters,\n      queryParameters: _request.queryParameters,\n      headers: _request.headers,\n      requestBody: _request.requestBody\n    });\n  }\n  generateSync(request) {\n    const _request = request != null ? request : this.resolveDefaultRequestOrThrow();\n    return this.generator.generateSync({\n      endpoint: this.endpoint.location,\n      baseURL: _request.baseURL,\n      environment: _request.environment,\n      auth: _request.auth,\n      pathParameters: _request.pathParameters,\n      queryParameters: _request.queryParameters,\n      headers: _request.headers,\n      requestBody: _request.requestBody\n    });\n  }\n  resolveDefaultRequestOrThrow() {\n    var _a;\n    for (const example of (_a = this.endpoint.examples) != null ? _a : []) {\n      return __spreadProps(__spreadValues({}, example), {\n        environment: void 0\n      });\n    }\n    throw new Error(`No default example found for endpoint; please specify a request payload`);\n  }\n};\n\n// src/EndpointProvider.ts\nvar EndpointProvider = class {\n  constructor({\n    config,\n    language,\n    ir\n  }) {\n    this.config = config;\n    this.language = language;\n    this.ir = ir;\n    this.httpEndpointReferenceParser = new HttpEndpointReferenceParser();\n  }\n  endpoint(endpoint, _options = {}) {\n    const parsedEndpoint = this.parseEndpointOrThrow({ endpoint });\n    const generator = this.getGenerator({ ir: this.ir });\n    const resolvedEndpoint = this.resolveEndpointOrThrow({\n      ir: this.ir,\n      parsedEndpoint\n    });\n    return new EndpointSnippetGenerator({\n      generator,\n      endpoint: resolvedEndpoint\n    });\n  }\n  getGenerator({\n    ir\n  }) {\n    switch (this.language) {\n      case \"python\": {\n        return new Python({ ir, config: this.config });\n      }\n      case \"typescript\": {\n        return new TypeScript({ ir, config: this.config });\n      }\n      case \"java\": {\n        return new Java({ ir, config: this.config });\n      }\n      case \"php\": {\n        return new PHP({ ir, config: this.config });\n      }\n      case \"ruby\": {\n        return new Ruby({ ir, config: this.config });\n      }\n      case \"csharp\": {\n        return new CSharp({ ir, config: this.config });\n      }\n      case \"go\": {\n        return new Go({ ir, config: this.config });\n      }\n      case \"swift\": {\n        return new Swift({ ir, config: this.config });\n      }\n      default:\n        throw new Error(`Unsupported language: ${this.language}`);\n    }\n  }\n  parseEndpointOrThrow({ endpoint }) {\n    const parsedEndpoint = this.httpEndpointReferenceParser.tryParse(endpoint);\n    if (parsedEndpoint == null) {\n      throw new Error(`Invalid endpoint reference: \"${endpoint}\"`);\n    }\n    return parsedEndpoint;\n  }\n  resolveEndpointOrThrow({\n    ir,\n    parsedEndpoint\n  }) {\n    for (const endpoint of Object.values(ir.endpoints)) {\n      if (this.parsedEndpointMatches({ endpoint, parsedEndpoint })) {\n        return endpoint;\n      }\n    }\n    throw new Error(`Failed to find endpoint identified by \"${parsedEndpoint.method} ${parsedEndpoint.path}\"`);\n  }\n  parsedEndpointMatches({\n    endpoint,\n    parsedEndpoint\n  }) {\n    return endpoint.location.method === parsedEndpoint.method && endpoint.location.path === parsedEndpoint.path;\n  }\n};\n\n// src/SnippetResolver.ts\nvar DEFAULT_CONFIGS = {\n  python: config_default5,\n  typescript: config_default8,\n  java: config_default3,\n  php: config_default4,\n  ruby: config_default6,\n  csharp: config_default,\n  go: config_default2,\n  swift: config_default7\n};\nfunction createDefaultConfig(language) {\n  const defaults = DEFAULT_CONFIGS[language];\n  if (!defaults) {\n    throw new Error(`Unsupported language: ${language}`);\n  }\n  return structuredClone(defaults);\n}\nvar SnippetResolver = class {\n  constructor(args) {\n    this.snippetInputs = args.snippetInputs;\n  }\n  sdk(language, _options = {}) {\n    return this.getGeneratorForLanguage({ language });\n  }\n  getGeneratorForLanguage({ language }) {\n    const snippetInput = this.snippetInputs.find((input) => input.language === language);\n    if (!snippetInput) {\n      throw new Error(`No configuration found for language: ${language}`);\n    }\n    const config = this.getGeneratorConfigForLanguage({\n      language,\n      customConfig: snippetInput.ir.generatorConfig\n    });\n    return new EndpointProvider({\n      config,\n      language,\n      ir: snippetInput.ir\n    });\n  }\n  getGeneratorConfigForLanguage({\n    language,\n    customConfig\n  }) {\n    var _a, _b, _c, _d, _e, _f;\n    const config = createDefaultConfig(language);\n    if (customConfig == null ? void 0 : customConfig.apiName) {\n      config.workspaceName = customConfig.apiName;\n    }\n    if (customConfig == null ? void 0 : customConfig.organization) {\n      config.organization = customConfig.organization;\n    }\n    if (customConfig == null ? void 0 : customConfig.customConfig) {\n      config.customConfig = customConfig.customConfig;\n    }\n    if ((customConfig == null ? void 0 : customConfig.outputConfig) && config.output.mode.type === \"github\" && customConfig.outputConfig.type === \"publish\") {\n      if (customConfig.outputConfig.value.type === \"maven\" && ((_a = config.output.mode.publishInfo) == null ? void 0 : _a.type) === \"maven\") {\n        config.output.mode.publishInfo.coordinate = customConfig.outputConfig.value.coordinate;\n      } else if (customConfig.outputConfig.value.type === \"nuget\" && ((_b = config.output.mode.publishInfo) == null ? void 0 : _b.type) === \"nuget\") {\n        config.output.mode.publishInfo.packageName = customConfig.outputConfig.value.packageName;\n      } else if (customConfig.outputConfig.value.type === \"npm\" && ((_c = config.output.mode.publishInfo) == null ? void 0 : _c.type) === \"npm\") {\n        config.output.mode.publishInfo.packageName = customConfig.outputConfig.value.packageName;\n      } else if (customConfig.outputConfig.value.type === \"pypi\" && ((_d = config.output.mode.publishInfo) == null ? void 0 : _d.type) === \"pypi\") {\n        config.output.mode.publishInfo.packageName = customConfig.outputConfig.value.packageName;\n      } else if (customConfig.outputConfig.value.type === \"rubygems\" && ((_e = config.output.mode.publishInfo) == null ? void 0 : _e.type) === \"rubygems\") {\n        config.output.mode.publishInfo.packageName = customConfig.outputConfig.value.packageName;\n      } else if (language === \"go\") {\n        config.output.mode.repoUrl = (_f = customConfig.outputConfig.value.repoUrl) != null ? _f : \"\";\n      }\n    }\n    return config;\n  }\n};\nexport {\n  SnippetResolver\n};\n","import type { Language, SnippetInput } from \"@fern-api/snippets\";\nimport { SnippetResolver } from \"@fern-api/snippets\";\n\nimport type { EndpointDefinition } from \"../latest\";\nimport type { DynamicIRsByLanguage, SnippetGenerators } from \"./types\";\n\n/**\n * Build the endpoint path string used for snippet generation\n */\nexport function buildEndpointPath(endpoint: EndpointDefinition): string {\n    return `${endpoint.method} ${endpoint.path\n        .map((p) => {\n            if (p.type === \"pathParameter\") {\n                return `{${p.value}}`;\n            }\n            return p.value;\n        })\n        .join(\"\")}`;\n}\n\n/**\n * Create snippet generators for all available languages in the dynamic IR\n */\nexport function createSnippetGenerators({\n    endpoint,\n    dynamicIr\n}: {\n    endpoint: EndpointDefinition;\n    dynamicIr: DynamicIRsByLanguage;\n}): SnippetGenerators {\n    if (endpoint.method === \"HEAD\") {\n        return {};\n    }\n\n    const snippetInputs = collectSnippetInputs(dynamicIr);\n\n    if (snippetInputs.length === 0) {\n        return {};\n    }\n\n    const snippetResolver = new SnippetResolver({ snippetInputs });\n    const endpointPath = buildEndpointPath(endpoint);\n\n    return buildGeneratorsFromResolver(snippetResolver, endpointPath, dynamicIr);\n}\n\n/**\n * Collect snippet inputs from dynamic IR for available languages\n */\nfunction collectSnippetInputs(dynamicIr: DynamicIRsByLanguage): SnippetInput[] {\n    const inputs: Array<{ language: Language; ir: any }> = [];\n\n    if (dynamicIr.typescript) {\n        inputs.push({ language: \"typescript\", ir: dynamicIr.typescript as any });\n    }\n\n    if (dynamicIr.python) {\n        inputs.push({ language: \"python\", ir: dynamicIr.python as any });\n    }\n\n    if (dynamicIr.java) {\n        inputs.push({ language: \"java\", ir: dynamicIr.java as any });\n    }\n\n    if (dynamicIr.ruby) {\n        inputs.push({ language: \"ruby\", ir: dynamicIr.ruby as any });\n    }\n\n    if (dynamicIr.swift) {\n        inputs.push({ language: \"swift\", ir: dynamicIr.swift as any });\n    }\n\n    if (dynamicIr.csharp) {\n        inputs.push({ language: \"csharp\", ir: dynamicIr.csharp as any });\n    }\n\n    if (dynamicIr.go) {\n        inputs.push({ language: \"go\", ir: dynamicIr.go as any });\n    }\n\n    if (dynamicIr.php) {\n        inputs.push({ language: \"php\", ir: dynamicIr.php as any });\n    }\n\n    return inputs;\n}\n\n/**\n * Build generators from the snippet resolver for available languages\n */\nfunction buildGeneratorsFromResolver(\n    snippetResolver: SnippetResolver,\n    endpointPath: string,\n    dynamicIr: DynamicIRsByLanguage\n): SnippetGenerators {\n    const generators: SnippetGenerators = {};\n\n    if (dynamicIr.typescript) {\n        const sdk = snippetResolver.sdk(\"typescript\");\n        generators.typescript = sdk?.endpoint(endpointPath);\n    }\n\n    if (dynamicIr.python) {\n        const sdk = snippetResolver.sdk(\"python\");\n        generators.python = sdk?.endpoint(endpointPath);\n    }\n\n    if (dynamicIr.java) {\n        const sdk = snippetResolver.sdk(\"java\");\n        generators.java = sdk?.endpoint(endpointPath);\n    }\n\n    if (dynamicIr.ruby) {\n        const sdk = snippetResolver.sdk(\"ruby\");\n        generators.ruby = sdk?.endpoint(endpointPath);\n    }\n\n    if (dynamicIr.swift) {\n        const sdk = snippetResolver.sdk(\"swift\");\n        generators.swift = sdk?.endpoint(endpointPath);\n    }\n\n    if (dynamicIr.csharp) {\n        const sdk = snippetResolver.sdk(\"csharp\");\n        generators.csharp = sdk?.endpoint(endpointPath);\n    }\n\n    if (dynamicIr.go) {\n        const sdk = snippetResolver.sdk(\"go\");\n        generators.go = sdk?.endpoint(endpointPath);\n    }\n\n    if (dynamicIr.php) {\n        const sdk = snippetResolver.sdk(\"php\");\n        generators.php = sdk?.endpoint(endpointPath);\n    }\n\n    return generators;\n}\n","import type { ApiAuth } from \"../../client/APIV1Read\";\nimport type { AuthScheme, AuthSchemeId, CodeSnippet, EndpointDefinition } from \"../latest\";\n\n/**\n * Get the first auth scheme ID for an endpoint, preferring multiAuth over legacy auth.\n * multiAuth provides proper OR-of-AND semantics for endpoint-specific security.\n */\nexport function getFirstAuthSchemeId(endpoint: EndpointDefinition): AuthSchemeId | undefined {\n    if (endpoint.multiAuth != null && endpoint.multiAuth.length > 0) {\n        const firstGroup = endpoint.multiAuth[0];\n        if (firstGroup && firstGroup.schemes.length > 0) {\n            return firstGroup.schemes[0];\n        }\n    }\n    return endpoint.auth?.[0];\n}\n\n/**\n * Get the first auth scheme for an endpoint from the auths record.\n * Uses getFirstAuthSchemeId to select the correct auth scheme.\n */\nexport function getFirstAuthScheme<T extends AuthScheme | ApiAuth>(\n    endpoint: EndpointDefinition,\n    auths: Record<AuthSchemeId, T>\n): T | undefined {\n    const authId = getFirstAuthSchemeId(endpoint);\n    return authId != null ? auths[authId] : undefined;\n}\n\n/**\n * Get the header name for an auth scheme.\n * Returns the header wire value for header auth, \"Authorization\" for bearer/OAuth, or undefined.\n */\nexport function getAuthHeaderName(auth: AuthScheme | ApiAuth | undefined): string | undefined {\n    if (auth == null) {\n        return undefined;\n    }\n    if (auth.type === \"header\") {\n        return (auth as { headerWireValue?: string }).headerWireValue;\n    }\n    if (auth.type === \"bearerAuth\" || auth.type === \"oAuth\") {\n        return \"Authorization\";\n    }\n    return undefined;\n}\n\n/**\n * Check if a snippet is likely auto-generated (not user-provided).\n * A snippet is considered likely generated if:\n * - generated === true, OR\n * - generated is undefined AND name, install, and description are all null\n */\nexport function isLikelyGeneratedSnippet(snippet: CodeSnippet): boolean {\n    if (snippet.generated === true) {\n        return true;\n    }\n    if (snippet.generated === false) {\n        return false;\n    }\n    return snippet.name == null && snippet.install == null && snippet.description == null;\n}\n\n/**\n * Determine if a curl snippet should be regenerated because it has the wrong auth header.\n * Only regenerates if:\n * - No existing snippets exist, OR\n * - All existing snippets are likely generated AND none contain the expected header, OR\n * - For basic auth: existing snippets use -H \"Authorization: Basic\" instead of -u flag\n */\nexport function shouldRegenerateCurlSnippet(\n    existingSnippets: CodeSnippet[] | undefined,\n    expectedHeaderName: string | undefined,\n    authScheme?: AuthScheme | ApiAuth\n): boolean {\n    if (existingSnippets == null || existingSnippets.length === 0) {\n        return true;\n    }\n\n    const allLikelyGenerated = existingSnippets.every(isLikelyGeneratedSnippet);\n    if (!allLikelyGenerated) {\n        return false;\n    }\n\n    // For basic auth, check if snippets use -H \"Authorization: Basic\" instead of -u flag\n    // If so, regenerate to use -u flag\n    if (authScheme?.type === \"basicAuth\") {\n        const usesBasicAuthHeader = existingSnippets.some(\n            (s) => s.code.includes('-H \"Authorization: Basic') || s.code.includes(\"-H 'Authorization: Basic\")\n        );\n        if (usesBasicAuthHeader) {\n            return true;\n        }\n\n        // If passwordAlwaysEmpty, regenerate if existing snippet still contains a password placeholder\n        if (authScheme.passwordAlwaysEmpty) {\n            const passwordName = authScheme.passwordName ?? \"password\";\n            const hasPasswordPlaceholder = existingSnippets.some((s) => s.code.includes(`:<${passwordName}>`));\n            if (hasPasswordPlaceholder) {\n                return true;\n            }\n        }\n\n        // If basic auth and no header found, check if -u flag is present\n        const usesUFlag = existingSnippets.some((s) => s.code.includes(\"-u \"));\n        // If -u flag is present, no need to regenerate\n        return !usesUFlag;\n    }\n\n    if (expectedHeaderName == null) {\n        return false;\n    }\n\n    const hasCorrectHeader = existingSnippets.some(\n        (s) => s.code.includes(`\"${expectedHeaderName}:`) || s.code.includes(`'${expectedHeaderName}:`)\n    );\n    return !hasCorrectHeader;\n}\n","import type { HTTPSnippetClient } from \"./types\";\n\n/**\n * HTTP snippet client configurations for each supported language.\n * These define which httpsnippet-lite target and client to use for each language.\n */\nexport const HTTP_SNIPPET_CLIENTS: HTTPSnippetClient[] = [\n    { targetId: \"python\", clientId: \"requests\" },\n    { targetId: \"javascript\", clientId: \"fetch\" },\n    { targetId: \"go\", clientId: \"native\" },\n    { targetId: \"ruby\", clientId: \"native\" },\n    { targetId: \"java\", clientId: \"unirest\" },\n    { targetId: \"php\", clientId: \"guzzle\" },\n    { targetId: \"csharp\", clientId: \"restsharp\" },\n    { targetId: \"swift\", clientId: \"nsurlsession\" }\n];\n","import { unknownToString, visitDiscriminatedUnion } from \"@fern-api/ui-core-utils\";\nimport type { HarRequest } from \"httpsnippet-lite\";\nimport type { ApiAuth } from \"../../client/APIV1Read\";\nimport {\n    type AuthSchemeId,\n    buildEndpointUrl,\n    type EndpointDefinition,\n    type ExampleEndpointCall,\n    type ExampleEndpointRequest,\n    preprocessQueryParameters\n} from \"../\";\nimport { getFirstAuthScheme } from \"./auth-scheme\";\nimport type { BasicAuthInfo } from \"./HttpSnippetConverter\";\n\nexport function getHarRequest(\n    endpoint: EndpointDefinition,\n    example: ExampleEndpointCall,\n    auths: Record<AuthSchemeId, ApiAuth>,\n    requestBody: ExampleEndpointRequest | undefined\n): HarRequest {\n    const request: HarRequest = {\n        httpVersion: \"1.1\",\n        method: \"GET\",\n        url: \"\",\n        headers: [],\n        headersSize: -1,\n        queryString: [],\n        cookies: [],\n        bodySize: -1\n    };\n    const builtUrl = buildEndpointUrl({\n        endpoint,\n        // omit query parameters here because they are included in the `queryString` field\n        pathParameters: example.pathParameters ?? undefined\n    });\n\n    // HTTPSnippet requires a full URL with protocol and host\n    // If the built URL is a relative path, prepend a placeholder base URL\n    request.url =\n        builtUrl.startsWith(\"http://\") || builtUrl.startsWith(\"https://\")\n            ? builtUrl\n            : `https://api.example.com${builtUrl.startsWith(\"/\") ? \"\" : \"/\"}${builtUrl}`;\n\n    request.method = endpoint.method;\n\n    // Preprocess query parameters based on explode metadata\n    const processedQueryParams =\n        preprocessQueryParameters(example.queryParameters ?? undefined, endpoint.queryParameters ?? undefined) ?? {};\n    request.queryString = Object.entries(processedQueryParams).map(([name, value]) => ({\n        name,\n        value: unknownToString(value)\n    }));\n    request.headers = Object.entries(example.headers ?? {}).map(([name, value]) => ({\n        name,\n        value: unknownToString(value)\n    }));\n\n    let mimeType = endpoint.requests?.[0]?.contentType;\n\n    if (requestBody != null) {\n        if (mimeType == null) {\n            mimeType = requestBody.type === \"json\" ? \"application/json\" : \"multipart/form-data\";\n        }\n        request.postData = {\n            mimeType\n        };\n\n        // filter out request parameters that have no value and are not an array\n        if (requestBody.value && typeof requestBody.value === \"object\" && !Array.isArray(requestBody.value)) {\n            requestBody.value = Object.fromEntries(\n                Object.entries(requestBody.value).filter(([_, valueObj]) => {\n                    // Keep arrays and primitive values\n                    if (Array.isArray(valueObj) || typeof valueObj !== \"object\" || valueObj == null) {\n                        return true;\n                    }\n                    // For objects, only filter out empty objects without a value property\n                    return Object.keys(valueObj).length > 0;\n                })\n            );\n        }\n\n        if (requestBody.type === \"json\") {\n            request.postData.text = JSON.stringify(requestBody.value, null, 2);\n        } else if (requestBody.type === \"form\") {\n            request.postData.params = [];\n\n            for (const [name, rawValue] of Object.entries(requestBody.value)) {\n                const value = rawValue as {\n                    type: string;\n                    value?: unknown;\n                    filename?: string;\n                };\n                if (value.type === \"json\") {\n                    request.postData.params.push({\n                        name,\n                        value: typeof value.value === \"string\" ? value.value : JSON.stringify(value.value, null, 2)\n                    });\n                } else if (value.type === \"filename\") {\n                    request.postData.params.push({\n                        name,\n                        fileName: String(value.value ?? \"\")\n                    });\n                } else if (value.type === \"filenameWithData\") {\n                    request.postData.params.push({\n                        name,\n                        fileName: String(value.filename ?? \"\")\n                    });\n                } else if (value.type === \"filenames\") {\n                    for (const fileName of value.value as string[]) {\n                        request.postData.params.push({\n                            name,\n                            fileName\n                        });\n                    }\n                } else if (value.type === \"filenamesWithData\") {\n                    for (const { filename } of value.value as { filename: string }[]) {\n                        request.postData.params.push({\n                            name,\n                            fileName: filename\n                        });\n                    }\n                }\n            }\n        } else if (requestBody.type === \"bytes\") {\n            // TODO: verify this is correct\n            request.postData.params = [\n                {\n                    name: \"file\",\n                    value: String((requestBody.value as { value?: unknown })?.value ?? \"\")\n                }\n            ];\n        }\n    }\n\n    const auth = getFirstAuthScheme(endpoint, auths);\n\n    if (auth != null) {\n        visitDiscriminatedUnion(auth)._visit({\n            basicAuth: ({ usernameName = \"username\", passwordName = \"password\", passwordAlwaysEmpty }) => {\n                request.headers.push({\n                    name: \"Authorization\",\n                    value: passwordAlwaysEmpty\n                        ? `Basic <${usernameName}>:`\n                        : `Basic <${usernameName}>:<${passwordName}>`\n                });\n            },\n            bearerAuth: ({ tokenName = \"token\" }) => {\n                request.headers.push({\n                    name: \"Authorization\",\n                    value: `Bearer <${tokenName}>`\n                });\n            },\n            header: ({ headerWireValue, nameOverride = headerWireValue, prefix }) => {\n                request.headers.push({\n                    name: headerWireValue,\n                    value: prefix != null ? `${prefix} <${nameOverride}>` : `<${nameOverride}>`\n                });\n            },\n            oAuth: (oAuth) => {\n                visitDiscriminatedUnion(oAuth.value, \"type\")._visit({\n                    clientCredentials: (clientCredentials) => {\n                        visitDiscriminatedUnion(clientCredentials.value, \"type\")._visit({\n                            referencedEndpoint: () => {\n                                request.headers.push({\n                                    name: clientCredentials.value.headerName || \"Authorization\",\n                                    value: `${clientCredentials.value.tokenPrefix ? `${clientCredentials.value.tokenPrefix ?? \"Bearer\"} ` : \"\"}<token>.`\n                                });\n                            }\n                        });\n                    }\n                });\n            }\n        });\n    }\n\n    if (mimeType != null) {\n        request.headers.push({\n            name: \"Content-Type\",\n            value: mimeType\n        });\n    }\n\n    return request;\n}\n\n/**\n * Extract basic auth info from an endpoint's auth scheme, if present.\n * Returns the placeholder username and password names used in HAR headers.\n */\nexport function getHarRequestBasicAuth(\n    endpoint: EndpointDefinition,\n    auths: Record<AuthSchemeId, ApiAuth>\n): BasicAuthInfo | undefined {\n    const auth = getFirstAuthScheme(endpoint, auths);\n    if (auth?.type === \"basicAuth\") {\n        const { usernameName = \"username\", passwordName = \"password\" } = auth;\n        return {\n            username: `<${usernameName}>`,\n            password: `<${passwordName}>`\n        };\n    }\n    return undefined;\n}\n","import { type HarRequest, HTTPSnippet, type TargetId } from \"httpsnippet-lite\";\n\nimport { HTTP_SNIPPET_CLIENTS } from \"./constants\";\n\nconst IMPORT_PREFIXES: Partial<Record<TargetId, string>> = {\n    csharp: \"using RestSharp;\\n\\n\",\n    java: \"import com.mashape.unirest.http.HttpResponse;\\nimport com.mashape.unirest.http.Unirest;\\n\\n\"\n};\n\nconst PHP_AUTOLOAD_INSERT = \"\\nrequire_once('vendor/autoload.php');\\n\";\n\nexport interface BasicAuthInfo {\n    username: string;\n    password: string;\n}\n\nexport class HttpSnippetConverter {\n    private readonly snippet: HTTPSnippet;\n    private readonly basicAuth: BasicAuthInfo | undefined;\n\n    constructor(harRequest: HarRequest, basicAuth?: BasicAuthInfo) {\n        this.snippet = new HTTPSnippet(harRequest);\n        this.basicAuth = basicAuth;\n    }\n\n    async convert(targetId: TargetId, clientId: string): Promise<string | undefined> {\n        const convertedCode = await this.snippet.convert(targetId, clientId);\n        const raw =\n            typeof convertedCode === \"string\" ? convertedCode : convertedCode != null ? convertedCode[0] : undefined;\n\n        if (raw == null) {\n            return undefined;\n        }\n\n        let code = this.addImports(raw, targetId);\n        if (this.basicAuth != null) {\n            code = applyBasicAuthBase64(code, targetId, this.basicAuth);\n        }\n        return code;\n    }\n\n    async convertAll(): Promise<{ targetId: TargetId; code: string }[]> {\n        const results: { targetId: TargetId; code: string }[] = [];\n\n        for (const { targetId, clientId } of HTTP_SNIPPET_CLIENTS) {\n            const code = await this.convert(targetId, clientId);\n            if (code != null) {\n                results.push({ targetId, code });\n            }\n        }\n\n        return results;\n    }\n\n    private addImports(code: string, targetId: TargetId): string {\n        if (targetId === \"php\") {\n            return code.replace(/^<\\?php\\n/, `<?php${PHP_AUTOLOAD_INSERT}`);\n        }\n\n        const prefix = IMPORT_PREFIXES[targetId];\n        if (prefix != null) {\n            return `${prefix}${code}`;\n        }\n\n        return code;\n    }\n}\n\n/**\n * Replace the literal \"Basic <username>:<password>\" header value with\n * idiomatic base64 encoding code for each target language.\n */\nfunction applyBasicAuthBase64(code: string, targetId: TargetId, auth: BasicAuthInfo): string {\n    const literalValue = `Basic ${auth.username}:${auth.password}`;\n\n    // Build a regex that matches the literal value in single or double quotes\n    const escapedLiteral = literalValue.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n    const quotedPattern = new RegExp(`([\"'])${escapedLiteral}\\\\1`);\n\n    if (!quotedPattern.test(code)) {\n        return code;\n    }\n\n    switch (targetId) {\n        case \"python\":\n            return applyPythonBasicAuth(code, quotedPattern, auth);\n        case \"javascript\":\n            return applyJavaScriptBasicAuth(code, quotedPattern, auth);\n        case \"go\":\n            return applyGoBasicAuth(code, auth);\n        case \"ruby\":\n            return applyRubyBasicAuth(code, quotedPattern, auth);\n        case \"java\":\n            return applyJavaBasicAuth(code, quotedPattern, auth);\n        case \"php\":\n            return applyPhpBasicAuth(code, quotedPattern, auth);\n        case \"csharp\":\n            return applyCSharpBasicAuth(code, quotedPattern, auth);\n        case \"swift\":\n            return applySwiftBasicAuth(code, quotedPattern, auth);\n        default:\n            return code;\n    }\n}\n\nfunction applyPythonBasicAuth(code: string, pattern: RegExp, auth: BasicAuthInfo): string {\n    const importLine = \"import base64\\n\";\n    const credentialsVar = `credentials = base64.b64encode(f\"${auth.username}:${auth.password}\".encode()).decode()\\n`;\n\n    // Add imports at the top\n    code = code.replace(/^(import requests\\n)/, `$1${importLine}`);\n\n    // Add credentials variable before the headers dict\n    code = code.replace(/^(headers = \\{)/m, `${credentialsVar}\\n$1`);\n\n    // Replace the literal with the variable reference\n    code = code.replace(pattern, `f\"Basic {credentials}\"`);\n\n    return code;\n}\n\nfunction applyJavaScriptBasicAuth(code: string, pattern: RegExp, auth: BasicAuthInfo): string {\n    const credentialsLine = `const credentials = btoa(\"${auth.username}:${auth.password}\");\\n`;\n\n    // Add credentials variable before the options\n    code = code.replace(/^(const options)/m, `${credentialsLine}\\n$1`);\n\n    // Replace the literal with template literal\n    code = code.replace(pattern, \"`Basic ${credentials}`\");\n\n    return code;\n}\n\nfunction applyGoBasicAuth(code: string, auth: BasicAuthInfo): string {\n    // Go has a built-in SetBasicAuth method on http.Request\n    // Replace Header.Add(\"Authorization\", \"Basic ...\") with req.SetBasicAuth(username, password)\n    const headerPattern = new RegExp(\n        `req\\\\.Header\\\\.Add\\\\(\"Authorization\",\\\\s*\"Basic ${auth.username.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}:${auth.password.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}\"\\\\)`\n    );\n    code = code.replace(headerPattern, `req.SetBasicAuth(\"${auth.username}\", \"${auth.password}\")`);\n\n    return code;\n}\n\nfunction applyRubyBasicAuth(code: string, pattern: RegExp, auth: BasicAuthInfo): string {\n    const requireLine = \"require 'base64'\\n\";\n\n    // Add require at the top\n    code = code.replace(/^(require 'uri'\\n)/, `$1${requireLine}`);\n\n    // Replace the literal with Base64 encoding\n    code = code.replace(pattern, `\"Basic #{Base64.strict_encode64(\"${auth.username}:${auth.password}\")}\"`);\n\n    return code;\n}\n\nfunction applyJavaBasicAuth(code: string, pattern: RegExp, auth: BasicAuthInfo): string {\n    // Add import at the top\n    const importLine = \"import java.util.Base64;\\n\";\n    code = code.replace(/^(import com\\.mashape)/m, `${importLine}$1`);\n\n    // Replace the literal with Base64 encoding\n    code = code.replace(\n        pattern,\n        `\"Basic \" + Base64.getEncoder().encodeToString(\"${auth.username}:${auth.password}\".getBytes())`\n    );\n\n    return code;\n}\n\nfunction applyPhpBasicAuth(code: string, pattern: RegExp, auth: BasicAuthInfo): string {\n    code = code.replace(pattern, `'Basic ' . base64_encode('${auth.username}:${auth.password}')`);\n    return code;\n}\n\nfunction applyCSharpBasicAuth(code: string, pattern: RegExp, auth: BasicAuthInfo): string {\n    const usingLine = \"using System;\\nusing System.Text;\\n\";\n    code = code.replace(/^(using RestSharp;\\n)/, `$1${usingLine}`);\n\n    code = code.replace(\n        pattern,\n        `\"Basic \" + Convert.ToBase64String(Encoding.UTF8.GetBytes(\"${auth.username}:${auth.password}\"))`\n    );\n\n    return code;\n}\n\nfunction applySwiftBasicAuth(code: string, pattern: RegExp, auth: BasicAuthInfo): string {\n    // Add credentials variable after import Foundation\n    const credentialsCode = `\\nlet credentials = Data(\"${auth.username}:${auth.password}\".utf8).base64EncodedString()\\n`;\n    code = code.replace(/^(import Foundation\\n)/, `$1${credentialsCode}`);\n\n    // Replace the literal with string interpolation\n    code = code.replace(pattern, `\"Basic \\\\(credentials)\"`);\n\n    return code;\n}\n","import type { ApiDefinition, CodeSnippet, EndpointDefinition, ExampleEndpointCall } from \"../latest\";\nimport { getAuthHeaderName, getFirstAuthScheme, shouldRegenerateCurlSnippet } from \"./auth-scheme\";\nimport { HTTP_SNIPPET_CLIENTS } from \"./constants\";\nimport { convertToCurl } from \"./curl\";\nimport { getHarRequest, getHarRequestBasicAuth } from \"./get-har-request\";\nimport { type BasicAuthInfo, HttpSnippetConverter } from \"./HttpSnippetConverter\";\nimport { toSnippetHttpRequest } from \"./SnippetHttpRequest\";\nimport type { HttpSnippetLanguage, SnippetGenerationFlags, SnippetGenerators } from \"./types\";\n\n/**\n * Options for HTTP snippet generation\n */\nexport interface HttpSnippetOptions {\n    /** HTTP snippet generation flags */\n    flags: SnippetGenerationFlags;\n    /** Dynamic generators to check for available SDK snippets (optional) */\n    dynamicGenerators?: SnippetGenerators;\n    /** Existing snippets that should not be regenerated */\n    existingSnippets?: Record<string, CodeSnippet[]>;\n}\n\n/**\n * Generate a curl snippet for an endpoint example\n */\nexport function generateCurlSnippet(\n    apiDefinition: ApiDefinition,\n    endpoint: EndpointDefinition,\n    example: ExampleEndpointCall\n): CodeSnippet {\n    const authScheme = getFirstAuthScheme(endpoint, apiDefinition.auths);\n    const curlCode = convertToCurl(toSnippetHttpRequest(endpoint, example, authScheme));\n\n    return {\n        name: undefined,\n        language: \"curl\",\n        install: undefined,\n        code: curlCode,\n        generated: true,\n        description: undefined\n    };\n}\n\n/**\n * Generate HTTP snippets for an endpoint example using httpsnippet-lite\n */\nexport async function generateHttpSnippets(\n    apiDefinition: ApiDefinition,\n    endpoint: EndpointDefinition,\n    example: ExampleEndpointCall,\n    options: HttpSnippetOptions\n): Promise<CodeSnippet[]> {\n    const { flags, dynamicGenerators = {}, existingSnippets = {} } = options;\n    const snippets: CodeSnippet[] = [];\n\n    const isHttpSnippetsEnabled = flags.httpSnippets !== false;\n    const httpSnippetLanguages = Array.isArray(flags.httpSnippets) ? flags.httpSnippets : null;\n\n    // Check if a language should be included based on the httpSnippets configuration\n    const shouldIncludeLanguage = (language: string): boolean => {\n        if (!isHttpSnippetsEnabled) {\n            return language === \"curl\";\n        }\n        return httpSnippetLanguages == null || httpSnippetLanguages.includes(language as HttpSnippetLanguage);\n    };\n\n    // Generate or regenerate curl snippet if needed\n    // Regenerate if existing snippet has wrong auth header (targeted repair for pre-stored snippets)\n    // Also regenerate if basic auth uses -H \"Authorization: Basic\" instead of -u flag\n    const authScheme = getFirstAuthScheme(endpoint, apiDefinition.auths);\n    const expectedHeaderName = getAuthHeaderName(authScheme);\n    const needsCurlRegeneration = shouldRegenerateCurlSnippet(existingSnippets.curl, expectedHeaderName, authScheme);\n\n    if (needsCurlRegeneration && shouldIncludeLanguage(\"curl\")) {\n        snippets.push(generateCurlSnippet(apiDefinition, endpoint, example));\n    }\n\n    // Generate HTTP snippets for other languages\n    if (isHttpSnippetsEnabled) {\n        const harRequest = getHarRequest(endpoint, example, apiDefinition.auths, example.requestBody ?? undefined);\n        const basicAuth: BasicAuthInfo | undefined = getHarRequestBasicAuth(endpoint, apiDefinition.auths);\n        const converter = new HttpSnippetConverter(harRequest, basicAuth);\n\n        for (const { clientId, targetId } of HTTP_SNIPPET_CLIENTS) {\n            // Skip if snippet already exists\n            if (existingSnippets[targetId]?.length) {\n                continue;\n            }\n\n            // Skip if dynamic SDK snippets are available for this language\n            if (dynamicGenerators[targetId === \"javascript\" ? \"typescript\" : targetId]) {\n                continue;\n            }\n\n            // Skip JavaScript if TypeScript snippets exist and alwaysEnableJavaScriptFetch is disabled\n            if (\n                targetId === \"javascript\" &&\n                existingSnippets.typescript?.length &&\n                !flags.alwaysEnableJavaScriptFetch\n            ) {\n                continue;\n            }\n\n            // Check if this language should be included\n            if (!shouldIncludeLanguage(targetId)) {\n                continue;\n            }\n\n            const code = await converter.convert(targetId, clientId);\n\n            if (code != null) {\n                snippets.push({\n                    name: undefined,\n                    language: targetId,\n                    install: undefined,\n                    code,\n                    generated: true,\n                    description: undefined\n                });\n            }\n        }\n    }\n\n    return snippets;\n}\n\n/**\n * Check if a language should be included for HTTP snippet generation based on flags\n */\nexport function shouldIncludeHttpSnippetLanguage(\n    language: string,\n    flags: Pick<SnippetGenerationFlags, \"httpSnippets\">\n): boolean {\n    const isHttpSnippetsEnabled = flags.httpSnippets !== false;\n    const httpSnippetLanguages = Array.isArray(flags.httpSnippets) ? flags.httpSnippets : null;\n\n    if (!isHttpSnippetsEnabled) {\n        return language === \"curl\";\n    }\n    return httpSnippetLanguages == null || httpSnippetLanguages.includes(language as HttpSnippetLanguage);\n}\n","import type { ApiDefinition, AuthScheme, CodeSnippet, EndpointDefinition, ExampleEndpointCall } from \"../latest\";\nimport { getFirstAuthScheme } from \"./auth-scheme\";\nimport type { SnippetGenerators } from \"./types\";\n\n/**\n * Build the auth object for SDK snippet generators based on the auth scheme.\n * Returns a properly formatted auth object compatible with @fern-api/snippets generators.\n */\nfunction buildSnippetAuth(authScheme: AuthScheme | undefined): any {\n    if (!authScheme) {\n        return undefined;\n    }\n\n    switch (authScheme.type) {\n        case \"bearerAuth\":\n            return {\n                type: \"bearer\",\n                token: \"YOUR_TOKEN_HERE\"\n            };\n        case \"basicAuth\": {\n            const userLabel = (authScheme.usernameName ?? \"username\").toUpperCase().replace(/\\s+/g, \"_\");\n            const passLabel = (authScheme.passwordName ?? \"password\").toUpperCase().replace(/\\s+/g, \"_\");\n            return {\n                type: \"basic\",\n                username: `YOUR_${userLabel}_HERE`,\n                ...(authScheme.passwordAlwaysEmpty ? {} : { password: `YOUR_${passLabel}_HERE` })\n            };\n        }\n        case \"header\":\n            return {\n                type: \"header\",\n                value: \"YOUR_API_KEY_HERE\"\n            };\n        case \"oAuth\":\n            // OAuth uses bearer token format for SDK snippets\n            return {\n                type: \"bearer\",\n                token: \"YOUR_TOKEN_HERE\"\n            };\n        default:\n            return undefined;\n    }\n}\n\n/**\n * Build the SDK snippet request from an endpoint example.\n * Returns a request object compatible with @fern-api/snippets generators.\n */\nexport function buildSdkSnippetRequest(\n    apiDefinition: ApiDefinition,\n    endpoint: EndpointDefinition,\n    example: ExampleEndpointCall\n): any {\n    // Build auth configuration using multiAuth-aware selection\n    const authDefinition = getFirstAuthScheme(endpoint, apiDefinition.auths);\n    const auth = buildSnippetAuth(authDefinition);\n\n    // Process request body (filter out empty objects)\n    let bodyValue: unknown = undefined;\n    if (example.requestBody != null && example.requestBody.type === \"json\" && example.requestBody.value) {\n        if (typeof example.requestBody.value === \"object\" && !Array.isArray(example.requestBody.value)) {\n            const filteredValue = Object.fromEntries(\n                Object.entries(example.requestBody.value).filter(([_, valueObj]) => {\n                    // Keep arrays and primitive values\n                    if (Array.isArray(valueObj) || typeof valueObj !== \"object\" || valueObj == null) {\n                        return true;\n                    }\n                    // For objects, only filter out empty objects without a value property\n                    return Object.keys(valueObj).length > 0;\n                })\n            );\n            bodyValue = filteredValue;\n        } else {\n            bodyValue = example.requestBody.value;\n        }\n    }\n\n    return {\n        baseURL: undefined,\n        environment: undefined,\n        auth,\n        pathParameters: example.pathParameters,\n        queryParameters: example.queryParameters,\n        headers: example.headers,\n        requestBody: bodyValue,\n        method: endpoint.method\n    };\n}\n\n/**\n * Generate SDK snippets for an endpoint example using the provided generators\n */\nexport function generateSdkSnippets(\n    apiDefinition: ApiDefinition,\n    endpoint: EndpointDefinition,\n    example: ExampleEndpointCall,\n    generators: SnippetGenerators\n): CodeSnippet[] {\n    if (endpoint.method === \"HEAD\") {\n        return [];\n    }\n\n    const snippets: CodeSnippet[] = [];\n    const request = buildSdkSnippetRequest(apiDefinition, endpoint, example);\n\n    for (const [language, generator] of Object.entries(generators)) {\n        if (!generator) {\n            continue;\n        }\n\n        try {\n            const result = generator.generateSync(request);\n\n            if (result?.snippet) {\n                snippets.push({\n                    name: undefined,\n                    language,\n                    install: undefined,\n                    code: result.snippet,\n                    generated: true,\n                    description: undefined\n                });\n            }\n        } catch (error) {\n            console.error(`Error generating ${language} snippet:`, error);\n        }\n    }\n\n    return snippets;\n}\n\n/**\n * Generate a single SDK snippet for a specific language\n */\nexport function generateSdkSnippetForLanguage(\n    apiDefinition: ApiDefinition,\n    endpoint: EndpointDefinition,\n    example: ExampleEndpointCall,\n    generators: SnippetGenerators,\n    language: string\n): CodeSnippet | undefined {\n    if (endpoint.method === \"HEAD\") {\n        return undefined;\n    }\n\n    const generator = generators[language];\n    if (!generator) {\n        return undefined;\n    }\n\n    const request = buildSdkSnippetRequest(apiDefinition, endpoint, example);\n\n    try {\n        const result = generator.generateSync(request);\n\n        if (result?.snippet) {\n            return {\n                name: undefined,\n                language,\n                install: undefined,\n                code: result.snippet,\n                generated: true,\n                description: undefined\n            };\n        }\n    } catch (error) {\n        console.error(`Error generating ${language} snippet:`, error);\n    }\n\n    return undefined;\n}\n","import type { ApiDefinition, CodeSnippet, EndpointDefinition, ExampleEndpointCall } from \"../latest\";\nimport { createSnippetGenerators } from \"./generators\";\nimport { generateHttpSnippets, shouldIncludeHttpSnippetLanguage } from \"./http-snippets\";\nimport { generateSdkSnippets } from \"./sdk-snippets\";\nimport type { DynamicIRsByLanguage, SnippetGenerationFlags, SnippetGenerators } from \"./types\";\n\n/**\n * Backfill snippets for an entire API definition.\n * This is the main entry point for snippet generation during docs loading.\n */\nexport async function backfillSnippets(\n    apiDefinition: ApiDefinition,\n    dynamicIr: DynamicIRsByLanguage | undefined,\n    flags: SnippetGenerationFlags\n): Promise<ApiDefinition> {\n    return {\n        ...apiDefinition,\n        endpoints: await Promise.all(\n            Object.entries(apiDefinition.endpoints).map(async ([id, endpoint]) => {\n                let dynamicGenerators: SnippetGenerators = {};\n                try {\n                    if (dynamicIr) {\n                        dynamicGenerators = createSnippetGenerators({ endpoint, dynamicIr });\n                    }\n                } catch (error) {\n                    console.log(\"[backfill] error creating dynamic snippet generators:\", error);\n                }\n\n                return [\n                    id,\n                    {\n                        ...endpoint,\n                        examples: await Promise.all(\n                            endpoint.examples?.map((example) =>\n                                backfillSnippetsForExample(apiDefinition, dynamicGenerators, endpoint, example, flags)\n                            ) ?? []\n                        )\n                    }\n                ] as const;\n            })\n        ).then((entries) => Object.fromEntries(entries))\n    };\n}\n\n/**\n * Backfill snippets for a single endpoint example.\n * Combines SDK snippets (from dynamic IR) and HTTP snippets (from httpsnippet-lite).\n */\nexport async function backfillSnippetsForExample(\n    apiDefinition: ApiDefinition,\n    dynamicGenerators: SnippetGenerators,\n    endpoint: EndpointDefinition,\n    example: ExampleEndpointCall,\n    flags: SnippetGenerationFlags\n): Promise<ExampleEndpointCall> {\n    const snippets = { ...example.snippets };\n\n    const pushSnippet = (snippet: CodeSnippet) => {\n        (snippets[snippet.language] ??= []).push(snippet);\n    };\n\n    // Remove curl if it shouldn't be included\n    if (snippets.curl?.length && !shouldIncludeHttpSnippetLanguage(\"curl\", flags)) {\n        delete snippets.curl;\n    }\n\n    // Generate SDK snippets from dynamic IR\n    if (Object.keys(dynamicGenerators).length > 0 && endpoint.method !== \"HEAD\") {\n        const sdkSnippets = generateSdkSnippets(apiDefinition, endpoint, example, dynamicGenerators);\n        for (const snippet of sdkSnippets) {\n            pushSnippet(snippet);\n        }\n    }\n\n    // Generate HTTP snippets (curl and httpsnippet-lite)\n    const httpSnippets = await generateHttpSnippets(apiDefinition, endpoint, example, {\n        flags,\n        dynamicGenerators,\n        existingSnippets: snippets\n    });\n    for (const snippet of httpSnippets) {\n        // Replace existing curl snippets when regenerating (targeted repair for wrong auth headers)\n        if (snippet.language === \"curl\" && snippets.curl?.length) {\n            snippets.curl = [snippet];\n        } else {\n            pushSnippet(snippet);\n        }\n    }\n\n    return { ...example, snippets };\n}\n\n/**\n * Generate all snippets for a single example without modifying the original.\n * This is a utility function for use in FDR registration and other contexts.\n */\nexport async function generateSnippetsForExample(\n    apiDefinition: ApiDefinition,\n    endpoint: EndpointDefinition,\n    example: ExampleEndpointCall,\n    dynamicIr: DynamicIRsByLanguage | undefined,\n    flags: SnippetGenerationFlags\n): Promise<Record<string, CodeSnippet[]>> {\n    let dynamicGenerators: SnippetGenerators = {};\n\n    try {\n        if (dynamicIr) {\n            dynamicGenerators = createSnippetGenerators({ endpoint, dynamicIr });\n        }\n    } catch (error) {\n        console.log(\"[generateSnippetsForExample] error creating dynamic snippet generators:\", error);\n    }\n\n    const snippets: Record<string, CodeSnippet[]> = { ...example.snippets };\n\n    const pushSnippet = (snippet: CodeSnippet) => {\n        (snippets[snippet.language] ??= []).push(snippet);\n    };\n\n    // Generate SDK snippets\n    if (Object.keys(dynamicGenerators).length > 0 && endpoint.method !== \"HEAD\") {\n        const sdkSnippets = generateSdkSnippets(apiDefinition, endpoint, example, dynamicGenerators);\n        for (const snippet of sdkSnippets) {\n            pushSnippet(snippet);\n        }\n    }\n\n    // Generate HTTP snippets\n    const httpSnippets = await generateHttpSnippets(apiDefinition, endpoint, example, {\n        flags,\n        dynamicGenerators,\n        existingSnippets: snippets\n    });\n    for (const snippet of httpSnippets) {\n        // Replace existing curl snippets when regenerating (targeted repair for wrong auth headers)\n        if (snippet.language === \"curl\" && snippets.curl?.length) {\n            snippets.curl = [snippet];\n        } else {\n            pushSnippet(snippet);\n        }\n    }\n\n    return snippets;\n}\n","import type { TypeId } from \"../../navigation\";\nimport type {\n    GraphQlOperation,\n    GraphQlOperationType,\n    ObjectProperty,\n    PrimitiveType,\n    TypeDefinition,\n    TypeReference,\n    TypeShape\n} from \"../latest\";\n\n/**\n * Context needed to generate a GraphQL snippet\n */\nexport interface GraphQlSnippetContext {\n    operation: GraphQlOperation;\n    types: Record<TypeId, TypeDefinition>;\n}\n\n/**\n * Generated GraphQL snippet\n */\nexport interface GraphQlSnippet {\n    query: string;\n    variables: Record<string, unknown>;\n    response: unknown;\n}\n\n// Cache for generated snippets to avoid regenerating on re-renders\nconst snippetCache = new WeakMap<GraphQlOperation, GraphQlSnippet>();\n\n/**\n * Generate a GraphQL snippet from an operation definition\n */\nexport function generateGraphQlSnippet(context: GraphQlSnippetContext): GraphQlSnippet {\n    const cached = snippetCache.get(context.operation);\n    if (cached) {\n        return cached;\n    }\n    const { operation, types } = context;\n\n    const operationKeyword = getOperationKeyword(operation.operationType);\n    const operationName = getExampleOperationName(operation.operationType);\n\n    const args = operation.arguments ?? [];\n    const variables: Record<string, unknown> = {};\n\n    // Build variable definitions and collect example values\n    const variableDefinitions = args.map((arg) => {\n        const graphqlType = typeShapeToGraphQlType(arg.type, types);\n        const exampleValue = generateExampleValue(arg.type, types, 5, new Set(), arg.defaultValue);\n        variables[arg.name] = exampleValue;\n        return `$${arg.name}: ${graphqlType}`;\n    });\n\n    // Build argument usage in the query\n    const argumentUsage = args.map((arg) => `${arg.name}: $${arg.name}`);\n\n    // Build the selection set from the return type\n    const selectionSet = generateSelectionSet(operation.returnType, types, 2);\n\n    // Construct the query\n    let query = operationKeyword;\n    if (operationName || variableDefinitions.length > 0) {\n        query += ` ${operationName}`;\n        if (variableDefinitions.length > 0) {\n            query += `(${variableDefinitions.join(\", \")})`;\n        }\n    }\n\n    query += \" {\\n\";\n    query += `  ${operation.name}`;\n\n    if (argumentUsage.length > 0) {\n        query += `(${argumentUsage.join(\", \")})`;\n    }\n\n    if (selectionSet) {\n        query += ` ${selectionSet}`;\n    }\n\n    query += \"\\n}\";\n\n    // Generate example response based on return type\n    const response = generateResponseExample(operation.name, operation.returnType, types);\n\n    const result = { query, variables, response };\n    snippetCache.set(operation, result);\n    return result;\n}\n\n/**\n * Get the GraphQL operation keyword (query, mutation, subscription)\n */\nfunction getOperationKeyword(operationType: GraphQlOperationType): string {\n    switch (operationType) {\n        case \"QUERY\":\n            return \"query\";\n        case \"MUTATION\":\n            return \"mutation\";\n        case \"SUBSCRIPTION\":\n            return \"subscription\";\n        default:\n            return \"query\";\n    }\n}\n\n/**\n * Get the example operation name based on operation type\n */\nfunction getExampleOperationName(operationType: GraphQlOperationType): string {\n    switch (operationType) {\n        case \"QUERY\":\n            return \"ExampleQuery\";\n        case \"MUTATION\":\n            return \"ExampleMutation\";\n        case \"SUBSCRIPTION\":\n            return \"ExampleSubscription\";\n        default:\n            return \"ExampleQuery\";\n    }\n}\n\n/**\n * Convert a TypeShape to a GraphQL type string\n */\nfunction typeShapeToGraphQlType(shape: TypeShape, types: Record<TypeId, TypeDefinition>): string {\n    if (shape.type === \"alias\") {\n        return typeReferenceToGraphQlType(shape.value, types);\n    }\n    if (shape.type === \"enum\") {\n        return \"String\"; // Enums are typically strings in GraphQL\n    }\n    if (shape.type === \"object\") {\n        return \"Object\"; // Generic object type\n    }\n    if (shape.type === \"undiscriminatedUnion\" || shape.type === \"discriminatedUnion\") {\n        return \"Object\"; // Unions are complex types\n    }\n    return \"String\";\n}\n\n/**\n * Convert a TypeReference to a GraphQL type string\n */\nfunction typeReferenceToGraphQlType(ref: TypeReference, types: Record<TypeId, TypeDefinition>): string {\n    switch (ref.type) {\n        case \"primitive\":\n            return primitiveToGraphQlType(ref.value);\n        case \"id\": {\n            const typeDef = types[ref.id];\n            if (typeDef) {\n                return typeDef.displayName ?? unnamespacedName(typeDef.name) ?? \"Object\";\n            }\n            return \"Object\";\n        }\n        case \"optional\":\n            return typeShapeToGraphQlType(ref.shape, types);\n        case \"nullable\":\n            return typeShapeToGraphQlType(ref.shape, types);\n        case \"list\":\n            return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;\n        case \"set\":\n            return `[${typeShapeToGraphQlType(ref.itemShape, types)}]`;\n        case \"map\":\n            return \"Object\"; // Maps don't have direct GraphQL equivalent\n        case \"literal\":\n            return \"String\";\n        case \"unknown\":\n            return \"Object\";\n        default:\n            return \"String\";\n    }\n}\n\n/**\n * Extract the un-namespaced type name from a Fern type name.\n * e.g., \"orders_UserInput\" -> \"UserInput\"\n */\nfunction unnamespacedName(name: string): string {\n    const lastUnderscoreIndex = name.lastIndexOf(\"_\");\n    return lastUnderscoreIndex !== -1 ? name.slice(lastUnderscoreIndex + 1) : name;\n}\n\n/**\n * Convert a primitive type to GraphQL type\n */\nfunction primitiveToGraphQlType(primitive: PrimitiveType): string {\n    switch (primitive.type) {\n        case \"scalar\":\n            return primitive.name;\n        case \"integer\":\n        case \"long\":\n        case \"uint\":\n        case \"uint64\":\n        case \"bigInteger\":\n            return \"Int\";\n        case \"double\":\n            return \"Float\";\n        case \"boolean\":\n            return \"Boolean\";\n        case \"string\":\n        case \"uuid\":\n        case \"base64\":\n        case \"datetime\":\n        case \"date\":\n        default:\n            return \"String\";\n    }\n}\n\n/**\n * Collect all properties for an object type, including inherited properties from `extends`.\n */\nfunction collectObjectProperties(\n    shape: { extends: TypeId[]; properties: ObjectProperty[] },\n    types: Record<TypeId, TypeDefinition>\n): ObjectProperty[] {\n    const properties: ObjectProperty[] = [];\n    for (const parentId of shape.extends) {\n        const parentDef = types[parentId];\n        if (parentDef?.shape?.type === \"object\") {\n            properties.push(...collectObjectProperties(parentDef.shape, types));\n        }\n    }\n    properties.push(...shape.properties);\n    return properties;\n}\n\n/**\n * Generate an example value for a type\n */\nfunction generateExampleValue(\n    shape: TypeShape,\n    types: Record<TypeId, TypeDefinition>,\n    depth: number,\n    visited: Set<TypeId>,\n    defaultValue?: unknown\n): unknown {\n    if (defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    if (depth <= 0) {\n        return null;\n    }\n\n    if (shape.type === \"alias\") {\n        return generateExampleValueFromReference(shape.value, types, depth, visited);\n    }\n    if (shape.type === \"enum\") {\n        // Return the first enum value if available\n        const firstValue = shape.values?.[0];\n        return firstValue?.value ?? \"EXAMPLE_VALUE\";\n    }\n    if (shape.type === \"object\") {\n        const properties = collectObjectProperties(shape, types);\n        if (properties.length === 0) {\n            return {};\n        }\n        const result: Record<string, unknown> = {};\n        for (const prop of properties.slice(0, 10)) {\n            result[prop.key] = generateExampleValue(prop.valueShape, types, depth - 1, visited);\n        }\n        return result;\n    }\n    if (shape.type === \"undiscriminatedUnion\") {\n        const firstVariant = shape.variants?.[0];\n        if (firstVariant?.shape) {\n            return generateExampleValue(firstVariant.shape, types, depth, visited);\n        }\n        return {};\n    }\n    if (shape.type === \"discriminatedUnion\") {\n        const firstVariant = shape.variants?.[0];\n        if (firstVariant) {\n            const result: Record<string, unknown> = {\n                [shape.discriminant]: firstVariant.discriminantValue\n            };\n            const properties = collectObjectProperties(firstVariant, types);\n            for (const prop of properties.slice(0, 10)) {\n                result[prop.key] = generateExampleValue(prop.valueShape, types, depth - 1, visited);\n            }\n            return result;\n        }\n        return {};\n    }\n\n    return \"example\";\n}\n\n/**\n * Generate an example value from a type reference\n */\nfunction generateExampleValueFromReference(\n    ref: TypeReference,\n    types: Record<TypeId, TypeDefinition>,\n    depth: number,\n    visited: Set<TypeId>\n): unknown {\n    switch (ref.type) {\n        case \"primitive\":\n            return generateExamplePrimitiveValue(ref.value);\n        case \"id\": {\n            if (visited.has(ref.id)) {\n                return null;\n            }\n            const typeDef = types[ref.id];\n            if (typeDef?.shape) {\n                visited.add(ref.id);\n                const result = generateExampleValue(typeDef.shape, types, depth, visited);\n                visited.delete(ref.id);\n                return result;\n            }\n            return {};\n        }\n        case \"optional\":\n        case \"nullable\":\n            return generateExampleValue(ref.shape, types, depth, visited);\n        case \"list\":\n        case \"set\":\n            return [generateExampleValue(ref.itemShape, types, depth, visited)];\n        case \"map\":\n            return {};\n        case \"literal\":\n            return ref.value.value;\n        case \"unknown\":\n            return {};\n        default:\n            return \"example\";\n    }\n}\n\n/**\n * Generate example primitive values\n */\nfunction generateExamplePrimitiveValue(primitive: PrimitiveType): unknown {\n    switch (primitive.type) {\n        case \"integer\":\n        case \"long\":\n        case \"uint\":\n        case \"uint64\":\n        case \"bigInteger\":\n            return 0;\n        case \"double\":\n            return 0.0;\n        case \"boolean\":\n            return true;\n        case \"string\":\n            return \"example\";\n        case \"uuid\":\n            return \"00000000-0000-0000-0000-000000000000\";\n        case \"datetime\":\n            return new Date().toISOString();\n        case \"date\":\n            return new Date().toISOString().split(\"T\")[0];\n        case \"base64\":\n            return \"ZXhhbXBsZQ==\";\n        case \"scalar\":\n            return primitive.default ?? primitive.name;\n        default:\n            return \"example\";\n    }\n}\n\n/**\n * Generate a selection set for the return type\n */\nfunction generateSelectionSet(\n    shape: TypeShape,\n    types: Record<TypeId, TypeDefinition>,\n    depth: number,\n    visited: Set<TypeId> = new Set(),\n    indentLevel: number = 2\n): string {\n    if (depth <= 0) {\n        return \"\";\n    }\n\n    if (shape.type === \"alias\") {\n        return generateSelectionSetFromReference(shape.value, types, depth, visited, indentLevel);\n    }\n\n    if (shape.type === \"object\") {\n        const properties = shape.properties ?? [];\n        if (properties.length === 0) {\n            return \"\";\n        }\n\n        const indent = \"  \".repeat(indentLevel);\n        const closingIndent = \"  \".repeat(indentLevel - 1);\n\n        const fields = properties\n            .slice(0, 10) // Limit to first 10 fields\n            .map((prop) => {\n                const nestedSelection = generateSelectionSet(\n                    prop.valueShape,\n                    types,\n                    depth - 1,\n                    visited,\n                    indentLevel + 1\n                );\n                if (nestedSelection) {\n                    return `${indent}${prop.key} ${nestedSelection}`;\n                }\n                return `${indent}${prop.key}`;\n            });\n\n        return `{\\n${fields.join(\"\\n\")}\\n${closingIndent}}`;\n    }\n\n    if (shape.type === \"enum\") {\n        return \"\"; // Enums don't have selection sets\n    }\n\n    if (shape.type === \"undiscriminatedUnion\" || shape.type === \"discriminatedUnion\") {\n        // For unions, just return the field name without nested selection\n        return \"\";\n    }\n\n    return \"\";\n}\n\n/**\n * Generate selection set from a type reference\n */\nfunction generateSelectionSetFromReference(\n    ref: TypeReference,\n    types: Record<TypeId, TypeDefinition>,\n    depth: number,\n    visited: Set<TypeId>,\n    indentLevel: number\n): string {\n    switch (ref.type) {\n        case \"id\": {\n            if (visited.has(ref.id)) {\n                return \"\"; // Prevent infinite recursion\n            }\n            const typeDef = types[ref.id];\n            if (typeDef?.shape) {\n                visited.add(ref.id);\n                const result = generateSelectionSet(typeDef.shape, types, depth, visited, indentLevel);\n                visited.delete(ref.id);\n                return result;\n            }\n            return \"\";\n        }\n        case \"optional\":\n        case \"nullable\":\n            return generateSelectionSet(ref.shape, types, depth, visited, indentLevel);\n        case \"list\":\n        case \"set\":\n            return generateSelectionSet(ref.itemShape, types, depth, visited, indentLevel);\n        case \"primitive\":\n        case \"literal\":\n        case \"unknown\":\n        case \"map\":\n        default:\n            return \"\";\n    }\n}\n\n/**\n * Generate a GraphQL response example\n */\nfunction generateResponseExample(\n    operationName: string,\n    returnType: TypeShape,\n    types: Record<TypeId, TypeDefinition>\n): unknown {\n    const data = generateResponseData(returnType, types, 3, new Set());\n    return {\n        data: {\n            [operationName]: data\n        }\n    };\n}\n\n/**\n * Generate response data from a type shape\n */\nfunction generateResponseData(\n    shape: TypeShape,\n    types: Record<TypeId, TypeDefinition>,\n    depth: number,\n    visited: Set<TypeId>\n): unknown {\n    if (depth <= 0) {\n        return null;\n    }\n\n    if (shape.type === \"alias\") {\n        return generateResponseDataFromReference(shape.value, types, depth, visited);\n    }\n\n    if (shape.type === \"object\") {\n        const properties = shape.properties ?? [];\n        if (properties.length === 0) {\n            return {};\n        }\n\n        const result: Record<string, unknown> = {};\n        for (const prop of properties.slice(0, 10)) {\n            result[prop.key] = generateResponseData(prop.valueShape, types, depth - 1, visited);\n        }\n        return result;\n    }\n\n    if (shape.type === \"enum\") {\n        const firstValue = shape.values?.[0];\n        return firstValue?.value ?? \"EXAMPLE_VALUE\";\n    }\n\n    if (shape.type === \"undiscriminatedUnion\") {\n        // Return example for the first variant\n        const firstVariant = shape.variants?.[0];\n        if (firstVariant?.shape) {\n            return generateResponseData(firstVariant.shape, types, depth, visited);\n        }\n        return {};\n    }\n\n    if (shape.type === \"discriminatedUnion\") {\n        // Return example for the first variant\n        const firstVariant = shape.variants?.[0];\n        if (firstVariant) {\n            const result: Record<string, unknown> = {\n                [shape.discriminant]: firstVariant.discriminantValue\n            };\n            if (firstVariant.properties) {\n                for (const prop of firstVariant.properties.slice(0, 10)) {\n                    result[prop.key] = generateResponseData(prop.valueShape, types, depth - 1, visited);\n                }\n            }\n            return result;\n        }\n        return {};\n    }\n\n    return null;\n}\n\n/**\n * Generate response data from a type reference\n */\nfunction generateResponseDataFromReference(\n    ref: TypeReference,\n    types: Record<TypeId, TypeDefinition>,\n    depth: number,\n    visited: Set<TypeId>\n): unknown {\n    switch (ref.type) {\n        case \"primitive\":\n            return generateExamplePrimitiveValue(ref.value);\n        case \"id\": {\n            if (visited.has(ref.id)) {\n                return null; // Prevent infinite recursion\n            }\n            const typeDef = types[ref.id];\n            if (typeDef?.shape) {\n                visited.add(ref.id);\n                const result = generateResponseData(typeDef.shape, types, depth, visited);\n                visited.delete(ref.id);\n                return result;\n            }\n            return {};\n        }\n        case \"optional\":\n        case \"nullable\":\n            return generateResponseData(ref.shape, types, depth, visited);\n        case \"list\":\n        case \"set\":\n            return [generateResponseData(ref.itemShape, types, depth, visited)];\n        case \"map\":\n            return {};\n        case \"literal\":\n            return ref.value.value;\n        case \"unknown\":\n            return {};\n        default:\n            return null;\n    }\n}\n","import type { TargetId } from \"httpsnippet-lite\";\nimport type { DynamicIr } from \"../../client/APIV1Write\";\nimport type { HttpSnippetLanguage } from \"../../orpc-client/shared.js\";\n\n/**\n * Map of language identifiers to their dynamic IR data\n */\nexport type DynamicIRsByLanguage = Record<string, DynamicIr>;\n\n/**\n * Configuration for an HTTP snippet client\n */\nexport interface HTTPSnippetClient {\n    targetId: TargetId;\n    clientId: string;\n}\n\n/**\n * Flags controlling snippet generation behavior\n */\nexport interface SnippetGenerationFlags {\n    /**\n     * Controls HTTP snippet generation.\n     * - `false`: Only generate curl snippets\n     * - `true`: Generate HTTP snippets for all supported languages\n     * - `HttpSnippetLanguage[]`: Generate HTTP snippets only for specified languages\n     */\n    httpSnippets: boolean | HttpSnippetLanguage[];\n\n    /**\n     * When true, always generate JavaScript fetch snippets even if TypeScript snippets exist\n     */\n    alwaysEnableJavaScriptFetch: boolean;\n}\n\n/**\n * Supported languages for SDK snippet generation\n */\nexport type SdkSnippetLanguage = \"typescript\" | \"python\" | \"java\" | \"ruby\" | \"swift\" | \"csharp\" | \"go\" | \"php\";\n\nexport const SDK_SNIPPET_LANGUAGES: SdkSnippetLanguage[] = [\n    \"typescript\",\n    \"python\",\n    \"java\",\n    \"ruby\",\n    \"swift\",\n    \"csharp\",\n    \"go\",\n    \"php\"\n];\n\n/**\n * Map of language identifiers to their snippet generators.\n * Uses `any` type because the actual generator type from @fern-api/snippets\n * has complex type requirements that we don't need to enforce here.\n */\nexport type SnippetGenerators = Record<string, any>;\n\nexport type { HttpSnippetLanguage };\n","import identity from \"@fern-api/ui-core-utils/identity\";\nimport visitDiscriminatedUnion from \"@fern-api/ui-core-utils/visitDiscriminatedUnion\";\n\nimport type * as Latest from \"./latest\";\n\n/**\n * Visitor for API definitions.\n * This is used to traverse the API definition and apply functions to each node.\n */\nexport interface ApiDefinitionVisitor {\n    // endpoints\n    EndpointDefinition(endpoint: Latest.EndpointDefinition, key: string): Latest.EndpointDefinition;\n    HttpRequest(request: Latest.HttpRequest, key: string): Latest.HttpRequest;\n    HttpResponse(response: Latest.HttpResponse, key: string): Latest.HttpResponse;\n    ErrorResponse(error: Latest.ErrorResponse, key: string): Latest.ErrorResponse;\n    ExampleEndpointCall(example: Latest.ExampleEndpointCall, key: string): Latest.ExampleEndpointCall;\n    CodeSnippet(snippet: Latest.CodeSnippet, key: string): Latest.CodeSnippet;\n    ErrorExample(error: Latest.ErrorExample, key: string): Latest.ErrorExample;\n\n    // webhooks\n    WebhookDefinition(webhook: Latest.WebhookDefinition, key: string): Latest.WebhookDefinition;\n    WebhookPayload(payload: Latest.WebhookPayload, key: string): Latest.WebhookPayload;\n\n    // websockets\n    WebSocketChannel(channel: Latest.WebSocketChannel, key: string): Latest.WebSocketChannel;\n    WebSocketMessage(message: Latest.WebSocketMessage, key: string): Latest.WebSocketMessage;\n    ExampleWebSocketSession(session: Latest.ExampleWebSocketSession, key: string): Latest.ExampleWebSocketSession;\n\n    // types\n    TypeDefinition(type: Latest.TypeDefinition, key: string): Latest.TypeDefinition;\n    TypeShape(shape: Latest.TypeShape, key: string): Latest.TypeShape;\n    WebhookPayloadShape(shape: Latest.WebhookPayloadShape, key: string): Latest.WebhookPayloadShape;\n    ObjectType(property: Latest.ObjectType, key: string): Latest.ObjectType;\n    ObjectProperty(property: Latest.ObjectProperty, key: string): Latest.ObjectProperty;\n    EnumValue(value: Latest.EnumValue, key: string): Latest.EnumValue;\n    UndiscriminatedUnionVariant(\n        variant: Latest.UndiscriminatedUnionVariant,\n        key: string\n    ): Latest.UndiscriminatedUnionVariant;\n    DiscriminatedUnionVariant(variant: Latest.DiscriminatedUnionVariant, key: string): Latest.DiscriminatedUnionVariant;\n    FormDataRequest(request: Latest.FormDataRequest, key: string): Latest.FormDataRequest;\n    FormDataField(field: Latest.FormDataField, key: string): Latest.FormDataField;\n    FormDataFile(file: Latest.FormDataFile, key: string): Latest.FormDataFile;\n    FormDataFiles(files: Latest.FormDataFiles, key: string): Latest.FormDataFiles;\n}\n\nexport class Transformer {\n    public static with(visitor: Partial<ApiDefinitionVisitor>): Transformer {\n        return new Transformer({\n            EndpointDefinition: visitor.EndpointDefinition ?? identity,\n            HttpRequest: visitor.HttpRequest ?? identity,\n            HttpResponse: visitor.HttpResponse ?? identity,\n            ErrorResponse: visitor.ErrorResponse ?? identity,\n            ExampleEndpointCall: visitor.ExampleEndpointCall ?? identity,\n            CodeSnippet: visitor.CodeSnippet ?? identity,\n            ErrorExample: visitor.ErrorExample ?? identity,\n            WebhookDefinition: visitor.WebhookDefinition ?? identity,\n            WebhookPayload: visitor.WebhookPayload ?? identity,\n            WebSocketChannel: visitor.WebSocketChannel ?? identity,\n            WebSocketMessage: visitor.WebSocketMessage ?? identity,\n            ExampleWebSocketSession: visitor.ExampleWebSocketSession ?? identity,\n            TypeDefinition: visitor.TypeDefinition ?? identity,\n            TypeShape: visitor.TypeShape ?? identity,\n            WebhookPayloadShape: visitor.WebhookPayloadShape ?? identity,\n            ObjectType: visitor.ObjectType ?? identity,\n            ObjectProperty: visitor.ObjectProperty ?? identity,\n            EnumValue: visitor.EnumValue ?? identity,\n            UndiscriminatedUnionVariant: visitor.UndiscriminatedUnionVariant ?? identity,\n            DiscriminatedUnionVariant: visitor.DiscriminatedUnionVariant ?? identity,\n            FormDataRequest: visitor.FormDataRequest ?? identity,\n            FormDataField: visitor.FormDataField ?? identity,\n            FormDataFile: visitor.FormDataFile ?? identity,\n            FormDataFiles: visitor.FormDataFiles ?? identity\n        });\n    }\n\n    public static descriptions(transformer: (description: string, key: string) => string): Transformer {\n        function internalTransformer<T extends Latest.WithDescription>(withDescription: T, key: string): T {\n            const description =\n                withDescription.description != null ? transformer(withDescription.description, key) : undefined;\n            return { ...withDescription, description };\n        }\n\n        return Transformer.with({\n            EndpointDefinition: internalTransformer,\n            HttpRequest: internalTransformer,\n            HttpResponse: internalTransformer,\n            ErrorResponse: internalTransformer,\n            ExampleEndpointCall: internalTransformer,\n            CodeSnippet: internalTransformer,\n            ErrorExample: internalTransformer,\n            WebhookDefinition: internalTransformer,\n            WebhookPayload: internalTransformer,\n            WebSocketChannel: internalTransformer,\n            WebSocketMessage: internalTransformer,\n            ExampleWebSocketSession: internalTransformer,\n            TypeDefinition: internalTransformer,\n            ObjectProperty: internalTransformer,\n            EnumValue: internalTransformer,\n            UndiscriminatedUnionVariant: internalTransformer,\n            DiscriminatedUnionVariant: internalTransformer,\n            FormDataRequest: internalTransformer,\n            FormDataField: internalTransformer,\n            FormDataFile: internalTransformer,\n            FormDataFiles: internalTransformer\n        });\n    }\n\n    /**\n     * @internal visible for testing only\n     */\n    public static keys(collect: (key: string) => void): Transformer {\n        function visit<T>(value: T, key: string): T {\n            collect(key);\n            return value;\n        }\n        return Transformer.with({\n            EndpointDefinition: visit,\n            HttpRequest: visit,\n            HttpResponse: visit,\n            ErrorResponse: visit,\n            ExampleEndpointCall: visit,\n            CodeSnippet: visit,\n            ErrorExample: visit,\n            WebhookDefinition: visit,\n            WebhookPayload: visit,\n            WebSocketChannel: visit,\n            WebSocketMessage: visit,\n            ExampleWebSocketSession: visit,\n            TypeDefinition: visit,\n            TypeShape: visit,\n            WebhookPayloadShape: visit,\n            ObjectType: visit,\n            ObjectProperty: visit,\n            EnumValue: visit,\n            UndiscriminatedUnionVariant: visit,\n            DiscriminatedUnionVariant: visit,\n            FormDataRequest: visit,\n            FormDataField: visit,\n            FormDataFile: visit,\n            FormDataFiles: visit\n        });\n    }\n\n    private visitor: ApiDefinitionVisitor;\n    private constructor(visitor: ApiDefinitionVisitor) {\n        this.visitor = this.#wrapVisitor(visitor);\n    }\n\n    /**\n     * Visits an API definition and applies the visitor transformations to each node.\n     *\n     * This function treats the API Definition as an AST. The purpose is to apply transformations to the \"description\" field of each node.\n     *\n     * @param api the API definition to visit\n     * @param visitor the visitor to apply to the API definition\n     * @returns the API definition with the visitor transformations applied\n     */\n    apiDefinition = (api: Latest.ApiDefinition): Latest.ApiDefinition => {\n        const endpoints = Object.entries(api.endpoints).map(([id, endpoint]) => [\n            id,\n            this.visitor.EndpointDefinition(endpoint, `${api.id}/endpoint/${id}`)\n        ]);\n\n        const websockets = Object.entries(api.websockets).map(([id, websocket]) => [\n            id,\n            this.visitor.WebSocketChannel(websocket, `${api.id}/websocket/${id}`)\n        ]);\n\n        const webhooks = Object.entries(api.webhooks).map(([id, webhook]) => [\n            id,\n            this.visitor.WebhookDefinition(webhook, `${api.id}/webhoook/${id}`)\n        ]);\n\n        const types = Object.entries(api.types).map(([id, type]) => [\n            id,\n            this.visitor.TypeDefinition(type, `${api.id}/type-definition/${id}`)\n        ]);\n\n        const globalHeaders =\n            api.globalHeaders?.map((header) =>\n                this.visitor.ObjectProperty(header, `${api.id}/global-headers/${header.key}`)\n            ) ?? [];\n\n        return {\n            id: api.id,\n            apiName: api.apiName,\n            endpoints: Object.fromEntries(endpoints),\n            websockets: Object.fromEntries(websockets),\n            webhooks: Object.fromEntries(webhooks),\n            graphqlOperations: api.graphqlOperations,\n            types: Object.fromEntries(types),\n            globalHeaders,\n            auths: api.auths,\n            subpackages: api.subpackages,\n            snippetsConfiguration: api.snippetsConfiguration\n        };\n    };\n\n    #wrapVisitor = (visitor: ApiDefinitionVisitor): ApiDefinitionVisitor => {\n        const innerVisitor: ApiDefinitionVisitor = {\n            /**\n             * The following types do not have any nested types that need to be visited.\n             */\n\n            CodeSnippet: visitor.CodeSnippet,\n            ErrorExample: visitor.ErrorExample,\n            ExampleWebSocketSession: visitor.ExampleWebSocketSession,\n            ObjectProperty: visitor.ObjectProperty,\n            EnumValue: visitor.EnumValue,\n            UndiscriminatedUnionVariant: visitor.UndiscriminatedUnionVariant,\n            FormDataFile: visitor.FormDataFile,\n            FormDataFiles: visitor.FormDataFiles,\n\n            /**\n             * The following types have nested types that need to be visited.\n             */\n\n            EndpointDefinition: (endpoint, key) => visitor.EndpointDefinition(this.endpoint(endpoint, key), key),\n            HttpRequest: (request, key) => visitor.HttpRequest(this.httpRequest(request, key), key),\n            HttpResponse: (response, key) => visitor.HttpResponse(this.httpResponse(response, key), key),\n            ErrorResponse: (error, key) => visitor.ErrorResponse(this.errorResponse(error, key), key),\n            ExampleEndpointCall: (example, key) =>\n                visitor.ExampleEndpointCall(this.exampleEndpointCall(example, key), key),\n            WebhookDefinition: (webhook, key) => visitor.WebhookDefinition(this.webhookDefinition(webhook, key), key),\n            WebhookPayload: (payload, key) => visitor.WebhookPayload(this.webhookPayload(payload, key), key),\n            WebSocketChannel: (channel, key) => visitor.WebSocketChannel(this.webSocketChannel(channel, key), key),\n            WebSocketMessage: (message, key) => visitor.WebSocketMessage(this.webSocketMessage(message, key), key),\n            TypeDefinition: (type, key) => visitor.TypeDefinition(this.typeDefinition(type, key), key),\n            TypeShape: (shape, key) => visitor.TypeShape(this.typeShape(shape, key), key),\n            WebhookPayloadShape: (shape, key) => visitor.WebhookPayloadShape(this.webhookPayloadShape(shape, key), key),\n            ObjectType: (type, key) => visitor.ObjectType(this.objectType(type, key), key),\n            DiscriminatedUnionVariant: (variant, key) =>\n                visitor.DiscriminatedUnionVariant(this.objectType(variant, key), key),\n            FormDataRequest: (request, key) => visitor.FormDataRequest(this.formDataRequest(request, key), key),\n            FormDataField: (field, key) => visitor.FormDataField(this.formDataField(field, key), key)\n        };\n        return innerVisitor;\n    };\n\n    endpoint = (endpoint: Latest.EndpointDefinition, parentKey: string): Latest.EndpointDefinition => {\n        const pathParameters =\n            endpoint.pathParameters?.map((param) => ({\n                ...this.visitor.ObjectProperty(param, `${parentKey}/path/${param.key}`),\n                explode: param.explode\n            })) ?? [];\n        const queryParameters =\n            endpoint.queryParameters?.map((param) => ({\n                ...this.visitor.ObjectProperty(param, `${parentKey}/query/${param.key}`),\n                explode: param.explode\n            })) ?? [];\n        const requestHeaders =\n            endpoint.requestHeaders?.map((param) =>\n                this.visitor.ObjectProperty(param, `${parentKey}/requestHeader/${param.key}`)\n            ) ?? [];\n        const responseHeaders =\n            endpoint.responseHeaders?.map((param) =>\n                this.visitor.ObjectProperty(param, `${parentKey}/responseHeader/${param.key}`)\n            ) ?? [];\n        const requests = endpoint.requests?.map((request, i) =>\n            // this has changed\n            this.visitor.HttpRequest(request, `${parentKey}/request/${i}`)\n        );\n        const responses = endpoint.responses?.map((response, i) =>\n            // this has changed discretely\n            this.visitor.HttpResponse(response, `${parentKey}/response/${i}/${response.statusCode}`)\n        );\n        const errors =\n            endpoint.errors?.map((error, i) =>\n                this.visitor.ErrorResponse(error, `${parentKey}/error/${i}/${error.statusCode}`)\n            ) ?? [];\n        const examples =\n            endpoint.examples?.map((example, i) =>\n                this.visitor.ExampleEndpointCall(example, `${parentKey}/example/${i}`)\n            ) ?? [];\n\n        return {\n            ...endpoint,\n            pathParameters: pathParameters.length > 0 ? pathParameters : undefined,\n            queryParameters: queryParameters.length > 0 ? queryParameters : undefined,\n            requestHeaders: requestHeaders.length > 0 ? requestHeaders : undefined,\n            responseHeaders: responseHeaders.length > 0 ? responseHeaders : undefined,\n            requests,\n            responses,\n            errors: errors.length > 0 ? errors : undefined,\n            examples: examples.length > 0 ? examples : undefined\n        };\n    };\n\n    httpRequest = (request: Latest.HttpRequest, parentKey: string): Latest.HttpRequest => {\n        const body = visitDiscriminatedUnion(request.body)._visit<Latest.HttpRequestBodyShape>({\n            object: (value) => ({\n                ...value,\n                ...this.visitor.ObjectType(value, `${parentKey}/object`)\n            }),\n            alias: identity,\n            bytes: identity,\n            formData: (value) => ({\n                ...value,\n                ...this.visitor.FormDataRequest(value, `${parentKey}/formdata`)\n            })\n        });\n        return { ...request, body };\n    };\n\n    formDataField = (field: Latest.FormDataField, parentKey: string): Latest.FormDataField => {\n        return visitDiscriminatedUnion(field)._visit<Latest.FormDataField>({\n            file: (value) => ({\n                ...value,\n                ...this.visitor.FormDataFile(value, `${parentKey}/file/${value.key}`)\n            }),\n            files: (value) => ({\n                ...value,\n                ...this.visitor.FormDataFiles(value, `${parentKey}/files/${value.key}`)\n            }),\n            property: (value) => ({\n                ...value,\n                ...this.visitor.ObjectProperty(value, `${parentKey}/property/${value.key}`)\n            })\n        });\n    };\n\n    httpResponse = (response: Latest.HttpResponse, parentKey: string): Latest.HttpResponse => {\n        const body = visitDiscriminatedUnion(response.body)._visit<Latest.HttpResponseBodyShape>({\n            object: (value) => ({\n                ...value,\n                ...this.visitor.ObjectType(value, `${parentKey}/object`)\n            }),\n            alias: identity,\n            fileDownload: identity,\n            streamingText: identity,\n            stream: (value) => ({\n                ...value,\n                shape: this.visitor.TypeShape(value.shape, `${parentKey}/stream/shape`)\n            }),\n            empty: identity\n        });\n        return { ...response, body };\n    };\n\n    objectType = <T extends Latest.ObjectType>(type: T, parentKey: string): T => {\n        const properties = type.properties.map((prop) =>\n            this.visitor.ObjectProperty(prop, `${parentKey}/property/${prop.key}`)\n        );\n        return { ...type, properties };\n    };\n\n    errorResponse = (error: Latest.ErrorResponse, parentKey: string): Latest.ErrorResponse => {\n        const shape = error.shape ? this.visitor.TypeShape(error.shape, `${parentKey}/error/shape`) : undefined;\n        const examples =\n            error.examples?.map((example, i) => this.visitor.ErrorExample(example, `${parentKey}/example/${i}`)) ?? [];\n        return {\n            ...error,\n            shape,\n            examples: examples.length > 0 ? examples : undefined\n        };\n    };\n\n    exampleEndpointCall = (example: Latest.ExampleEndpointCall, parentKey: string): Latest.ExampleEndpointCall => {\n        const snippetsEntries = Object.entries(example.snippets ?? {})\n            .map(\n                ([language, snippets]) =>\n                    [\n                        language,\n                        snippets.map((snippet, i) =>\n                            this.visitor.CodeSnippet(snippet, `${parentKey}/snippet/${language}/${i}`)\n                        )\n                    ] as const\n            )\n            .filter(([, snippets]) => snippets.length > 0);\n\n        const snippets = Object.fromEntries(snippetsEntries);\n        return {\n            ...example,\n            snippets: snippetsEntries.length > 0 ? snippets : undefined\n        };\n    };\n\n    webhookDefinition = (webhook: Latest.WebhookDefinition, parentKey: string): Latest.WebhookDefinition => {\n        const payload =\n            webhook.payloads?.[0] != null\n                ? this.visitor.WebhookPayload(webhook.payloads[0], `${parentKey}/payload`)\n                : undefined;\n        const headers =\n            webhook.headers?.map((header) =>\n                this.visitor.ObjectProperty(header, `${parentKey}/header/${header.key}`)\n            ) ?? [];\n        const responses = webhook.responses?.map((response, i) =>\n            this.visitor.HttpResponse(response, `${parentKey}/response/${i}/${response.statusCode}`)\n        );\n        return {\n            ...webhook,\n            payloads: payload != null ? [payload] : undefined,\n            headers: headers.length > 0 ? headers : undefined,\n            responses\n        };\n    };\n\n    webhookPayload = (payload: Latest.WebhookPayload, parentKey: string): Latest.WebhookPayload => {\n        const shape = this.visitor.WebhookPayloadShape(payload.shape, `${parentKey}/shape`);\n        return { ...payload, shape };\n    };\n\n    webhookPayloadShape = (shape: Latest.WebhookPayloadShape, parentKey: string): Latest.WebhookPayloadShape => {\n        return visitDiscriminatedUnion(shape)._visit<Latest.WebhookPayloadShape>({\n            object: (value) => ({\n                ...value,\n                ...this.visitor.ObjectType(value, `${parentKey}/object`)\n            }),\n            alias: identity,\n            formData: (value) => ({\n                ...value,\n                ...this.visitor.FormDataRequest(value, `${parentKey}/formData`)\n            })\n        });\n    };\n\n    webSocketChannel = (channel: Latest.WebSocketChannel, parentKey: string): Latest.WebSocketChannel => {\n        const pathParameters =\n            channel.pathParameters?.map((param) => ({\n                ...this.visitor.ObjectProperty(param, `${parentKey}/path/${param.key}`),\n                explode: param.explode\n            })) ?? [];\n        const queryParameters =\n            channel.queryParameters?.map((param) => ({\n                ...this.visitor.ObjectProperty(param, `${parentKey}/query/${param.key}`),\n                explode: param.explode\n            })) ?? [];\n        const requestHeaders =\n            channel.requestHeaders?.map((param) =>\n                this.visitor.ObjectProperty(param, `${parentKey}/requestHeader/${param.key}`)\n            ) ?? [];\n        const messages = channel.messages.map((message) =>\n            this.visitor.WebSocketMessage(message, `${parentKey}/message/${message.origin}/${message.type}`)\n        );\n        const examples =\n            channel.examples?.map((example, i) =>\n                this.visitor.ExampleWebSocketSession(example, `${parentKey}/example/${i}`)\n            ) ?? [];\n        return {\n            ...channel,\n            pathParameters: pathParameters.length > 0 ? pathParameters : undefined,\n            queryParameters: queryParameters.length > 0 ? queryParameters : undefined,\n            requestHeaders: requestHeaders.length > 0 ? requestHeaders : undefined,\n            messages,\n            examples: examples.length > 0 ? examples : undefined\n        };\n    };\n\n    webSocketMessage = (message: Latest.WebSocketMessage, parentKey: string): Latest.WebSocketMessage => {\n        const body = this.visitor.TypeShape(message.body, `${parentKey}/body`);\n        return { ...message, body };\n    };\n\n    typeShape = (shape: Latest.TypeShape, parentKey: string): Latest.TypeShape => {\n        return visitDiscriminatedUnion(shape)._visit<Latest.TypeShape>({\n            object: (value) => ({\n                ...value,\n                ...this.visitor.ObjectType(value, `${parentKey}/object`)\n            }),\n            alias: identity,\n            enum: (value) => ({\n                ...value,\n                values: value.values.map((enumValue) =>\n                    this.visitor.EnumValue(enumValue, `${parentKey}/enum/value/${enumValue.value}`)\n                )\n            }),\n            undiscriminatedUnion: (value) => ({\n                ...value,\n                variants: value.variants.map((variant, i) =>\n                    this.visitor.UndiscriminatedUnionVariant(variant, `${parentKey}/undiscriminatedUnion/variant/${i}`)\n                )\n            }),\n            discriminatedUnion: (value) => ({\n                ...value,\n                variants: value.variants.map((variant) =>\n                    this.visitor.DiscriminatedUnionVariant(\n                        variant,\n                        `${parentKey}/discriminatedUnion/variant/${variant.discriminantValue}`\n                    )\n                )\n            })\n        });\n    };\n\n    formDataRequest = (request: Latest.FormDataRequest, parentKey: string): Latest.FormDataRequest => {\n        return {\n            ...request,\n            fields: request.fields.map((field) => this.visitor.FormDataField(field, `${parentKey}/field/${field.key}`))\n        };\n    };\n\n    typeDefinition = (type: Latest.TypeDefinition, parentKey: string): Latest.TypeDefinition => {\n        return {\n            ...type,\n            shape: this.visitor.TypeShape(type.shape, `${parentKey}/shape`)\n        };\n    };\n}\n"],"mappings":"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B,CAAC,IAAI,WAAW,QAAQ,KACxB,CAAC,IAAI,WAAW,OAAO,KACvB,CAAC,IAAI,WAAW,SAAS,KACzB,CAAC,IAAI,WAAW,MAAM,GACxB;AACE,QAAI;AACA,YAAM,YAAY,IAAI,IAAI,WAAW,GAAG,EAAE;AAC1C,aAAO,UAAU,SAAQ;IAC7B,QAAQ;AACJ,aAAO;IACX;EACJ;AAGA,MAAI;AACA,UAAM,YAAY,IAAI,IAAI,GAAG;AAC7B,WAAO,UAAU,SAAQ;EAC7B,QAAQ;AACJ,WAAO;EACX;AACJ;;;AC3CA,mBAAkB;;;ACAX,IAAM,iBAAiB;;EAE1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;EACA;;;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;;EACA;;EACA;;EACA;;EACA;;EACA;;;EAGA;EACA;EACA;EACA;;EAGA;;EACA;;EACA;;EACA;;EACA;;EACA;;;EAGA;;EACA;;EACA;;;EAGA;EACA;EACA;;;;ADrWE,SAAU,UAAU,MAAY;AAElC,SAAO,KAAK,QAAQ,mBAAmB,OAAO;AAG9C,SAAO,KAAK,QAAQ,MAAM,GAAG;AAG7B,SAAO,KAAK,QAAQ,MAAM,GAAG;AAE7B,QAAM,iBAAa,aAAAC,SAAM,MAAM,EAAE,SAAS,eAAc,CAAE;AAG1D,QAAM,iBAAiB,WAAW,QAAQ,YAAY,KAAK;AAC3D,SAAO;AACX;AAEA,IAAA,oBAAe;;;AEjBT,SAAU,gBAAgB,OAAgB,EAAE,aAAa,MAAK,IAAW,CAAA,GAAE;AAC7E,MAAI,SAAS,QAAQ,OAAO,UAAU,YAAY;AAC9C,WAAO,aAAa,SAAS;EACjC,WAAW,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AE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,aAAa,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,aAAa,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GA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Q,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAA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AE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GA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,wBACA,iBACA,eACA,qBACA,yBACA,+BACA,uBACA,SACA,8BACA,yBACA,4BACA,iBACA,aACA,oBACA,2BACA,2BACA,2BACA,gBACA,WACA,UACA,QACA,kCACA,QACA,kBACA,yBACA,WACA,0BACA,6BACA,gBACA,cACA,kBACA,oBACA,qBACA,sBACA,2BACA,0BACA,WACA,wBACA,2BACA,YACA,YACA,gBACA,kBACA,aACA,UACA,WACA,YACA,yBACA,wBACA,UACA,gCACA,+BACA,QACA,eACA,6BACA,aACA,gBACA,aACA,4BACA,wBACA,kBACA,mBACA,qBACA,MACA,oBACA,oBACA,UACA,gBACA,wBACA,QACA,QACA,YACA,oBACA,gBACA,cACA,eACA,gBACA,oBACA,eACA,mBACA,gBACA,SACA,4BACA,uCACA,+BACA,UACA,SACA,SACA,SACA,UACA,wBACA,6BACA,2BACA,4BACA,oBACA,wBACA,sBACA,+BACA,sBACA,sBACA,QACA,SACA,yBACA,oBACA,yBACA,oBACA,yBACA,0BACA,0BACA,gBACA,sBACA,qBACA,kCACA,0BACA,4BACA,2BACA,yBACA,YACA,0BACA,UACA,2BACA,qBACA,mBACA,8BACA,mBACA,wBACA,qBACA,uBACA,cACA,iCACA,UACA,SACA,iBACA,oBACA,uBACA,yBACA,sBACA,uBACA,qBACA,SACA,yBACA,UACA,0BACA,sBACA,UACA,kBACA,oBACA,iCACA,sBACA,mBACA,yBACA,YACA,oBACA,gBACA,YACA,YACA,gBACA,6BACA,SACA,mBACA,QACA,uBACA,YACA,kBACA,+BACA,qBACA,yBACA,WACA,UACA,UACA,UACA,WACA,+BACA,+BACA,kCACA,4BACA,cACA,aACA,WACA,QACA,iBACA,WACA,eACA,kBACA,eACA,iBACA,MACA,QACA,OACA,YACA,cACA,aACA,WACA,YACA,QACA,WAAA,GAIJ,8BAA8B,CAC1B,wBACA,wBACA,eACA,wBACA,gBACA,uCACA,2BAAA,GAIJ,aAAa,CACT,gBACA,gBACA,kBACA,aACA,iBACA,8BACA,wBACA,sBACA,QACA,cACA,kBACA,YACA,qBACA,YACA,yBACA,eACA,aACA,cACA,qBACA,kBACA,wBACA,wBACA,eACA,eACA,aACA,gBACA,QACA,wBACA,gBACA,gBACA,cACA,UACA,gBACA,gBACA,gBACA,gBACA,cACA,cACA,gBACA,2BACA,yBACA,uBAAA,GAIJ,eAAe,CAAC,YAAY,GAG5B,mBAAmB,CAAC,cAAc,YAAY,GAG9C,oBAAoB,CAChB,2BACA,kBACA,oBACA,kBACA,qBACA,iCACA,2BACA,mBACA,mBACA,kBACA,mBACA,oBACA,eACA,wBACA,uBACA,UACA,mBACA,wBACA,QACA,0BACA,uBACA,oBACA,wBACA,WACA,SACA,oBACA,cACA,4BACA,iBACA,0BACA,wBACA,wBACA,aACA,0BACA,iBACA,sBACA,YACA,YACA,0BACA,gCACA,UACA,wBACA,4BACA,+BACA,8BACA,cACA,yBACA,kBACA,eACA,wBACA,eACA,wBACA,WACA,SACA,iBACA,YACA,gBACA,cACA,qCACA,wBACA,uBACA,OAAA,GAIJ,0BAA0B,CACtB,oCACA,yBACA,QACA,iCACA,yBACA,wBACA,2BACA,uBACA,kBACA,eACA,iBACA,0BACA,cACA,qBACA,oCACA,aACA,SAAA,EAAA;AD9VR,IAAMC,KAAgB,oBAAI,IAAI,CAC1B,YACA,MACA,QACA,QACA,SACA,QACA,QACA,SACA,QACA,WACA,SACA,SACA,YACA,WACA,WACA,YACA,MACA,UACA,QACA,QACA,SACA,YACA,UACA,SACA,WACA,SACA,SACA,OACA,WACA,QACA,MACA,YACA,MACA,OACA,aACA,YACA,MACA,QACA,QACA,aACA,OACA,QACA,UACA,YACA,OACA,YACA,UACA,WACA,aACA,UACA,YACA,OACA,UACA,SACA,UACA,SACA,UACA,cACA,UACA,UACA,UACA,UACA,QACA,SACA,QACA,OACA,UACA,QACA,SACA,aACA,UACA,UACA,SACA,WACA,QACA,YACA,OAAA,CACH;AAID,IAAMC,KAAgB,oBA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","names":["exports","module","exports","module","exports","module","specials","s","m","string","x","x","title","z","z","z","d","object","typeId","properties","toRet","union","h","mapValues","compact","e","stringifiedValue","value","compact","compact","noop","qs","v","p","compact","noop","value","shape","o","object","p","union","v","message","fn","e","k","example","mapValues","init_dirname","__esmMin","process_exports","__export","_debugEnd","_debugProcess","_events","_eventsCount","_exiting","_fatalExceptions","_getActiveHandles","_getActiveRequests","_kill","_linkedBinding","_maxListeners","_preload_modules","_rawDebug","_startProfilerIdleNotifier","_stopProfilerIdleNotifier","_tickCallback","abort","addListener","allowedNodeEnvironmentFlags","arch","argv","argv0","assert","binding","browser","chdir","config","cpuUsage","cwd","debugPort","process","dlopen","domain","emit","emitWarning","env","execArgv","execPath","exit","features","hasUncaughtExceptionCaptureCallback","hrtime","kill","listeners","memoryUsage","moduleLoadList","nextTick","off","on","once","openStdin","pid","platform","ppid","prependListener","prependOnceListener","reallyExit","release","removeAllListeners","removeListener","resourceUsage","setSourceMapsEnabled","setUncaughtExceptionCaptureCallback","stderr","stdin","stdout","title","umask","uptime","version","versions","unimplemented","name","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","len","fun","args","i","Item","array","noop","condition","message","_performance","previousTimestamp","baseNow","clocktime","seconds","nanoseconds","nanoPerSec","nowOffset","init_process","init_buffer","type","mask","dir","time","diff","dew$2","_dewExec$2","exports$2","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","dew$1","_dewExec$1","exports$1","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","value","c","rt","dew","_dewExec","exports","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","byteOffset","obj","numberIsNaN","a","x","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","init_chunk_DtuTasat","INSPECT_MAX_BYTES","kMaxLength","freeGlobal","freeGlobal_default","freeSelf","root","root_default","Symbol","Symbol_default","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","getRawTag_default","objectToString","objectToString_default","nullTag","undefinedTag","baseGetTag","baseGetTag_default","isObjectLike","isObjectLike_default","symbolTag","isSymbol","isSymbol_default","arrayMap","iteratee","index","arrayMap_default","isArray","isArray_default","INFINITY","symbolProto","symbolToString","baseToString","baseToString_default","toString","toString_default","baseSlice","baseSlice_default","castSlice","castSlice_default","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","hasUnicode_default","asciiToArray","asciiToArray_default","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","unicodeToArray_default","stringToArray","stringToArray_default","createCaseFirst","methodName","strSymbols","chr","trailing","createCaseFirst_default","upperFirst","upperFirst_default","capitalize","capitalize_default","arrayReduce","accumulator","initAccum","arrayReduce_default","basePropertyOf","object","key","basePropertyOf_default","deburredLetters","deburrLetter","deburrLetter_default","reLatin","reComboMark","deburr","deburr_default","reAsciiWord","asciiWords","asciiWords_default","reHasUnicodeWord","hasUnicodeWord","hasUnicodeWord_default","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","unicodeWords_default","words","pattern","guard","words_default","reApos","createCompounder","callback","createCompounder_default","camelCase","word","camelCase_default","assertNever","keys","enableStackTracking","trackingType","globalFunctionFilters","globalFileFilters","addGlobalFunctionFilter","filter","stacktrace","maxFrames","skip","filterPaths","filterFunctions","stopOn","filterNode","filterJs","formatFilename","filename","stop","line","match","path","column","each","f","p","at","multiline","StackTraces","__publicField","current","frame","frames","stackTraces","startTracking","getFramesForTaggedObject","AbstractAstNode","CodeBlock","writer","TAB_SIZE","AbstractWriter","text","textEndsInNewline","textWithoutNewline","indent","indentedText","currIndentLevel","node","prefix","statement","withNewline","nodes","delimiter","writeFunction","firstNode","appendToLastLine","lines","appendTrackingComment","stack","isNamedArgument","argument","hasNamedArgument","arguments_","Ternary","true_","false_","Result","context","snippet","endpoint","reporter","AbstractDynamicSnippetsGenerator","request","options","endpoints","snippetGenerator","error","lastError","HttpEndpointReferenceParser","reference","Severity","ErrorReporter","_ErrorReporter","err","severity","clone","item","AbstractDynamicSnippetsGeneratorContext","ir","parameters","values","instances","parameter","param","typeInstanceValue","ignoreMissingParameters","snippetObject","objectRecord","property","record","fileValue","fileArrayValue","stringValues","typeId","namedType","discriminatedUnion","discriminantFieldName","discriminantValue","singleDiscriminatedUnionType","_","filtered","rawEndpoint","parsedEndpoint","location","endpointId","inlinePathParameters","inlineFileProperties","body","environmentID","environments","environment","multiEnvironmentUrlValues","firstEnvironment","expectedKeys","typeReference","resolvedType","auth","parameterName","expected","fileUpload","Style","Scope","Writer","namespace","allNamespaceSegments","allTypeClassReferences","generation","skipImports","skipGlobalQualifier","alias","set","imports","ns","refs","resolvedNs","firstSegment","ref","aliasFirstSegment","aliasNeedsGlobal","ast_exports","Access","And","Annotation","AnnotationGroup","AnonymousFunction","AstNode","Block","Class","ClassInstantiation","ClassReference","Dictionary","Enum","EnumInstantiation","Field","PrimitiveInstantiation","Interface","List","Literal","MemberNode","Method","MethodInvocation","MethodType","Node","OptionalWrapper","Or","Parameter","ReadOnlyMemory","Set","String_","Switch","TestClass","XmlDocBlock","XmlDocWriter","convertReadOnlyPrimitiveTypes","formatter","stringNode","origin","Boolean","Class_","fields","field","Date","DateTime","Decimal","Double","Float","Integer","Long","Uint","Ulong","Reference","String","Null","Nop","valueType","keyType","entries","entry","is","Unknown","element","fail","api_exports","ApiDefinitionSource","ApiVersionScheme","AsymmetricAlgorithm","AsymmetricKeySource","AuthScheme","AuthSchemesRequirement","AvailabilityStatus","ContainerType","Environments","ErrorDeclarationDiscriminantValue","ErrorDiscriminationStrategy","ExampleCodeSample","ExampleContainer","ExampleEndpointSuccessResponse","ExamplePrimitive","ExampleQueryParameterShape","ExampleRequestBody","ExampleResponse","ExampleSingleUnionTypeProperties","ExampleStyle","ExampleTypeReferenceShape","ExampleTypeShape","ExampleWebSocketMessageBody","FileProperty","FileUploadBodyPropertyEncoding","FileUploadRequestProperty","HmacAlgorithm","HttpEndpointSource","HttpMethod","HttpRequestBody","HttpResponseBody","JsonResponse","NamedTypeDefault","NonStreamHttpResponseBody","OAuthConfiguration","ObjectPropertyAccess","Pagination","PathParameterLocation","PrimitiveTypeV1","PrimitiveTypeV2","ProtobufMethodType","ProtobufType","PublishTarget","PublishingConfig","RequestPropertyValue","ResolvedTypeReference","SdkRequestBodyType","SdkRequestShape","ShapeType","SingleUnionTypeProperties","Source","StreamingResponse","SupportedSdkLanguage","Transport","Type","TypeReference","UnionDiscriminatorContext","V2AuthValues","V2EndpointLocationHttpMethod","V2HttpEndpointResponseBody","WebSocketMessageBody","WebSocketMessageOrigin","WebhookHttpMethod","WebhookPayload","WebhookPayloadComponent","WebhookSignatureEncoding","WebhookSignatureVerification","WebhookTimestampFormat","WellKnownProtobufType","audience_exports","auth_exports","commons_exports","constants_exports","dynamic_exports","environment_exports","errors_exports","examples_exports","generatorExec_exports","http_exports","ir_exports","proto_exports","publish_exports","types_exports","variables_exports","webhooks_exports","websocket_exports","visitor","AuthSchemesRequirementValues","AvailabilityStatusValues","Auth","AuthValues","ErrorSeverity","FileUploadRequestBodyProperty","GeneratorOutputConfig","InlinedRequestBody","LiteralType","NamedType","PublishInfo","ReferencedRequestBodyType","Request","Response","SingleDiscriminatedUnionType","declaration_exports","endpoints_exports","snippets_exports","HttpMethodValues","ErrorSeverityValues","ObjectPropertyAccessValues","PrimitiveTypeV1Values","V2EndpointLocationHttpMethodValues","GeneratorEnvironment","GeneratorPublishTarget","GithubPublishInfo","LicenseConfig","LicenseId","OutputMode","config_exports","LicenseIdValues","FileUploadBodyPropertyEncodingValues","PathParameterLocationValues","SupportedSdkLanguageValues","ExampleStyleValues","ProtobufMethodTypeValues","ShapeTypeValues","UnionDiscriminatorContextValues","AsymmetricAlgorithmValues","HmacAlgorithmValues","WebhookHttpMethodValues","WebhookPayloadComponentValues","WebhookSignatureEncodingValues","WebhookTimestampFormatValues","WebSocketMessageOriginValues","text_exports","hash","normalizeDates","uniqueId","char","iterate","seed","r","BaseType","Optional","Nullable","PrimitiveType","ReferenceType","CollectionType","ObjectType","optionalRef","Primitive","ULong","Object","ArbitraryType","fullyQualifiedName","Value","Binary","DateOnly","date","Uuid","StringEnum","Collection","Array","isReadOnlyMemoryType","ListType","Map","IDictionary","KeyValuePair","readOnlyMemoryTypeNames","typeName","namespaceAlias","enclosingType","generics","fullyQualified","global","isCollection","multipartMethodName","multipartMethodNameForCollection","isReferenceType","scope","isAttribute","nameToWrite","isAmbiguous","shouldGlobal","fqNameBase","lastDotIndex","namespacePart","namePart","fqName","typeQualification","segments","generic","idx","className","currentNamespace","classReferenceNamespace","namespaceToBeWrittenTo","nameToCheck","classReferenceSegments","namespaceToBeWrittenSegments","commonPrefixLength","minLength","nameToDeconflict","matchingNamespaces","matchingNamespacesCopy","conflictingNamespace","expectedName","isObject","generatorExec","ISO_8601_DATE_REGEX","ISO_8601_DATE_TIME_REGEX","codeblock","to","block","classReference","forceUseConstructor","properties","hasNamedArguments","internalType","year","month","day","datetime","dateTimeYear","dateTimeMonth","dateTimeDay","hours","minutes","milliseconds","itemType","method","async","configureAwait","isAsyncEnumerable","ESCAPE_MAP","ESCAPE_REGEX","escapeForCSharpString","escaped","ElementType","isTag","elem","Root","Text","Directive","Comment","Script","Tag","CDATA","Doctype","parent","prev","next","recursive","cloneNode","DataNode","data","ProcessingInstruction","NodeWithChildren","children","_a","Document","Element","attribs","_b","isCDATA","isText","isComment","isDirective","isDocument","cloneChildren","child","instruction","childs","defaultOpts","DomHandler","elementCB","parser","lastNode","previousSibling","decode_data_html_default","decode_data_xml_default","decodeMap","fromCodePoint","replaceCodePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","decodeMode","base","digitCount","startIdx","lastCp","expectedLength","valueLength","determineBranch","consumed","getDecoder","decoder","lastIndex","nodeIdx","branchCount","jumpOffset","mid","midVal","htmlDecoder","xmlDecoder","State","isWhitespace","isEndOfTagSection","isASCIIAlpha","QuoteType","Sequences","Tokenizer","xmlMode","decodeEntities","cbs","cp","chunk","isEnd","endOfText","actualIndex","sequence","lower","quote","endIndex","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","Parser","l","T","_c","_d","_f","_e","impliesClose","isImplied","A","I","_h","_g","isOpenImplied","C","P","_k","_j","slice","restoreDiff","encode_html_default","xmlCodeMap","getCodePoint","getEscaper","regex","map","lastIdx","escapeUTF8","escapeAttribute","escapeText","EntityLevel","EncodingMode","elementNames","attributeNames","DocumentPosition","parseDocument","handler","_XmlDocWriter","nodeName","decoded","converted","tagPattern","tags","tagName","doc","el","meaningfulChildren","href","attrs","k","v","entityMap","entity","dec","hex","methodBaseArgs","docs","initializer","cases","label","docWriter","exceptionSummary","exceptionType","access","const_","new_","get","init","annotations","summary","jsonPropertyName","readonly","static_","useRequired","skipDefaultInitializer","interfaceReference","accessors","override","isEvent","annotation","isOptional","useExpressionBodiedPropertySyntax","_Method","isAsync","return_","noBody","bodyType","typeParameters","codeExample","typeParameter","DefinedType","partial","interfaceReferences","_Class","abstract_","sealed","parentClassReference","primaryConstructor","constructor","ctor","subClass","subClasses","operator","operators","content","sortByAccess","sortByStatic","sortMethodName","sortMethodType","nestedClass","nestedInterface","normalOperator","Constructor","baseConstructorCall","CastOperator","accessSorter","_class","testMethod","builtIns","base_keywords","linq_keywords","async_keywords","iterator_keywords","declarator_keywords","using_keywords","modifier_keywords","pattern_keywords","member_names","keywords","Identifier","registry","jsonPath","Members","member","newName","TypeScope","redirectedName","actualName","Member","NameRegistry","_NameRegistry","types","segment","names","firstWord","identifier","originalFullyQualifiedName","trimmed","fqNamespace","part","classReferenceArgs","expectedFQN","callerJsonPath","classRef","existingJsonPath","quality","modified","resolvedNamespace","conflictResolution","dottedFqn","nestedVariant","cached","parentNamespace","remappedParent","remainingParts","newNamespace","originalNamespace","CSharp","parse","argz","classArgs","xmlDocBlockLike","lazy","factories","cache","Extern","returnType","elementType","typeToConvert","ofType","TRIMMED_KEYS","buildPath","parentPath","ModelNavigator","instance","parentProvenance","isTrimmedKey","childKey","childValue","provenance","source","typeEnum","valueName","fast","classDeclaration","name1","name2","typeIdOrDeclaration","declaration","join","Generation","intermediateRepresentation","apiName","customConfig","generatorConfig","support","fernFilepath","genericType","requestType","requestOptionsType","responseType","offsetType","stepType","cursorType","serializer","oneof","WithGeneration","DynamicLiteralMapper","named","fallbackToDefault","literal","bool","as","discriminatedUnionTypeInstance","unionVariant","baseProperties","innerClassName","instantiation","baseProperty","enum_","wireValue","enumValue","object_","undiscriminatedUnion","typeLiteral","primitive","dateTime","uuid","bigInt","DynamicTypeMapper","FilePropertyMapper","fileValues","bodyPropertyValue","DynamicSnippetsGeneratorContext","_DynamicSnippetsGeneratorContext","suffix","environmentName","requests","EndpointSnippetGenerator","style","class_","invocation","authArgs","optionArgs","baseUrlArgs","headerArgs","allClientOptionsArgs","baseUrl","baseUrlArg","headers","header","pathParameterFields","pathParameters","filePropertyInfo","queryParameterFields","queryParameter","headerFields","requestBodyFields","bodyProperties","namedParameters","DynamicSnippetsGenerator","init_dirname","__esmMin","process_exports","__export","_debugEnd","_debugProcess","_events","_eventsCount","_exiting","_fatalExceptions","_getActiveHandles","_getActiveRequests","_kill","_linkedBinding","_maxListeners","_preload_modules","_rawDebug","_startProfilerIdleNotifier","_stopProfilerIdleNotifier","_tickCallback","abort","addListener","allowedNodeEnvironmentFlags","arch","argv","argv0","assert","binding","browser","chdir","config","cpuUsage","cwd","debugPort","process","dlopen","domain","emit","emitWarning","env","execArgv","execPath","exit","features","hasUncaughtExceptionCaptureCallback","hrtime","kill","listeners","memoryUsage","moduleLoadList","nextTick","off","on","once","openStdin","pid","platform","ppid","prependListener","prependOnceListener","reallyExit","release","removeAllListeners","removeListener","resourceUsage","setSourceMapsEnabled","setUncaughtExceptionCaptureCallback","stderr","stdin","stdout","title","umask","uptime","version","versions","unimplemented","name","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","len","fun","args","i","Item","array","noop","condition","message","_performance","previousTimestamp","baseNow","clocktime","seconds","nanoseconds","nanoPerSec","nowOffset","init_process","init_buffer","type","mask","dir","time","diff","dew$2","_dewExec$2","exports$2","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","dew$1","_dewExec$1","exports$1","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","value","c","rt","dew","_dewExec","exports","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","byteOffset","obj","numberIsNaN","a","x","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","init_chunk_DtuTasat","INSPECT_MAX_BYTES","kMaxLength","init_chunk_DEMDiNwt","process$1","assertPath","path","normalizeStringPosix","allowAboveRoot","lastSegmentLength","lastSlash","dots","lastSlashIndex","_format","sep","pathObject","base","posix","resolvedPath","resolvedAbsolute","isAbsolute","trailingSeparator","joined","to","fromStart","fromEnd","fromLen","toStart","toEnd","toLen","lastCommonSep","fromCode","toCode","hasRoot","matchedSlash","extIdx","firstNonSlashEnd","startDot","startPart","preDotState","init_chunk_BlJi4mNy","_makeLong","basename","delimiter","dirname","extname","format","join","normalize","parse","relative","resolve","win32","init_path","assertNever","keys","object","key","enableStackTracking","trackingType","globalFunctionFilters","globalFileFilters","stacktrace","maxFrames","skip","filterPaths","filterFunctions","stopOn","filterNode","filterJs","formatFilename","filename","stop","line","match","column","each","f","p","StackTraces","multiline","__publicField","current","frame","frames","stackTraces","startTracking","tag","getFramesForTaggedObject","AbstractAstNode","AbstractFormatter","contents","content","NopFormatter","CodeBlock","writer","TAB_SIZE","AbstractWriter","text","textEndsInNewline","textWithoutNewline","indent","indentedText","currIndentLevel","node","prefix","statement","withNewline","nodes","writeFunction","firstNode","appendToLastLine","lines","appendTrackingComment","stack","Result","context","snippet","endpoint","reporter","AbstractDynamicSnippetsGenerator","request","options","endpoints","result","snippetGenerator","error","lastError","HttpEndpointReferenceParser","reference","Severity","ErrorReporter","_ErrorReporter","err","severity","clone","item","AbstractDynamicSnippetsGeneratorContext","ir","parameters","values","instances","parameter","param","typeInstanceValue","ignoreMissingParameters","snippetObject","objectRecord","property","record","fileValue","fileArrayValue","stringValues","typeId","namedType","discriminatedUnion","discriminantFieldName","discriminantValue","singleDiscriminatedUnionType","_","filtered","rawEndpoint","parsedEndpoint","location","endpointId","inlinePathParameters","inlineFileProperties","body","environmentID","environments","environment","multiEnvironmentUrlValues","firstEnvironment","expectedKeys","typeReference","resolvedType","auth","parameterName","expected","fileUpload","Scope","INVALID_GO_IDENTIFIER_TOKEN","RESERVED_KEYWORDS","Writer","packageName","rootImportPath","importPath","customConfig","formatter","maybeAlias","set","pathElements","elements","alias","split","possibleAlias","part","GoFile","packageStatement","imports","entries","stdlibImports","thirdPartyImports","entry","sortEntries","formatEntry","groups","go_exports","Alias","AstNode","Enum","Field","File","Func","FuncInvocation","IoReaderTypeReference","Method","MethodInvocation","MultiNode","Parameter","Pointer","Selector","Struct","TimeTypeReference","Type","TypeDeclaration","TypeInstantiation","GoTypeReference","UuidTypeReference","codeblock","enum_","field","file","func","identifier","invokeFunc","invokeMethod","method","pointer","selector","struct","switch_","typeDeclaration","Comment","docs","Identifier","writeArguments","arguments_","modifiedArguments","argument","writeMultiline","writeCompact","index","writeGenerics","generics","generic","idx","POINTER_HELPER_TYPES","ADDRESSABLE_TYPES","_TypeInstantiation","internalType","invokeMustParseDate","escapeGoString","invokeMustParseUUID","keyType","valueType","fields","typeInstantiation","element","keyA","keyB","map","filterNopMapEntries","invokePointerHelper","slice","filterNopValues","filterNopStructFields","getPointerHelperFuncName","funcName","_Enum","constructor_","member","tags","return_","receiver","pointerReceiver","returnType","embeds","constructor","methods","embed","exportedFields","unexportedFields","char","Switch","cases","default_","case_","NILABLE_TYPES","_Type","comment","GO_RESERVED_IDENTIFIERS","goExportedFieldName","stripped","firstChar","DEFAULT_MODULE_PATH","resolveRootImportPath","suffix","getMajorVersionSuffix","modulePath","getImportPath","modulePathWithSuffix","maybeAppendMajorVersionSuffix","packagePath","isModulePath","trimPrefix","majorVersion","parseMajorVersion","getVersion","mode","DynamicTypeInstantiationMapper","named","inner","collectionLiteral","aliasName","aliasImportPath","converted","v","as","aliasType","internal","literal","structTypeReference","discriminatedUnionTypeInstance","unionVariant","baseFields","object_","properties","enumValue","undiscriminatedUnion","fieldName","keyFieldName","valueFieldName","primitive","bool","date","dateTime","normalizedDateTime","uuid","bigInt","DynamicTypeMapper","goTypeReference","FilePropertyMapper","fileValues","bodyPropertyValue","DynamicSnippetsGeneratorContext","_DynamicSnippetsGeneratorContext","fernFilepath","declaration","environmentName","baseFunc","SNIPPET_PACKAGE_NAME","SNIPPET_IMPORT_PATH","SNIPPET_FUNC_NAME","CLIENT_VAR_NAME","TypeInst","WIREMOCK_BASE_URL","WIREMOCK_CLIENT_VAR_NAME","EndpointSnippetGenerator","includeTestIdHeader","otherArgs","requestArg","optionArgsInvocation","requestRef","baseUrlArg","baseUrl","wireValue","headers","header","pathParameters","bytesValue","pathParameterFields","filePropertyInfo","queryParameterFields","queryParameter","headerFields","requestBodyFields","bodyProperties","namedParameters","errorCase","ENDPOINT_STUB_NAME","DynamicSnippetsGenerator","init_dirname","__esmMin","process_exports","__export","_debugEnd","_debugProcess","_events","_eventsCount","_exiting","_fatalExceptions","_getActiveHandles","_getActiveRequests","_kill","_linkedBinding","_maxListeners","_preload_modules","_rawDebug","_startProfilerIdleNotifier","_stopProfilerIdleNotifier","_tickCallback","abort","addListener","allowedNodeEnvironmentFlags","arch","argv","argv0","assert","binding","browser","chdir","config","cpuUsage","cwd","debugPort","process","dlopen","domain","emit","emitWarning","env","execArgv","execPath","exit","features","hasUncaughtExceptionCaptureCallback","hrtime","kill","listeners","memoryUsage","moduleLoadList","nextTick","off","on","once","openStdin","pid","platform","ppid","prependListener","prependOnceListener","reallyExit","release","removeAllListeners","removeListener","resourceUsage","setSourceMapsEnabled","setUncaughtExceptionCaptureCallback","stderr","stdin","stdout","title","umask","uptime","version","versions","unimplemented","name","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","len","fun","args","i","Item","array","noop","condition","message","_performance","previousTimestamp","baseNow","clocktime","seconds","nanoseconds","nanoPerSec","nowOffset","init_process","init_buffer","type","mask","dir","time","diff","dew$2","_dewExec$2","exports$2","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","dew$1","_dewExec$1","exports$1","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","value","c","rt","dew","_dewExec","exports","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","byteOffset","obj","numberIsNaN","a","x","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","init_chunk_DtuTasat","INSPECT_MAX_BYTES","kMaxLength","freeGlobal","freeGlobal_default","freeSelf","root","root_default","Symbol","Symbol_default","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","getRawTag_default","objectToString","objectToString_default","nullTag","undefinedTag","baseGetTag","baseGetTag_default","isObjectLike","isObjectLike_default","symbolTag","isSymbol","isSymbol_default","arrayMap","iteratee","index","arrayMap_default","isArray","isArray_default","INFINITY","symbolProto","symbolToString","baseToString","baseToString_default","toString","toString_default","baseSlice","baseSlice_default","castSlice","castSlice_default","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","hasUnicode_default","asciiToArray","asciiToArray_default","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","unicodeToArray_default","stringToArray","stringToArray_default","createCaseFirst","methodName","strSymbols","chr","trailing","createCaseFirst_default","upperFirst","upperFirst_default","capitalize","capitalize_default","arrayReduce","accumulator","initAccum","arrayReduce_default","basePropertyOf","object","key","basePropertyOf_default","deburredLetters","deburrLetter","deburrLetter_default","reLatin","reComboMark","deburr","deburr_default","reAsciiWord","asciiWords","asciiWords_default","reHasUnicodeWord","hasUnicodeWord","hasUnicodeWord_default","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","unicodeWords_default","words","pattern","guard","words_default","reApos","createCompounder","callback","createCompounder_default","camelCase","word","camelCase_default","assertNever","extractErrorMessage","stringified","keys","enableStackTracking","trackingType","globalFunctionFilters","globalFileFilters","stacktrace","maxFrames","skip","filterPaths","filterFunctions","stopOn","filterNode","filterJs","formatFilename","filename","stop","line","match","path","column","each","f","p","StackTraces","multiline","__publicField","current","frame","frames","stackTraces","startTracking","getFramesForTaggedObject","AbstractAstNode","AbstractFormatter","contents","content","NopFormatter","CodeBlock","writer","TAB_SIZE","AbstractWriter","text","textEndsInNewline","textWithoutNewline","indent","indentedText","currIndentLevel","node","prefix","statement","withNewline","nodes","delimiter","writeFunction","firstNode","appendToLastLine","lines","appendTrackingComment","stack","isNamedArgument","argument","Result","context","snippet","endpoint","reporter","AbstractDynamicSnippetsGenerator","request","options","endpoints","snippetGenerator","error","lastError","HttpEndpointReferenceParser","reference","Severity","ErrorReporter","_ErrorReporter","err","severity","clone","item","AbstractDynamicSnippetsGeneratorContext","ir","parameters","values","instances","parameter","param","typeInstanceValue","ignoreMissingParameters","snippetObject","objectRecord","property","record","fileValue","fileArrayValue","stringValues","typeId","namedType","discriminatedUnion","discriminantFieldName","discriminantValue","singleDiscriminatedUnionType","_","filtered","rawEndpoint","parsedEndpoint","location","endpointId","inlinePathParameters","inlineFileProperties","body","environmentID","environments","environment","multiEnvironmentUrlValues","firstEnvironment","expectedKeys","typeReference","resolvedType","auth","parameterName","expected","fileUpload","Style","Scope","Writer","packageName","customConfig","formatter","JavaFile","packageStatement","imports","external_exports","BRAND","DIRTY","EMPTY_PATH","INVALID","NEVER","OK","ParseStatus","ZodType","ZodAny","ZodArray","ZodBigInt","ZodBoolean","ZodBranded","ZodCatch","ZodDate","ZodDefault","ZodDiscriminatedUnion","ZodEffects","ZodEnum","ZodError","ZodFirstPartyTypeKind","ZodFunction","ZodIntersection","ZodIssueCode","ZodLazy","ZodLiteral","ZodMap","ZodNaN","ZodNativeEnum","ZodNever","ZodNull","ZodNullable","ZodNumber","ZodObject","ZodOptional","ZodParsedType","ZodPipeline","ZodPromise","ZodReadonly","ZodRecord","ZodSet","ZodString","ZodSymbol","ZodTuple","ZodUndefined","ZodUnion","ZodUnknown","ZodVoid","addIssueToContext","anyType","arrayType","bigIntType","booleanType","coerce","custom","dateType","datetimeRegex","en_default","discriminatedUnionType","effectsType","enumType","functionType","getErrorMap","getParsedType","instanceOfType","intersectionType","isAborted","isAsync","isDirty","isValid","late","lazyType","literalType","makeIssue","mapType","nanType","nativeEnumType","neverType","nullType","nullableType","numberType","objectType","objectUtil","oboolean","onumber","optionalType","ostring","pipelineType","preprocessType","promiseType","quotelessJson","recordType","setType","setErrorMap","strictObjectType","stringType","symbolType","tupleType","undefinedType","unionType","unknownType","util","voidType","assertIs","_arg","_x","items","validKeys","k","checker","joinValues","separator","second","data","_ZodError","issues","subs","actualProto","_mapper","mapper","issue","fieldErrors","processError","curr","el","formErrors","firstEl","errorMap","_ctx","overrideErrorMap","map","params","errorMaps","issueData","fullPath","fullIssue","errorMessage","maps","ctx","overrideMap","_ParseStatus","status","results","arrayValue","pairs","syncPairs","pair","finalObject","errorUtil","ParseInputLazyPath","parent","handleResult","processCreateParams","invalid_type_error","required_error","description","iss","maybeAsyncResult","check","getIssueProperties","setError","refinementData","refinement","def","option","incoming","transform","defaultValueFunc","catchValueFunc","This","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","nanoidRegex","jwtRegex","durationRegex","emailRegex","_emojiRegex","emojiRegex","ipv4Regex","ipv4CidrRegex","ipv6Regex","ipv6CidrRegex","base64Regex","base64urlRegex","dateRegexSource","dateRegex","timeRegexSource","secondsRegexSource","secondsQuantifier","timeRegex","regex","opts","isValidIP","ip","isValidJWT","jwt","alg","header","decoded","isValidCidr","_ZodString","tooBig","tooSmall","validation","minLength","maxLength","ch","floatSafeRemainder","step","valDecCount","stepDecCount","decCount","valInt","stepInt","_ZodNumber","kind","inclusive","_ZodBigInt","_ZodDate","minDate","maxDate","_ZodArray","schema","deepPartialify","newShape","fieldSchema","_ZodObject","shape","shapeKeys","extraKeys","keyValidator","unknownKeys","catchall","defaultError","augmentation","merging","newField","createZodEnum","handleResults","unionErrors","childCtx","dirty","types","getDiscriminator","_ZodDiscriminatedUnion","discriminator","discriminatorValue","optionsMap","discriminatorValues","mergeValues","aType","bType","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","handleParsed","parsedLeft","parsedRight","merged","left","right","_ZodTuple","itemIndex","rest","schemas","_ZodRecord","keyType","valueType","third","finalMap","_ZodSet","finalizeSet","elements","parsedSet","element","minSize","maxSize","_ZodFunction","makeArgsIssue","makeReturnsIssue","returns","me","parsedArgs","parsedReturns","returnType","func","getter","_ZodEnum","expectedValues","enumValues","newDef","opt","nativeEnumValues","promisified","effect","checkCtx","processed","executeRefinement","acc","inner","base","preprocess","newCtx","_ZodPipeline","inResult","freeze","cleanParams","_params","fatal","r","_fatal","cls","CustomReadmeSectionSchema","BaseJavaCustomConfigSchema","java_exports","Access","AstNode","Class","ClassInstantiation","ClassReference","Method","MethodInvocation","Parameter","Type","TypeLiteral","classReference","class_","codeblock","instantiateClass","invokeMethod","method","file","access","fullyQualified","internalType","BigIntegerClassReference","OffsetDateTimeClassReference","InputStreamClassReference","UUIDClassReference","ListClassReference","MapClassReference","optional","OptionalClassReference","iterable","IterableClassReference","set","SetClassReference","ArraysClassReference","HashMapClassReference","_TypeLiteral","valueStr","isParameter","entries","useOf","typeLiteral","bigInteger","builder","filterNopBuilderParameters","aIsNonRequired","bIsNonRequired","aIsOptional","bIsOptional","filterNopConstructorParameters","date","LocalDateClassReference","dateTime","enum_","filterNopMapEntries","entry","ArrayListClassReference","HashSetClassReference","filterNopValues","uuid","writeArguments","arguments_","filteredArguments","filterNopArguments","writeMultilineArguments","writeArgument","static_","return_","DynamicTypeLiteralMapper","isCollapsedOptionalNullable","named","listLiteral","convertedValue","as","isItemOptional","v","itemValue","literal","bool","inUndiscriminatedUnion","discriminatedUnionTypeInstance","unionVariant","object_","properties","existingWireValues","defaultValue","paramOrderMap","filteredProperties","builderParameters","firstValue","primitive","enumValue","undiscriminatedUnion","attemptedVariants","variantErrors","errorsBefore","typeInstantiation","unionName","detailedErrors","fieldName","keyFieldName","valueFieldName","_literal","objectMappersClass","bigInt","DynamicTypeMapper","FilePropertyMapper","fileValues","bodyPropertyValue","RESERVED_NAMES","RESERVED_METHOD_NAMES","DynamicSnippetsGeneratorContext","_DynamicSnippetsGeneratorContext","sharedCustomConfig","environmentName","declaration","indexMap","required","instance","byWireValue","ordered","tokens","fernFilepath","suffix","segment","token","kebab","char","SNIPPET_PACKAGE_NAME","SNIPPET_CLASS_NAME","SNIPPET_METHOD_NAME","SNIPPET_METHOD_ARG","CLIENT_VAR_NAME","STRING_TYPE_REFERENCE","unwrapOptionalFromListItems","itemType","EndpointSnippetGenerator","style","isOAuth","oauthValues","otherArgs","builderArgs","baseUrlArg","usedVariables","variable","variableName","apiPathParams","stringArgs","baseUrl","headers","pathParameters","field","requestOptionsArg","convertedValueStr","pathParameterFields","nonVariablePathParams","filePropertyInfo","filteredQueryParameters","queryParameter","queryParameterFields","filteredHeaders","headerFields","requestBodyFields","requestHeaders","requestOptionsClass","builderChain","buildMethodCall","namedParameters","DynamicSnippetsGenerator","init_dirname","__esmMin","process_exports","__export","_debugEnd","_debugProcess","_events","_eventsCount","_exiting","_fatalExceptions","_getActiveHandles","_getActiveRequests","_kill","_linkedBinding","_maxListeners","_preload_modules","_rawDebug","_startProfilerIdleNotifier","_stopProfilerIdleNotifier","_tickCallback","abort","addListener","allowedNodeEnvironmentFlags","arch","argv","argv0","assert","binding","browser","chdir","config","cpuUsage","cwd","debugPort","process","dlopen","domain","emit","emitWarning","env","execArgv","execPath","exit","features","hasUncaughtExceptionCaptureCallback","hrtime","kill","listeners","memoryUsage","moduleLoadList","nextTick","off","on","once","openStdin","pid","platform","ppid","prependListener","prependOnceListener","reallyExit","release","removeAllListeners","removeListener","resourceUsage","setSourceMapsEnabled","setUncaughtExceptionCaptureCallback","stderr","stdin","stdout","title","umask","uptime","version","versions","unimplemented","name","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","len","fun","args","i","Item","array","noop","condition","message","_performance","previousTimestamp","baseNow","clocktime","seconds","nanoseconds","nanoPerSec","nowOffset","init_process","init_buffer","type","mask","dir","time","diff","dew$2","_dewExec$2","exports$2","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","dew$1","_dewExec$1","exports$1","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","value","c","rt","dew","_dewExec","exports","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","byteOffset","obj","numberIsNaN","a","x","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","init_chunk_DtuTasat","INSPECT_MAX_BYTES","kMaxLength","freeGlobal","freeGlobal_default","freeSelf","root","root_default","Symbol","Symbol_default","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","getRawTag_default","objectToString","objectToString_default","nullTag","undefinedTag","baseGetTag","baseGetTag_default","isObjectLike","isObjectLike_default","symbolTag","isSymbol","isSymbol_default","arrayMap","iteratee","index","arrayMap_default","isArray","isArray_default","INFINITY","symbolProto","symbolToString","baseToString","baseToString_default","isObject","isObject_default","asyncTag","funcTag","genTag","proxyTag","isFunction","isFunction_default","coreJsData","coreJsData_default","maskSrcKey","uid","isMasked","func","isMasked_default","funcProto","funcToString","toSource","toSource_default","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","baseIsNative_default","getValue","object","key","getValue_default","getNative","getNative_default","WeakMap","WeakMap_default","noop_default","baseFindIndex","predicate","fromIndex","fromRight","baseFindIndex_default","baseIsNaN","baseIsNaN_default","strictIndexOf","strictIndexOf_default","baseIndexOf","baseIndexOf_default","arrayIncludes","arrayIncludes_default","MAX_SAFE_INTEGER","reIsUint","isIndex","isIndex_default","eq","other","eq_default","isLength","isLength_default","isArrayLike","isArrayLike_default","isPrototype","Ctor","isPrototype_default","baseTimes","baseTimes_default","argsTag","baseIsArguments","baseIsArguments_default","propertyIsEnumerable","isArguments","isArguments_default","stubFalse","stubFalse_default","freeExports","freeModule","moduleExports","nativeIsBuffer","isBuffer","isBuffer_default","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseIsTypedArray_default","baseUnary","baseUnary_default","freeProcess","nodeUtil","types","nodeUtil_default","nodeIsTypedArray","isTypedArray","isTypedArray_default","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","arrayLikeKeys_default","overArg","transform","overArg_default","nativeKeys","nativeKeys_default","baseKeys","baseKeys_default","keys","keys_default","nativeCreate","nativeCreate_default","hashClear","hashClear_default","hashDelete","hashDelete_default","HASH_UNDEFINED","hashGet","data","hashGet_default","hashHas","hashHas_default","hashSet","hashSet_default","Hash","entries","entry","Hash_default","listCacheClear","listCacheClear_default","assocIndexOf","assocIndexOf_default","arrayProto","splice","listCacheDelete","lastIndex","listCacheDelete_default","listCacheGet","listCacheGet_default","listCacheHas","listCacheHas_default","listCacheSet","listCacheSet_default","ListCache","ListCache_default","Map","Map_default","mapCacheClear","mapCacheClear_default","isKeyable","isKeyable_default","getMapData","map","getMapData_default","mapCacheDelete","mapCacheDelete_default","mapCacheGet","mapCacheGet_default","mapCacheHas","mapCacheHas_default","mapCacheSet","mapCacheSet_default","MapCache","MapCache_default","toString","toString_default","arrayPush","values","arrayPush_default","baseSlice","baseSlice_default","castSlice","castSlice_default","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","hasUnicode_default","asciiToArray","asciiToArray_default","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","unicodeToArray_default","stringToArray","stringToArray_default","createCaseFirst","methodName","strSymbols","chr","trailing","createCaseFirst_default","upperFirst","upperFirst_default","capitalize","capitalize_default","arrayReduce","accumulator","initAccum","arrayReduce_default","basePropertyOf","basePropertyOf_default","deburredLetters","deburrLetter","deburrLetter_default","reLatin","reComboMark","deburr","deburr_default","reAsciiWord","asciiWords","asciiWords_default","reHasUnicodeWord","hasUnicodeWord","hasUnicodeWord_default","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","unicodeWords_default","words","guard","words_default","reApos","createCompounder","callback","createCompounder_default","camelCase","word","camelCase_default","stackClear","stackClear_default","stackDelete","stackDelete_default","stackGet","stackGet_default","stackHas","stackHas_default","LARGE_ARRAY_SIZE","stackSet","pairs","stackSet_default","Stack","Stack_default","arrayFilter","resIndex","arrayFilter_default","stubArray","stubArray_default","nativeGetSymbols","getSymbols","symbol","getSymbols_default","baseGetAllKeys","keysFunc","symbolsFunc","baseGetAllKeys_default","getAllKeys","getAllKeys_default","DataView","DataView_default","Promise","Promise_default","Set","Set_default","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","getTag_default","Uint8Array","Uint8Array_default","setCacheAdd","setCacheAdd_default","setCacheHas","setCacheHas_default","SetCache","SetCache_default","arraySome","arraySome_default","cacheHas","cache","cacheHas_default","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","bitmask","customizer","equalFunc","stack","isPartial","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","equalArrays_default","mapToArray","mapToArray_default","setToArray","set","setToArray_default","symbolValueOf","equalByTag","convert","stacked","equalByTag_default","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objValue","objCtor","othCtor","equalObjects_default","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqualDeep_default","baseIsEqual","baseIsEqual_default","arrayIncludesWith","comparator","arrayIncludesWith_default","isEqual","isEqual_default","createSet","createSet_default","baseUniq","includes","isCommon","outer","computed","seenIndex","baseUniq_default","uniqWith","uniqWith_default","assertNever","enableStackTracking","trackingType","globalFunctionFilters","globalFileFilters","stacktrace","maxFrames","skip","filterPaths","filterFunctions","stopOn","filterNode","filterJs","formatFilename","filename","stop","line","match","path","column","each","f","p","StackTraces","multiline","__publicField","current","frame","frames","stackTraces","startTracking","getFramesForTaggedObject","AbstractAstNode","CodeBlock","writer","TAB_SIZE","AbstractWriter","text","textEndsInNewline","textWithoutNewline","indent","indentedText","currIndentLevel","node","prefix","statement","withNewline","nodes","delimiter","writeFunction","firstNode","appendToLastLine","lines","appendTrackingComment","isNamedArgument","argument","Ternary","true_","false_","Result","context","snippet","endpoint","reporter","AbstractDynamicSnippetsGenerator","request","options","endpoints","snippetGenerator","error","lastError","HttpEndpointReferenceParser","reference","Severity","ErrorReporter","_ErrorReporter","err","severity","clone","item","AbstractDynamicSnippetsGeneratorContext","ir","parameters","instances","parameter","param","typeInstanceValue","ignoreMissingParameters","snippetObject","objectRecord","property","record","fileValue","fileArrayValue","stringValues","typeId","namedType","discriminatedUnion","discriminantFieldName","discriminantValue","singleDiscriminatedUnionType","_","filtered","rawEndpoint","parsedEndpoint","location","endpointId","inlinePathParameters","inlineFileProperties","body","environmentID","environments","environment","multiEnvironmentUrlValues","firstEnvironment","expectedKeys","typeReference","resolvedType","auth","parameterName","expected","fileUpload","Scope","SELF","STATIC","PHP_RESERVED_KEYWORDS","php_exports","Access","Array_","AstNode","Attribute","Class","ClassInstantiation","ClassReference","DataClass","Enum","Field","Interface","Method","MethodInvocation","Parameter","Trait","Type","TypeLiteral","Writer","assignVariable","attribute","classReference","class_","codeblock","dataClass","enum_","escapePhpString","field","instantiateClass","interface_","invokeMethod","mergeArrays","method","ternary","this_","throwException","trait","variable","parseFullyQualifiedName","rawFullyQualifiedName","namespace","rootNamespace","customConfig","_a","seenRef","fullyQualifiedName","skipImports","imports","referenceKeys","ref","generics","refString","convertToPhpVariableName","Comment","docs","docsSplit","orderByAccess","items","_orderByAccess","order","access","abstract","parentClassReference","traits","interfaceReferences","constructor","methods","traitClassReference","comment","fields","initializer","readonly_","writeArguments","arguments_","writeMultiline","writeCompact","writeArgument","static_","_TypeLiteral","internalType","buildFileFromString","buildDateTimeFromString","filterNopValues","filterNopMapEntries","typeLiteral","element","_Type","DateTimeClassReference","requiredTypes","optionalTypes","orderedEntries","isMixed","isUnion","generic","keyType","valueType","flattenedTypes","uniqueTypes","flattened","unionTypes","hasMixed","semanticallyUnique","typeStrings","typeString","hasOptional","convertFromPhpVariableName","CONSTRUCTOR_PARAMETER_NAME","constructorAccess","orderedFields","throws","return_","noBody","requiredParameters","optionalParameters","throw_","backing","serializable","member","escapedValue","inlineDocs","attributes","extends_","MergeArrays","arrays","variableRef","variableValue","stringValue","getSafeClassName","className","DynamicTypeLiteralMapper","named","literalType","bool","v","as","discriminatedUnionTypeInstance","unionVariant","unionProperties","converted","baseFields","object_","providedKeys","placeholder","elementPlaceholder","keyPlaceholder","valuePlaceholder","primitive","firstValue","firstType","literal","enumValue","undiscriminatedUnion","errorsBefore","FilePropertyMapper","fileValues","fallback","bodyPropertyValue","RESERVED_METHOD_NAMES","REQUEST_NAMESPACE","TYPES_NAMESPACE","DynamicSnippetsGeneratorContext","_DynamicSnippetsGeneratorContext","getRootNamespace","unsafeName","fernFilepath","suffix","environmentName","organization","namespaceOverride","CLIENT_VAR_NAME","SNIPPET_NAMESPACE","PHP_PREFIX","EndpointSnippetGenerator","requestOptions","headers","mappedHeaderNames","header","unmappedEntries","authArgs","defaultInferredAuthValues","hasMultiUrlEnvironments","environmentArg","optionArgs","baseUrlArgs","environmentClassRef","paramName","url","defaultName","environmentsConfig","firstEnv","baseUrlIds","firstBaseUrlId","firstBaseUrlValue","firstEnvironmentName","baseUrlId","urls","baseUrl","baseUrlArg","pathParameters","pathParameterFields","filePropertyInfo","queryParameterFields","queryParameter","headerFields","requestBodyFields","bodyProperties","namedParameters","DynamicSnippetsGenerator","init_dirname","__esmMin","process_exports","__export","_debugEnd","_debugProcess","_events","_eventsCount","_exiting","_fatalExceptions","_getActiveHandles","_getActiveRequests","_kill","_linkedBinding","_maxListeners","_preload_modules","_rawDebug","_startProfilerIdleNotifier","_stopProfilerIdleNotifier","_tickCallback","abort","addListener","allowedNodeEnvironmentFlags","arch","argv","argv0","assert","binding","browser","chdir","config","cpuUsage","cwd","debugPort","process","dlopen","domain","emit","emitWarning","env","execArgv","execPath","exit","features","hasUncaughtExceptionCaptureCallback","hrtime","kill","listeners","memoryUsage","moduleLoadList","nextTick","off","on","once","openStdin","pid","platform","ppid","prependListener","prependOnceListener","reallyExit","release","removeAllListeners","removeListener","resourceUsage","setSourceMapsEnabled","setUncaughtExceptionCaptureCallback","stderr","stdin","stdout","title","umask","uptime","version","versions","unimplemented","name","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","len","fun","args","i","Item","array","noop","condition","message","_performance","previousTimestamp","baseNow","clocktime","seconds","nanoseconds","nanoPerSec","nowOffset","init_process","init_buffer","type","mask","dir","time","diff","dew$2","_dewExec$2","exports$2","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","dew$1","_dewExec$1","exports$1","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","value","c","rt","dew","_dewExec","exports","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","byteOffset","obj","numberIsNaN","a","x","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","init_chunk_DtuTasat","INSPECT_MAX_BYTES","kMaxLength","freeGlobal","freeGlobal_default","freeSelf","root","root_default","Symbol","Symbol_default","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","getRawTag_default","objectToString","objectToString_default","nullTag","undefinedTag","baseGetTag","baseGetTag_default","isObjectLike","isObjectLike_default","symbolTag","isSymbol","isSymbol_default","arrayMap","iteratee","index","arrayMap_default","isArray","isArray_default","INFINITY","symbolProto","symbolToString","baseToString","baseToString_default","toString","toString_default","baseSlice","baseSlice_default","castSlice","castSlice_default","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","hasUnicode_default","asciiToArray","asciiToArray_default","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","unicodeToArray_default","stringToArray","stringToArray_default","createCaseFirst","methodName","strSymbols","chr","trailing","createCaseFirst_default","upperFirst","upperFirst_default","capitalize","capitalize_default","arrayReduce","accumulator","initAccum","arrayReduce_default","basePropertyOf","object","key","basePropertyOf_default","deburredLetters","deburrLetter","deburrLetter_default","reLatin","reComboMark","deburr","deburr_default","reAsciiWord","asciiWords","asciiWords_default","reHasUnicodeWord","hasUnicodeWord","hasUnicodeWord_default","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","unicodeWords_default","words","pattern","guard","words_default","reApos","createCompounder","callback","createCompounder_default","camelCase","word","camelCase_default","snakeCase","snakeCase_default","assertNever","keys","enableStackTracking","trackingType","globalFunctionFilters","globalFileFilters","stacktrace","maxFrames","skip","filterPaths","filterFunctions","stopOn","filterNode","filterJs","formatFilename","filename","stop","line","match","path","column","each","f","p","StackTraces","multiline","__publicField","current","frame","frames","stackTraces","startTracking","getFramesForTaggedObject","AbstractAstNode","CodeBlock","writer","TAB_SIZE","AbstractWriter","text","textEndsInNewline","textWithoutNewline","indent","indentedText","currIndentLevel","node","prefix","statement","withNewline","nodes","delimiter","writeFunction","firstNode","appendToLastLine","lines","appendTrackingComment","stack","Result","context","snippet","endpoint","reporter","AbstractDynamicSnippetsGenerator","request","options","endpoints","snippetGenerator","error","lastError","HttpEndpointReferenceParser","reference","Severity","ErrorReporter","_ErrorReporter","err","severity","clone","item","AbstractDynamicSnippetsGeneratorContext","ir","parameters","values","instances","parameter","param","typeInstanceValue","ignoreMissingParameters","snippetObject","objectRecord","property","record","fileValue","fileArrayValue","stringValues","typeId","namedType","discriminatedUnion","discriminantFieldName","discriminantValue","singleDiscriminatedUnionType","_","filtered","rawEndpoint","parsedEndpoint","location","endpointId","inlinePathParameters","inlineFileProperties","body","environmentID","environments","environment","multiEnvironmentUrlValues","firstEnvironment","expectedKeys","typeReference","resolvedType","auth","parameterName","expected","fileUpload","Scope","python_exports","AccessAttribute","AstNode","Class","ClassInstantiation","Comment","Decorator","Field","Lambda","LambdaParameter","Method","MethodArgument","MethodInvocation","ModuleImport","Operator","Parameter","PythonFile","Reference","StarImport","Type","TypeInstantiation","accessAttribute","assign","class_","codeBlock","comment","decorator","field","file","instantiateClass","invokeFunction","invokeMethod","lambda","lambdaParameter","method","methodArgument","operator","starImport","Writer","completeRefPathsToNameOverrides","explicitNameOverride","formatter","astNode","lhs","rhs","Assign","BaseInvocation","arguments_","idx","docs","extends_","decorators","parentClassReference","classReference","callable","initializer","ClassMethodType","static_","return_","docstring","statements","useMultiline","OperatorType","createPythonClassName","cleanedInput","w","modulePath","genericTypes","alias","attribute","genericType","nameOverride","attr","module","isInitFile","comments","imports","import_","uniqueReferences","referencesToHandle","usedNames","filePath","fileReferences","references","fullyQualifiedModulePath","modulePathIdx","isAlias","referenceName","fullyQualifiedPath","existingRefs","refModulePath","ref","commonPrefixLength","levelsUp","relativePath","part","internalType","listType","setType","tupleType","keyType","valueType","dictType","uuidType","optionalType","unionType","anyType","datetimeType","referenceType","literalType","_TypeInstantiation","set","tuple","entries","typedDict","entry","date","datetime","dict","uuid","typeInstantiation","startOnNewLine","endWithNewLine","datetimeValue","filterNopValues","filterNopDictEntries","filterNopNamedValues","element","UNION_VALUE_KEY","DynamicTypeLiteralMapper","named","bool","v","map","as","discriminatedUnionTypeInstance","unionVariant","unionProperties","discriminantProperty","baseFields","objectEntries","object_","properties","providedWireValues","defaultValue","enum_","enumValue","undiscriminatedUnion","errorsBefore","instantiation","seen","primitive","newSeen","firstValue","FilePropertyMapper","fileValues","fallback","bodyPropertyValue","ALLOWED_RESERVED_METHOD_NAMES","DynamicSnippetsGeneratorContext","_DynamicSnippetsGeneratorContext","rootClientName","declaration","className","environmentName","content","cleanOrganizationName","STRING_TYPE_REFERENCE","SNIPPET_MODULE_PATH","CLIENT_VAR_NAME","REQUEST_BODY_ARG_NAME","EndpointSnippetGenerator","fields","environmentArgs","baseUrl","environmentValue","environmentTypeReference","authValues","wireValue","typeLiteral","headers","header","pathParameters","bodyPropertyNames","bodyArgs","disambiguatedPathArgs","innerType","bodyType","pathParameterFields","filePropertyInfo","disambiguatedPathParamFields","queryParameterFields","queryParameter","headerFields","requestBodyFields","nonLiteralBodyProperties","namedParameters","nonLiteralPathParameters","DynamicSnippetsGenerator","init_dirname","__esmMin","process_exports","__export","_debugEnd","_debugProcess","_events","_eventsCount","_exiting","_fatalExceptions","_getActiveHandles","_getActiveRequests","_kill","_linkedBinding","_maxListeners","_preload_modules","_rawDebug","_startProfilerIdleNotifier","_stopProfilerIdleNotifier","_tickCallback","abort","addListener","allowedNodeEnvironmentFlags","arch","argv","argv0","assert","binding","browser","chdir","config","cpuUsage","cwd","debugPort","process","dlopen","domain","emit","emitWarning","env","execArgv","execPath","exit","features","hasUncaughtExceptionCaptureCallback","hrtime","kill","listeners","memoryUsage","moduleLoadList","nextTick","off","on","once","openStdin","pid","platform","ppid","prependListener","prependOnceListener","reallyExit","release","removeAllListeners","removeListener","resourceUsage","setSourceMapsEnabled","setUncaughtExceptionCaptureCallback","stderr","stdin","stdout","title","umask","uptime","version","versions","unimplemented","name","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","len","fun","args","i","Item","array","noop","condition","message","_performance","previousTimestamp","baseNow","clocktime","seconds","nanoseconds","nanoPerSec","nowOffset","init_process","init_buffer","type","mask","dir","time","diff","dew$2","_dewExec$2","exports$2","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","dew$1","_dewExec$1","exports$1","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","value","c","rt","dew","_dewExec","exports","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","byteOffset","obj","numberIsNaN","a","x","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","init_chunk_DtuTasat","INSPECT_MAX_BYTES","kMaxLength","freeGlobal","freeGlobal_default","freeSelf","root","root_default","Symbol","Symbol_default","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","getRawTag_default","objectToString","objectToString_default","nullTag","undefinedTag","baseGetTag","baseGetTag_default","isObjectLike","isObjectLike_default","symbolTag","isSymbol","isSymbol_default","arrayMap","iteratee","index","arrayMap_default","isArray","isArray_default","INFINITY","symbolProto","symbolToString","baseToString","baseToString_default","toString","toString_default","baseSlice","baseSlice_default","castSlice","castSlice_default","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","hasUnicode_default","asciiToArray","asciiToArray_default","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","unicodeToArray_default","stringToArray","stringToArray_default","createCaseFirst","methodName","strSymbols","chr","trailing","createCaseFirst_default","upperFirst","upperFirst_default","assertNever","keys","object","key","enableStackTracking","trackingType","globalFunctionFilters","globalFileFilters","stacktrace","maxFrames","skip","filterPaths","filterFunctions","stopOn","filterNode","filterJs","formatFilename","filename","stop","line","match","path","column","each","f","p","StackTraces","multiline","__publicField","current","frame","frames","stackTraces","startTracking","getFramesForTaggedObject","AbstractAstNode","AbstractFormatter","contents","content","NopFormatter","CodeBlock","writer","TAB_SIZE","AbstractWriter","text","textEndsInNewline","textWithoutNewline","indent","indentedText","currIndentLevel","node","prefix","statement","withNewline","nodes","delimiter","writeFunction","firstNode","appendToLastLine","lines","appendTrackingComment","stack","Result","context","snippet","endpoint","reporter","AbstractDynamicSnippetsGenerator","request","options","endpoints","snippetGenerator","error","lastError","HttpEndpointReferenceParser","reference","Severity","ErrorReporter","_ErrorReporter","err","severity","clone","item","AbstractDynamicSnippetsGeneratorContext","ir","parameters","values","instances","parameter","param","typeInstanceValue","ignoreMissingParameters","snippetObject","objectRecord","property","record","fileValue","fileArrayValue","stringValues","typeId","namedType","discriminatedUnion","discriminantFieldName","discriminantValue","singleDiscriminatedUnionType","_","filtered","rawEndpoint","parsedEndpoint","location","endpointId","inlinePathParameters","inlineFileProperties","body","environmentID","environments","environment","multiEnvironmentUrlValues","firstEnvironment","expectedKeys","typeReference","resolvedType","auth","parameterName","expected","fileUpload","Writer","customConfig","formatter","requirePath","RubyFile","requires","AstNode","file","ClassReference","modules","fullyQualified","fullPath","ruby_exports","ClassInstantiation","Class_","KeywordArgument","KeywordParameter","Method","MethodInvocation","MethodKind","Module_","Parameter","Type","TypeLiteral","TypeParameter","begin","classReference","class_","codeblock","comment","falseValue","ifElse","instantiateClass","invokeMethod","keywordArgument","method","module","nilValue","positionalArgument","raise","trueValue","typeParameter","wrapInModules","Begin","rescues","errorClass","errorVariable","IfElse","ifBranch","elseIf","elseBody","stmt","MAX_LINE_LENGTH","COMMENT_PREFIX_LENGTH","Comment","docs","wrappedLine","indentWidth","availableWidth","words","wrappedLines","currentLine","word","potentialLine","_Type","internalType","_writer","argument","elems","elem","keyType","valueType","klass","baseKlass","MethodVisibility","docstring","kind","visibility","returnType","statements","splatOptionDocs","hasAnyParameters","positionalParameter","typeWriter","keywordParameter","optionDoc","typeString","normalized","_Module_","namespace","typeParameters","child","superclass","methods","arguments_","optional","initializer","KeywordSplatParameter","keywordArguments","block","allArguments","writeArgument","codelines","PositionalArgument","PositionalParameter","PositionalSplatParameter","_TypeLiteral","entries","typeLiteral","entry","wroteSymbol","keyStr","v","Variance","unchecked","bound","variance","defaultType","YieldParameter","Raise","topLevelNode","DynamicTypeLiteralMapper","_DynamicTypeLiteralMapper","named","literalType","bool","set","map","as","discriminatedUnionTypeInstance","unionVariant","unionProperties","converted","enum_","enumValue","undiscriminatedUnion","clonedContext","primitive","propertyName","astNode","DynamicSnippetsGeneratorContext","_DynamicSnippetsGeneratorContext","environmentName","CLIENT_VAR_NAME","INSTANCE_CLIENT_VAR_NAME","EndpointSnippetGenerator","clientClassRef","builderArgs","baseUrl","environmentTypeReference","headers","header","baseUrlArgs","invokeMethodArgs","requestOptions","mappedHeaderNames","unmappedEntries","additionalHeadersEntries","bodyType","typeRef","bodyRecord","bodyFields","bodyArgs","convertedValue","namedParameters","associated","bodyProperties","bodyValue","variant","variantType","variantProps","bodyKeys","aliasedType","resolvedAliasType","wireValue","DynamicSnippetsGenerator","init_dirname","__esmMin","process_exports","__export","_debugEnd","_debugProcess","_events","_eventsCount","_exiting","_fatalExceptions","_getActiveHandles","_getActiveRequests","_kill","_linkedBinding","_maxListeners","_preload_modules","_rawDebug","_startProfilerIdleNotifier","_stopProfilerIdleNotifier","_tickCallback","abort","addListener","allowedNodeEnvironmentFlags","arch","argv","argv0","assert","binding","browser","chdir","config","cpuUsage","cwd","debugPort","process","dlopen","domain","emit","emitWarning","env","execArgv","execPath","exit","features","hasUncaughtExceptionCaptureCallback","hrtime","kill","listeners","memoryUsage","moduleLoadList","nextTick","off","on","once","openStdin","pid","platform","ppid","prependListener","prependOnceListener","reallyExit","release","removeAllListeners","removeListener","resourceUsage","setSourceMapsEnabled","setUncaughtExceptionCaptureCallback","stderr","stdin","stdout","title","umask","uptime","version","versions","unimplemented","name","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","len","fun","args","i","Item","array","noop","condition","message","_performance","previousTimestamp","baseNow","clocktime","seconds","nanoseconds","nanoPerSec","nowOffset","init_process","init_buffer","type","mask","dir","time","diff","dew$2","_dewExec$2","exports$2","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","dew$1","_dewExec$1","exports$1","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","value","c","rt","dew","_dewExec","exports","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","byteOffset","obj","numberIsNaN","a","x","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","init_chunk_DtuTasat","INSPECT_MAX_BYTES","kMaxLength","require_isFinite","__commonJSMin","module","isFinite","require_maxSafeInteger","MAX_SAFE_INTEGER","require_isSafeNumber","Yo","isSafeNumber","require_toOrdinal","pr","cr","toOrdinal","number","lastTwoDigits","betweenElevenAndThirteen","lastChar","require_makeOrdinal","ENDS_WITH_DOUBLE_ZERO_PATTERN","ENDS_WITH_TEEN_PATTERN","ENDS_WITH_Y_PATTERN","ENDS_WITH_ZERO_THROUGH_TWELVE_PATTERN","ordinalLessThanThirteen","makeOrdinal","words","replaceWithOrdinalVariant","match","numberWord","require_toWords","mr","TEN","ONE_HUNDRED","ONE_THOUSAND","ONE_MILLION","ONE_BILLION","ONE_TRILLION","ONE_QUADRILLION","MAX","LESS_THAN_TWENTY","TENTHS_LESS_THAN_HUNDRED","toWords","asOrdinal","generateWords","remainder","word","require_toWordsOrdinal","br","toWordsOrdinal","require_src","Zo","os","freeGlobal","freeGlobal_default","freeSelf","root","root_default","Symbol","Symbol_default","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","getRawTag_default","objectToString","objectToString_default","nullTag","undefinedTag","baseGetTag","baseGetTag_default","isObjectLike","isObjectLike_default","symbolTag","isSymbol","isSymbol_default","arrayMap","iteratee","index","arrayMap_default","isArray","isArray_default","INFINITY","symbolProto","symbolToString","baseToString","baseToString_default","isObject","isObject_default","asyncTag","funcTag","genTag","proxyTag","isFunction","isFunction_default","coreJsData","coreJsData_default","maskSrcKey","uid","isMasked","func","isMasked_default","funcProto","funcToString","toSource","toSource_default","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","baseIsNative_default","getValue","object","key","getValue_default","getNative","getNative_default","noop_default","baseFindIndex","predicate","fromIndex","fromRight","baseFindIndex_default","baseIsNaN","baseIsNaN_default","strictIndexOf","strictIndexOf_default","baseIndexOf","baseIndexOf_default","arrayIncludes","arrayIncludes_default","eq","other","eq_default","nativeCreate","nativeCreate_default","hashClear","hashClear_default","hashDelete","hashDelete_default","HASH_UNDEFINED","hashGet","data","hashGet_default","hashHas","hashHas_default","hashSet","hashSet_default","Hash","entries","entry","Hash_default","listCacheClear","listCacheClear_default","assocIndexOf","assocIndexOf_default","arrayProto","splice","listCacheDelete","lastIndex","listCacheDelete_default","listCacheGet","listCacheGet_default","listCacheHas","listCacheHas_default","listCacheSet","listCacheSet_default","ListCache","ListCache_default","Map","Map_default","mapCacheClear","mapCacheClear_default","isKeyable","isKeyable_default","getMapData","map","getMapData_default","mapCacheDelete","mapCacheDelete_default","mapCacheGet","mapCacheGet_default","mapCacheHas","mapCacheHas_default","mapCacheSet","mapCacheSet_default","MapCache","MapCache_default","toString","toString_default","baseSlice","baseSlice_default","castSlice","castSlice_default","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","hasUnicode_default","asciiToArray","asciiToArray_default","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","unicodeToArray_default","stringToArray","stringToArray_default","createCaseFirst","methodName","strSymbols","chr","trailing","createCaseFirst_default","upperFirst","upperFirst_default","capitalize","capitalize_default","arrayReduce","accumulator","initAccum","arrayReduce_default","basePropertyOf","basePropertyOf_default","deburredLetters","deburrLetter","deburrLetter_default","reLatin","reComboMark","deburr","deburr_default","reAsciiWord","asciiWords","asciiWords_default","reHasUnicodeWord","hasUnicodeWord","hasUnicodeWord_default","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","unicodeWords_default","guard","words_default","reApos","createCompounder","callback","createCompounder_default","camelCase","camelCase_default","Set","Set_default","setCacheAdd","setCacheAdd_default","setCacheHas","setCacheHas_default","SetCache","values","SetCache_default","cacheHas","cache","cacheHas_default","setToArray","set","setToArray_default","arrayIncludesWith","comparator","arrayIncludesWith_default","createSet","createSet_default","LARGE_ARRAY_SIZE","baseUniq","includes","isCommon","seen","outer","computed","seenIndex","baseUniq_default","uniqWith","uniqWith_default","assertDefined","assertNonNull","assertString","assertNever","keys","_SymbolRegistry","options","__publicField","symbolId","symbolName","nameCandidates","candidates","baseSymbolName","counter","id","SymbolRegistry","visitDiscriminatedUnion","item","discriminant","visitor","visit","enableStackTracking","trackingType","globalFunctionFilters","globalFileFilters","stacktrace","maxFrames","skip","filterPaths","filterFunctions","stopOn","filterNode","filterJs","formatFilename","filename","stop","line","path","column","each","f","p","StackTraces","multiline","current","frame","frames","stackTraces","startTracking","getFramesForTaggedObject","AbstractAstNode","CodeBlock","writer","TAB_SIZE","AbstractWriter","text","textEndsInNewline","textWithoutNewline","indent","indentedText","currIndentLevel","node","prefix","statement","withNewline","nodes","delimiter","writeFunction","firstNode","appendToLastLine","lines","appendTrackingComment","stack","Result","context","snippet","endpoint","reporter","AbstractDynamicSnippetsGenerator","request","endpoints","snippetGenerator","error","lastError","HttpEndpointReferenceParser","reference","Severity","ErrorReporter","_ErrorReporter","err","severity","clone","AbstractDynamicSnippetsGeneratorContext","ir","parameters","instances","parameter","param","typeInstanceValue","ignoreMissingParameters","snippetObject","objectRecord","property","record","fileValue","fileArrayValue","stringValues","typeId","namedType","discriminatedUnion","discriminantFieldName","discriminantValue","singleDiscriminatedUnionType","_","filtered","rawEndpoint","parsedEndpoint","location","endpointId","inlinePathParameters","inlineFileProperties","body","environmentID","environments","environment","multiEnvironmentUrlValues","firstEnvironment","expectedKeys","typeReference","resolvedType","auth","parameterName","expected","fileUpload","Scope","enum_with_associated_values_exports","sanitizeForIdentifier","sanitizeToCamelCase","sanitizeToPascalCase","import_number_to_words","Vs","as","pascalCase","sanitized","originalValue","sanitizedValue","convertLeadingNumberToWords","leadingNumber","rest","ls","digitWords","digit","literal_enum_exports","generateEnumCaseLabel","generateName","sanitizeLiteralValue","literalValue","sanitizedLiteralValue","Referencer","nameRegistry","fromSymbol","symbolRef","swift_exports","symbol","templateId","asIsSymbolName","resolvedSymbol","registeredSymbol","swiftSymbolName","foundationSymbolName","undiscriminated_union_exports","inferCaseNameForTypeReference","CASE_LABELS_BY_SWIFT_SYMBOL_NAME","CASE_LABELS_BY_FOUNDATION_SYMBOL_NAME","parentSymbol","registry","argumentTypeCaseNames","argument","keyTypeCaseName","valueTypeCaseName","memberTypeCaseNames","element","RequestsNamespace","requestNamePascalCase","nameId","symbolNameCandidates","SourceModuleNamespace","subpackageId","TestModuleNamespace","subclientName","NameRegistry","_NameRegistry","configModuleName","apiNamePascalCase","asIsSymbols","moduleSymbolName","moduleSymbol","asIsSymbol","shape","sourceModuleName","ns","configClientClassName","registeredSourceModuleName","configEnvironmentEnumName","fallbackCandidates","fernFilepathPartNamesPascalCase","subpackageNamePascalCase","reversedParts","partIdx","typeDeclarationNamePascalCase","parentSymbolId","enumsByLiteralValue","existingSymbol","literalEnumSymbolsForParent","mainCandidate","newSymbol","symbol1","symbol2","variants","sortedVariants","variant","discriminantWireValue","v","distinctVariants","toSymbol","AccessLevel","Class","Comment","ComputedProperty","DeclarationType","DocComment","EnumWithAssociatedValues","EnumWithRawValues","Expression","Extension","FunctionArgument","FunctionParameter","Initializer","LineBreak","Method","Pattern","Property","Protocol","SourceAsIsFileSpecs","SourceTemplateFileSpecs","Statement","Struct","TypeReference","class_","codeBlock","comment","computedProperty","docComment","enumWithAssociatedValues","enumWithRawValues","extension","functionArgument","functionParameter","initializer","method","struct","Writer","AstNode","indentation","accessLevel","final","conformances","properties","initializers","methods","docs","conformance","initializerIdx","methodIdx","_CodeBlock","commonCodeBlock","statements","content","escapeSwiftStringLiteral","rawValue","reservedKeywords","reservedKeywordsSet","isReservedKeyword","escapeReservedKeyword","sanitizeSelf","internalExpression","arguments_","argumentIdx","dictLiteral","entryIdx","arrayLiteral","elementIdx","unsafeName","params","left","right","caseName","isoStringWithoutFractionalSeconds","isoString","expression","internalStatement","parameterIdx","switchCase","elseIf","moduleName","_DocComment","summary","description","returns","throws","t","lineIdx","throwsDescription","sanitizedText","indirect","cases","nestedTypes","case_","nestedType","nestedTypeIdx","computedProperties","computedPropertyIdx","label","argumentLabel","escaping","defaultValue","docsContent","convenience","failable","_LineBreak","count","attributes","static_","async","returnType","attribute","internalPattern","declarationType","hasProperties","hasInitializers","hasMethods","hasNestedTypes","wroteMember","_TypeReference","elementType","that","symbolReference","elements","keyType","valueType","memberName","_Symbol","AbstractSymbol","child","ModuleSymbol","TypeSymbol","cur","SymbolGraph","clientSymbolId","importedSymbolId","clientModuleSymbol","importedModuleSymbol","childSymbolId","childSymbol","fromSymbolId","targetSymbolId","k","firstPart","restParts","part","importedModule","resolved","hit","graph","swiftSymbol","foundationSymbol","createSwiftNode","symbolNode","createFoundationNode","typeSymbol","toSymbolId","templateData","DynamicTypeLiteralMapper","named","unionSymbol","nullable","discriminatedUnionTypeInstance","unionVariant","unionProperties","matchingVariant","baseFields","converted","structInitialization","enum_","nameAndWireValue","enumValue","object_","typeInstance","undiscriminatedUnion","swiftType","primitive","bool","date","dateTime","timestampMs","timestampSec","dateTimeWithoutFractional","uuid","FilePropertyMapper","fileValues","bodyPropertyValue","registerDiscriminatedUnionVariants","utd","singleUnionType","registerLiteralEnums","otd","registerLiteralEnumsForObjectProperties","variantSymbol","declaredTypeName","registerLiteralEnumsForTypeReference","lt","literalType","registerUndiscriminatedUnionVariants","members","DynamicSnippetsGeneratorContext","_DynamicSnippetsGeneratorContext","registeredSourceModuleSymbol","spec","symbolShape","schemaTypeSymbol","requestTypeSymbol","referencer","ref","CLIENT_CONST_NAME","EndpointSnippetGenerator","snippetRequest","sourceModuleSymbol","additionalArgs","rootClientArgs","baseUrlArg","authArgs","nonNopRootClientArgs","rootClientSymbol","additionalArguments","pathParameterFields","queryParameterFields","filePropertyInfo","namedParameters","requestBodyFields","nonNopArguments","pathParameters","DynamicSnippetsGenerator","init_dirname","__esmMin","process_exports","__export","_debugEnd","_debugProcess","_events","_eventsCount","_exiting","_fatalExceptions","_getActiveHandles","_getActiveRequests","_kill","_linkedBinding","_maxListeners","_preload_modules","_rawDebug","_startProfilerIdleNotifier","_stopProfilerIdleNotifier","_tickCallback","abort","addListener","allowedNodeEnvironmentFlags","arch","argv","argv0","assert","binding","browser","chdir","config","cpuUsage","cwd","debugPort","process","dlopen","domain","emit","emitWarning","env","execArgv","execPath","exit","features","hasUncaughtExceptionCaptureCallback","hrtime","kill","listeners","memoryUsage","moduleLoadList","nextTick","off","on","once","openStdin","pid","platform","ppid","prependListener","prependOnceListener","reallyExit","release","removeAllListeners","removeListener","resourceUsage","setSourceMapsEnabled","setUncaughtExceptionCaptureCallback","stderr","stdin","stdout","title","umask","uptime","version","versions","unimplemented","name","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","len","fun","args","i","Item","array","noop","condition","message","_performance","previousTimestamp","baseNow","clocktime","seconds","nanoseconds","nanoPerSec","nowOffset","init_process","init_buffer","type","mask","dir","time","diff","dew$2","_dewExec$2","exports$2","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","dew$1","_dewExec$1","exports$1","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","value","c","rt","dew","_dewExec","exports","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","actual","fromArrayLike","arrayView","copy","byteOffset","obj","numberIsNaN","a","x","y","list","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","input","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","init_chunk_DtuTasat","INSPECT_MAX_BYTES","kMaxLength","freeGlobal","freeGlobal_default","freeSelf","root","root_default","Symbol","Symbol_default","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","result","getRawTag_default","objectToString","objectToString_default","nullTag","undefinedTag","baseGetTag","baseGetTag_default","isObjectLike","isObjectLike_default","symbolTag","isSymbol","isSymbol_default","arrayMap","iteratee","index","arrayMap_default","isArray","isArray_default","INFINITY","symbolProto","symbolToString","baseToString","baseToString_default","toString","toString_default","baseSlice","baseSlice_default","castSlice","castSlice_default","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","hasUnicode_default","asciiToArray","asciiToArray_default","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","unicodeToArray_default","stringToArray","stringToArray_default","createCaseFirst","methodName","strSymbols","chr","trailing","createCaseFirst_default","upperFirst","upperFirst_default","capitalize","capitalize_default","arrayReduce","accumulator","initAccum","arrayReduce_default","basePropertyOf","object","key","basePropertyOf_default","deburredLetters","deburrLetter","deburrLetter_default","reLatin","reComboMark","deburr","deburr_default","reAsciiWord","asciiWords","asciiWords_default","reHasUnicodeWord","hasUnicodeWord","hasUnicodeWord_default","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","unicodeWords_default","words","pattern","guard","words_default","reApos","createCompounder","callback","createCompounder_default","camelCase","word","camelCase_default","assertNever","keys","enableStackTracking","trackingType","globalFunctionFilters","globalFileFilters","stacktrace","maxFrames","skip","filterPaths","filterFunctions","stopOn","filterNode","filterJs","formatFilename","filename","stop","line","match","path","column","each","f","p","StackTraces","multiline","__publicField","current","frame","frames","stackTraces","startTracking","getFramesForTaggedObject","AbstractAstNode","AbstractFormatter","contents","content","NopFormatter","CodeBlock","writer","TAB_SIZE","AbstractWriter","text","textEndsInNewline","textWithoutNewline","indent","indentedText","currIndentLevel","node","prefix","statement","withNewline","nodes","delimiter","writeFunction","firstNode","appendToLastLine","lines","appendTrackingComment","stack","Result","context","snippet","endpoint","reporter","AbstractDynamicSnippetsGenerator","request","options","endpoints","snippetGenerator","error","lastError","HttpEndpointReferenceParser","reference","Severity","ErrorReporter","_ErrorReporter","err","severity","clone","item","AbstractDynamicSnippetsGeneratorContext","ir","parameters","values","instances","parameter","param","typeInstanceValue","ignoreMissingParameters","snippetObject","objectRecord","property","record","fileValue","fileArrayValue","stringValues","typeId","namedType","discriminatedUnion","discriminantFieldName","discriminantValue","singleDiscriminatedUnionType","_","filtered","rawEndpoint","parsedEndpoint","location","endpointId","inlinePathParameters","inlineFileProperties","body","environmentID","environments","environment","multiEnvironmentUrlValues","firstEnvironment","expectedKeys","typeReference","resolvedType","auth","parameterName","expected","fileUpload","Scope","Writer","customConfig","formatter","_a","_b","moduleImports","import_","moduleDefault","existingStar","duplicates","references","ref","_c","_d","moduleAlias","TypeScriptFile","imports","module","defaultImport","stringifiedNonDefault","named","r","starImportAlias","lastRef","AstNode","file","typescript_exports","ClassInstantiation","Comment","Function","FunctionInvocation","MethodInvocation","Parameter","Reference","Type","TypeLiteral","Variable","codeblock","function_","instantiateClass","invokeFunction","invokeMethod","variable","class_","arguments_","argument","docs","internalType","valueType","fields","async","return_","method","importFrom","memberName","suffix","_TypeLiteral","noSerdeLayer","useBigInt","head","tail","iterable","filterNopValues","entries","filterNopRecordEntries","entry","filterNopObjectFields","field","typeLiteral","element","constructNpmPackage","generatorConfig","isPackagePrivate","outputMode","getRepoUrlFromUrl","basic","custom","repoUrl","removeGitSuffix","getNamespaceExport","organization","workspaceName","namespaceExport","naming","resolveNaming","namingObj","suffixBase","api_exports","commons_exports","dynamic_exports","generatorExec_exports","ErrorSeverity","HttpMethod","ObjectPropertyAccess","PrimitiveTypeV1","auth_exports","declaration_exports","endpoints_exports","environment_exports","http_exports","ir_exports","snippets_exports","types_exports","variables_exports","LicenseId","config_exports","UNION_VALUE_KEY","DynamicTypeLiteralMapper","convertOpts","literalType","bool","v","set","map","as","discriminatedUnionTypeInstance","unionVariant","unionProperties","discriminantProperty","baseFields","converted","object_","properties","prop","enum_","enumValue","undiscriminatedUnion","errorsBefore","primitive","bigInt","FilePropertyMapper","fileValues","bodyPropertyValue","DynamicSnippetsGeneratorContext","_DynamicSnippetsGeneratorContext","getModuleName","resolved","environmentName","declaration","CLIENT_VAR_NAME","MAIN_FUNCTION_NAME","STRING_TYPE_REFERENCE","EndpointSnippetGenerator","environmentArgs","baseUrl","environmentValue","environmentTypeReference","headers","header","pathParameters","pathParameterFields","filePropertyInfo","queryParameterFields","queryParameter","headerFields","requestBodyFields","bodyProperties","namedParameters","DynamicSnippetsGenerator","__defProp","__hasOwnProp","a","b","_a","ir","bt","Ar","vr","wt","$t","Tr","_c","_e","_f","p","s","_","_","i","snippets"]}