import { devAssert } from "/_nuxt/node_modules/graphql/jsutils/devAssert.mjs?v=e4f18c29"; import { inspect } from "/_nuxt/node_modules/graphql/jsutils/inspect.mjs?v=e4f18c29"; import { isAsyncIterable } from "/_nuxt/node_modules/graphql/jsutils/isAsyncIterable.mjs?v=e4f18c29"; import { addPath, pathToArray } from "/_nuxt/node_modules/graphql/jsutils/Path.mjs?v=e4f18c29"; import { GraphQLError } from "/_nuxt/node_modules/graphql/error/GraphQLError.mjs?v=e4f18c29"; import { locatedError } from "/_nuxt/node_modules/graphql/error/locatedError.mjs?v=e4f18c29"; import { collectFields } from "/_nuxt/node_modules/graphql/execution/collectFields.mjs?v=e4f18c29"; import { assertValidExecutionArguments, buildExecutionContext, buildResolveInfo, execute, getFieldDef, } from "/_nuxt/node_modules/graphql/execution/execute.mjs?v=e4f18c29"; import { mapAsyncIterator } from "/_nuxt/node_modules/graphql/execution/mapAsyncIterator.mjs?v=e4f18c29"; import { getArgumentValues } from "/_nuxt/node_modules/graphql/execution/values.mjs?v=e4f18c29"; /** * Implements the "Subscribe" algorithm described in the GraphQL specification. * * Returns a Promise which resolves to either an AsyncIterator (if successful) * or an ExecutionResult (error). The promise will be rejected if the schema or * other arguments to this function are invalid, or if the resolved event stream * is not an async iterable. * * If the client-provided arguments to this function do not result in a * compliant subscription, a GraphQL Response (ExecutionResult) with * descriptive errors and no data will be returned. * * If the source stream could not be created due to faulty subscription * resolver logic or underlying systems, the promise will resolve to a single * ExecutionResult containing `errors` and no `data`. * * If the operation succeeded, the promise resolves to an AsyncIterator, which * yields a stream of ExecutionResults representing the response stream. * * Accepts either an object with named arguments, or individual arguments. */ export async function subscribe(args) { // Temporary for v15 to v16 migration. Remove in v17 arguments.length < 2 || devAssert( false, 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.', ); const resultOrStream = await createSourceEventStream(args); if (!isAsyncIterable(resultOrStream)) { return resultOrStream; } // For each payload yielded from a subscription, map it over the normal // GraphQL `execute` function, with `payload` as the rootValue. // This implements the "MapSourceToResponseEvent" algorithm described in // the GraphQL specification. The `execute` function provides the // "ExecuteSubscriptionEvent" algorithm, as it is nearly identical to the // "ExecuteQuery" algorithm, for which `execute` is also used. const mapSourceToResponse = (payload) => execute({ ...args, rootValue: payload }); // Map every source value to a ExecutionResult value as described above. return mapAsyncIterator(resultOrStream, mapSourceToResponse); } function toNormalizedArgs(args) { const firstArg = args[0]; if (firstArg && 'document' in firstArg) { return firstArg; } return { schema: firstArg, // FIXME: when underlying TS bug fixed, see https://github.com/microsoft/TypeScript/issues/31613 document: args[1], rootValue: args[2], contextValue: args[3], variableValues: args[4], operationName: args[5], subscribeFieldResolver: args[6], }; } /** * Implements the "CreateSourceEventStream" algorithm described in the * GraphQL specification, resolving the subscription source event stream. * * Returns a Promise which resolves to either an AsyncIterable (if successful) * or an ExecutionResult (error). The promise will be rejected if the schema or * other arguments to this function are invalid, or if the resolved event stream * is not an async iterable. * * If the client-provided arguments to this function do not result in a * compliant subscription, a GraphQL Response (ExecutionResult) with * descriptive errors and no data will be returned. * * If the the source stream could not be created due to faulty subscription * resolver logic or underlying systems, the promise will resolve to a single * ExecutionResult containing `errors` and no `data`. * * If the operation succeeded, the promise resolves to the AsyncIterable for the * event stream returned by the resolver. * * A Source Event Stream represents a sequence of events, each of which triggers * a GraphQL execution for that event. * * This may be useful when hosting the stateful subscription service in a * different process or machine than the stateless GraphQL execution engine, * or otherwise separating these two steps. For more on this, see the * "Supporting Subscriptions at Scale" information in the GraphQL specification. */ export async function createSourceEventStream(...rawArgs) { const args = toNormalizedArgs(rawArgs); const { schema, document, variableValues } = args; // If arguments are missing or incorrectly typed, this is an internal // developer mistake which should throw an early error. assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments, // a "Response" with only errors is returned. const exeContext = buildExecutionContext(args); // Return early errors if execution context failed. if (!('schema' in exeContext)) { return { errors: exeContext, }; } try { const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error. if (!isAsyncIterable(eventStream)) { throw new Error( 'Subscription field must return Async Iterable. ' + `Received: ${inspect(eventStream)}.`, ); } return eventStream; } catch (error) { // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data. // Otherwise treat the error as a system-class error and re-throw it. if (error instanceof GraphQLError) { return { errors: [error], }; } throw error; } } async function executeSubscription(exeContext) { const { schema, fragments, operation, variableValues, rootValue } = exeContext; const rootType = schema.getSubscriptionType(); if (rootType == null) { throw new GraphQLError( 'Schema is not configured to execute subscription operation.', { nodes: operation, }, ); } const rootFields = collectFields( schema, fragments, variableValues, rootType, operation.selectionSet, ); const [responseName, fieldNodes] = [...rootFields.entries()][0]; const fieldDef = getFieldDef(schema, rootType, fieldNodes[0]); if (!fieldDef) { const fieldName = fieldNodes[0].name.value; throw new GraphQLError( `The subscription field "${fieldName}" is not defined.`, { nodes: fieldNodes, }, ); } const path = addPath(undefined, responseName, rootType.name); const info = buildResolveInfo( exeContext, fieldDef, fieldNodes, rootType, path, ); try { var _fieldDef$subscribe; // Implements the "ResolveFieldEventStream" algorithm from GraphQL specification. // It differs from "ResolveFieldValue" due to providing a different `resolveFn`. // Build a JS object of arguments from the field.arguments AST, using the // variables scope to fulfill any variable references. const args = getArgumentValues(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that // is provided to every resolve function within an execution. It is commonly // used to represent an authenticated user, or request-specific caches. const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an // AsyncIterable yielding raw payloads. const resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.subscribeFieldResolver; const eventStream = await resolveFn(rootValue, args, contextValue, info); if (eventStream instanceof Error) { throw eventStream; } return eventStream; } catch (error) { throw locatedError(error, fieldNodes, pathToArray(path)); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN1YnNjcmliZS5tanM/dj1lNGYxOGMyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tIFwiL19udXh0L25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qcz92PWU0ZjE4YzI5XCI7XG5pbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSBcIi9fbnV4dC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2luc3BlY3QubWpzP3Y9ZTRmMThjMjlcIjtcbmltcG9ydCB7IGlzQXN5bmNJdGVyYWJsZSB9IGZyb20gXCIvX251eHQvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc0FzeW5jSXRlcmFibGUubWpzP3Y9ZTRmMThjMjlcIjtcbmltcG9ydCB7IGFkZFBhdGgsIHBhdGhUb0FycmF5IH0gZnJvbSBcIi9fbnV4dC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL1BhdGgubWpzP3Y9ZTRmMThjMjlcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIvX251eHQvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvR3JhcGhRTEVycm9yLm1qcz92PWU0ZjE4YzI5XCI7XG5pbXBvcnQgeyBsb2NhdGVkRXJyb3IgfSBmcm9tIFwiL19udXh0L25vZGVfbW9kdWxlcy9ncmFwaHFsL2Vycm9yL2xvY2F0ZWRFcnJvci5tanM/dj1lNGYxOGMyOVwiO1xuaW1wb3J0IHsgY29sbGVjdEZpZWxkcyB9IGZyb20gXCIvX251eHQvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL2NvbGxlY3RGaWVsZHMubWpzP3Y9ZTRmMThjMjlcIjtcbmltcG9ydCB7XG4gIGFzc2VydFZhbGlkRXhlY3V0aW9uQXJndW1lbnRzLFxuICBidWlsZEV4ZWN1dGlvbkNvbnRleHQsXG4gIGJ1aWxkUmVzb2x2ZUluZm8sXG4gIGV4ZWN1dGUsXG4gIGdldEZpZWxkRGVmLFxufSBmcm9tIFwiL19udXh0L25vZGVfbW9kdWxlcy9ncmFwaHFsL2V4ZWN1dGlvbi9leGVjdXRlLm1qcz92PWU0ZjE4YzI5XCI7XG5pbXBvcnQgeyBtYXBBc3luY0l0ZXJhdG9yIH0gZnJvbSBcIi9fbnV4dC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vbWFwQXN5bmNJdGVyYXRvci5tanM/dj1lNGYxOGMyOVwiO1xuaW1wb3J0IHsgZ2V0QXJndW1lbnRWYWx1ZXMgfSBmcm9tIFwiL19udXh0L25vZGVfbW9kdWxlcy9ncmFwaHFsL2V4ZWN1dGlvbi92YWx1ZXMubWpzP3Y9ZTRmMThjMjlcIjtcbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJTdWJzY3JpYmVcIiBhbGdvcml0aG0gZGVzY3JpYmVkIGluIHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24uXG4gKlxuICogUmV0dXJucyBhIFByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgdG8gZWl0aGVyIGFuIEFzeW5jSXRlcmF0b3IgKGlmIHN1Y2Nlc3NmdWwpXG4gKiBvciBhbiBFeGVjdXRpb25SZXN1bHQgKGVycm9yKS4gVGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCBpZiB0aGUgc2NoZW1hIG9yXG4gKiBvdGhlciBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBhcmUgaW52YWxpZCwgb3IgaWYgdGhlIHJlc29sdmVkIGV2ZW50IHN0cmVhbVxuICogaXMgbm90IGFuIGFzeW5jIGl0ZXJhYmxlLlxuICpcbiAqIElmIHRoZSBjbGllbnQtcHJvdmlkZWQgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gZG8gbm90IHJlc3VsdCBpbiBhXG4gKiBjb21wbGlhbnQgc3Vic2NyaXB0aW9uLCBhIEdyYXBoUUwgUmVzcG9uc2UgKEV4ZWN1dGlvblJlc3VsdCkgd2l0aFxuICogZGVzY3JpcHRpdmUgZXJyb3JzIGFuZCBubyBkYXRhIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogSWYgdGhlIHNvdXJjZSBzdHJlYW0gY291bGQgbm90IGJlIGNyZWF0ZWQgZHVlIHRvIGZhdWx0eSBzdWJzY3JpcHRpb25cbiAqIHJlc29sdmVyIGxvZ2ljIG9yIHVuZGVybHlpbmcgc3lzdGVtcywgdGhlIHByb21pc2Ugd2lsbCByZXNvbHZlIHRvIGEgc2luZ2xlXG4gKiBFeGVjdXRpb25SZXN1bHQgY29udGFpbmluZyBgZXJyb3JzYCBhbmQgbm8gYGRhdGFgLlxuICpcbiAqIElmIHRoZSBvcGVyYXRpb24gc3VjY2VlZGVkLCB0aGUgcHJvbWlzZSByZXNvbHZlcyB0byBhbiBBc3luY0l0ZXJhdG9yLCB3aGljaFxuICogeWllbGRzIGEgc3RyZWFtIG9mIEV4ZWN1dGlvblJlc3VsdHMgcmVwcmVzZW50aW5nIHRoZSByZXNwb25zZSBzdHJlYW0uXG4gKlxuICogQWNjZXB0cyBlaXRoZXIgYW4gb2JqZWN0IHdpdGggbmFtZWQgYXJndW1lbnRzLCBvciBpbmRpdmlkdWFsIGFyZ3VtZW50cy5cbiAqL1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3Vic2NyaWJlKGFyZ3MpIHtcbiAgLy8gVGVtcG9yYXJ5IGZvciB2MTUgdG8gdjE2IG1pZ3JhdGlvbi4gUmVtb3ZlIGluIHYxN1xuICBhcmd1bWVudHMubGVuZ3RoIDwgMiB8fFxuICAgIGRldkFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgJ2dyYXBocWxAMTYgZHJvcHBlZCBsb25nLWRlcHJlY2F0ZWQgc3VwcG9ydCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudHMsIHBsZWFzZSBwYXNzIGFuIG9iamVjdCBpbnN0ZWFkLicsXG4gICAgKTtcbiAgY29uc3QgcmVzdWx0T3JTdHJlYW0gPSBhd2FpdCBjcmVhdGVTb3VyY2VFdmVudFN0cmVhbShhcmdzKTtcblxuICBpZiAoIWlzQXN5bmNJdGVyYWJsZShyZXN1bHRPclN0cmVhbSkpIHtcbiAgICByZXR1cm4gcmVzdWx0T3JTdHJlYW07XG4gIH0gLy8gRm9yIGVhY2ggcGF5bG9hZCB5aWVsZGVkIGZyb20gYSBzdWJzY3JpcHRpb24sIG1hcCBpdCBvdmVyIHRoZSBub3JtYWxcbiAgLy8gR3JhcGhRTCBgZXhlY3V0ZWAgZnVuY3Rpb24sIHdpdGggYHBheWxvYWRgIGFzIHRoZSByb290VmFsdWUuXG4gIC8vIFRoaXMgaW1wbGVtZW50cyB0aGUgXCJNYXBTb3VyY2VUb1Jlc3BvbnNlRXZlbnRcIiBhbGdvcml0aG0gZGVzY3JpYmVkIGluXG4gIC8vIHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24uIFRoZSBgZXhlY3V0ZWAgZnVuY3Rpb24gcHJvdmlkZXMgdGhlXG4gIC8vIFwiRXhlY3V0ZVN1YnNjcmlwdGlvbkV2ZW50XCIgYWxnb3JpdGhtLCBhcyBpdCBpcyBuZWFybHkgaWRlbnRpY2FsIHRvIHRoZVxuICAvLyBcIkV4ZWN1dGVRdWVyeVwiIGFsZ29yaXRobSwgZm9yIHdoaWNoIGBleGVjdXRlYCBpcyBhbHNvIHVzZWQuXG5cbiAgY29uc3QgbWFwU291cmNlVG9SZXNwb25zZSA9IChwYXlsb2FkKSA9PlxuICAgIGV4ZWN1dGUoeyAuLi5hcmdzLCByb290VmFsdWU6IHBheWxvYWQgfSk7IC8vIE1hcCBldmVyeSBzb3VyY2UgdmFsdWUgdG8gYSBFeGVjdXRpb25SZXN1bHQgdmFsdWUgYXMgZGVzY3JpYmVkIGFib3ZlLlxuXG4gIHJldHVybiBtYXBBc3luY0l0ZXJhdG9yKHJlc3VsdE9yU3RyZWFtLCBtYXBTb3VyY2VUb1Jlc3BvbnNlKTtcbn1cblxuZnVuY3Rpb24gdG9Ob3JtYWxpemVkQXJncyhhcmdzKSB7XG4gIGNvbnN0IGZpcnN0QXJnID0gYXJnc1swXTtcblxuICBpZiAoZmlyc3RBcmcgJiYgJ2RvY3VtZW50JyBpbiBmaXJzdEFyZykge1xuICAgIHJldHVybiBmaXJzdEFyZztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2NoZW1hOiBmaXJzdEFyZyxcbiAgICAvLyBGSVhNRTogd2hlbiB1bmRlcmx5aW5nIFRTIGJ1ZyBmaXhlZCwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMzE2MTNcbiAgICBkb2N1bWVudDogYXJnc1sxXSxcbiAgICByb290VmFsdWU6IGFyZ3NbMl0sXG4gICAgY29udGV4dFZhbHVlOiBhcmdzWzNdLFxuICAgIHZhcmlhYmxlVmFsdWVzOiBhcmdzWzRdLFxuICAgIG9wZXJhdGlvbk5hbWU6IGFyZ3NbNV0sXG4gICAgc3Vic2NyaWJlRmllbGRSZXNvbHZlcjogYXJnc1s2XSxcbiAgfTtcbn1cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJDcmVhdGVTb3VyY2VFdmVudFN0cmVhbVwiIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlXG4gKiBHcmFwaFFMIHNwZWNpZmljYXRpb24sIHJlc29sdmluZyB0aGUgc3Vic2NyaXB0aW9uIHNvdXJjZSBldmVudCBzdHJlYW0uXG4gKlxuICogUmV0dXJucyBhIFByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgdG8gZWl0aGVyIGFuIEFzeW5jSXRlcmFibGUgKGlmIHN1Y2Nlc3NmdWwpXG4gKiBvciBhbiBFeGVjdXRpb25SZXN1bHQgKGVycm9yKS4gVGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCBpZiB0aGUgc2NoZW1hIG9yXG4gKiBvdGhlciBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBhcmUgaW52YWxpZCwgb3IgaWYgdGhlIHJlc29sdmVkIGV2ZW50IHN0cmVhbVxuICogaXMgbm90IGFuIGFzeW5jIGl0ZXJhYmxlLlxuICpcbiAqIElmIHRoZSBjbGllbnQtcHJvdmlkZWQgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gZG8gbm90IHJlc3VsdCBpbiBhXG4gKiBjb21wbGlhbnQgc3Vic2NyaXB0aW9uLCBhIEdyYXBoUUwgUmVzcG9uc2UgKEV4ZWN1dGlvblJlc3VsdCkgd2l0aFxuICogZGVzY3JpcHRpdmUgZXJyb3JzIGFuZCBubyBkYXRhIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogSWYgdGhlIHRoZSBzb3VyY2Ugc3RyZWFtIGNvdWxkIG5vdCBiZSBjcmVhdGVkIGR1ZSB0byBmYXVsdHkgc3Vic2NyaXB0aW9uXG4gKiByZXNvbHZlciBsb2dpYyBvciB1bmRlcmx5aW5nIHN5c3RlbXMsIHRoZSBwcm9taXNlIHdpbGwgcmVzb2x2ZSB0byBhIHNpbmdsZVxuICogRXhlY3V0aW9uUmVzdWx0IGNvbnRhaW5pbmcgYGVycm9yc2AgYW5kIG5vIGBkYXRhYC5cbiAqXG4gKiBJZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZCwgdGhlIHByb21pc2UgcmVzb2x2ZXMgdG8gdGhlIEFzeW5jSXRlcmFibGUgZm9yIHRoZVxuICogZXZlbnQgc3RyZWFtIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlci5cbiAqXG4gKiBBIFNvdXJjZSBFdmVudCBTdHJlYW0gcmVwcmVzZW50cyBhIHNlcXVlbmNlIG9mIGV2ZW50cywgZWFjaCBvZiB3aGljaCB0cmlnZ2Vyc1xuICogYSBHcmFwaFFMIGV4ZWN1dGlvbiBmb3IgdGhhdCBldmVudC5cbiAqXG4gKiBUaGlzIG1heSBiZSB1c2VmdWwgd2hlbiBob3N0aW5nIHRoZSBzdGF0ZWZ1bCBzdWJzY3JpcHRpb24gc2VydmljZSBpbiBhXG4gKiBkaWZmZXJlbnQgcHJvY2VzcyBvciBtYWNoaW5lIHRoYW4gdGhlIHN0YXRlbGVzcyBHcmFwaFFMIGV4ZWN1dGlvbiBlbmdpbmUsXG4gKiBvciBvdGhlcndpc2Ugc2VwYXJhdGluZyB0aGVzZSB0d28gc3RlcHMuIEZvciBtb3JlIG9uIHRoaXMsIHNlZSB0aGVcbiAqIFwiU3VwcG9ydGluZyBTdWJzY3JpcHRpb25zIGF0IFNjYWxlXCIgaW5mb3JtYXRpb24gaW4gdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi5cbiAqL1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU291cmNlRXZlbnRTdHJlYW0oLi4ucmF3QXJncykge1xuICBjb25zdCBhcmdzID0gdG9Ob3JtYWxpemVkQXJncyhyYXdBcmdzKTtcbiAgY29uc3QgeyBzY2hlbWEsIGRvY3VtZW50LCB2YXJpYWJsZVZhbHVlcyB9ID0gYXJnczsgLy8gSWYgYXJndW1lbnRzIGFyZSBtaXNzaW5nIG9yIGluY29ycmVjdGx5IHR5cGVkLCB0aGlzIGlzIGFuIGludGVybmFsXG4gIC8vIGRldmVsb3BlciBtaXN0YWtlIHdoaWNoIHNob3VsZCB0aHJvdyBhbiBlYXJseSBlcnJvci5cblxuICBhc3NlcnRWYWxpZEV4ZWN1dGlvbkFyZ3VtZW50cyhzY2hlbWEsIGRvY3VtZW50LCB2YXJpYWJsZVZhbHVlcyk7IC8vIElmIGEgdmFsaWQgZXhlY3V0aW9uIGNvbnRleHQgY2Fubm90IGJlIGNyZWF0ZWQgZHVlIHRvIGluY29ycmVjdCBhcmd1bWVudHMsXG4gIC8vIGEgXCJSZXNwb25zZVwiIHdpdGggb25seSBlcnJvcnMgaXMgcmV0dXJuZWQuXG5cbiAgY29uc3QgZXhlQ29udGV4dCA9IGJ1aWxkRXhlY3V0aW9uQ29udGV4dChhcmdzKTsgLy8gUmV0dXJuIGVhcmx5IGVycm9ycyBpZiBleGVjdXRpb24gY29udGV4dCBmYWlsZWQuXG5cbiAgaWYgKCEoJ3NjaGVtYScgaW4gZXhlQ29udGV4dCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiBleGVDb250ZXh0LFxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGV2ZW50U3RyZWFtID0gYXdhaXQgZXhlY3V0ZVN1YnNjcmlwdGlvbihleGVDb250ZXh0KTsgLy8gQXNzZXJ0IGZpZWxkIHJldHVybmVkIGFuIGV2ZW50IHN0cmVhbSwgb3RoZXJ3aXNlIHlpZWxkIGFuIGVycm9yLlxuXG4gICAgaWYgKCFpc0FzeW5jSXRlcmFibGUoZXZlbnRTdHJlYW0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdTdWJzY3JpcHRpb24gZmllbGQgbXVzdCByZXR1cm4gQXN5bmMgSXRlcmFibGUuICcgK1xuICAgICAgICAgIGBSZWNlaXZlZDogJHtpbnNwZWN0KGV2ZW50U3RyZWFtKX0uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZW50U3RyZWFtO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIElmIGl0IEdyYXBoUUxFcnJvciwgcmVwb3J0IGl0IGFzIGFuIEV4ZWN1dGlvblJlc3VsdCwgY29udGFpbmluZyBvbmx5IGVycm9ycyBhbmQgbm8gZGF0YS5cbiAgICAvLyBPdGhlcndpc2UgdHJlYXQgdGhlIGVycm9yIGFzIGEgc3lzdGVtLWNsYXNzIGVycm9yIGFuZCByZS10aHJvdyBpdC5cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBHcmFwaFFMRXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yczogW2Vycm9yXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVN1YnNjcmlwdGlvbihleGVDb250ZXh0KSB7XG4gIGNvbnN0IHsgc2NoZW1hLCBmcmFnbWVudHMsIG9wZXJhdGlvbiwgdmFyaWFibGVWYWx1ZXMsIHJvb3RWYWx1ZSB9ID1cbiAgICBleGVDb250ZXh0O1xuICBjb25zdCByb290VHlwZSA9IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCk7XG5cbiAgaWYgKHJvb3RUeXBlID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgJ1NjaGVtYSBpcyBub3QgY29uZmlndXJlZCB0byBleGVjdXRlIHN1YnNjcmlwdGlvbiBvcGVyYXRpb24uJyxcbiAgICAgIHtcbiAgICAgICAgbm9kZXM6IG9wZXJhdGlvbixcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJvb3RGaWVsZHMgPSBjb2xsZWN0RmllbGRzKFxuICAgIHNjaGVtYSxcbiAgICBmcmFnbWVudHMsXG4gICAgdmFyaWFibGVWYWx1ZXMsXG4gICAgcm9vdFR5cGUsXG4gICAgb3BlcmF0aW9uLnNlbGVjdGlvblNldCxcbiAgKTtcbiAgY29uc3QgW3Jlc3BvbnNlTmFtZSwgZmllbGROb2Rlc10gPSBbLi4ucm9vdEZpZWxkcy5lbnRyaWVzKCldWzBdO1xuICBjb25zdCBmaWVsZERlZiA9IGdldEZpZWxkRGVmKHNjaGVtYSwgcm9vdFR5cGUsIGZpZWxkTm9kZXNbMF0pO1xuXG4gIGlmICghZmllbGREZWYpIHtcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZE5vZGVzWzBdLm5hbWUudmFsdWU7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgIGBUaGUgc3Vic2NyaXB0aW9uIGZpZWxkIFwiJHtmaWVsZE5hbWV9XCIgaXMgbm90IGRlZmluZWQuYCxcbiAgICAgIHtcbiAgICAgICAgbm9kZXM6IGZpZWxkTm9kZXMsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBjb25zdCBwYXRoID0gYWRkUGF0aCh1bmRlZmluZWQsIHJlc3BvbnNlTmFtZSwgcm9vdFR5cGUubmFtZSk7XG4gIGNvbnN0IGluZm8gPSBidWlsZFJlc29sdmVJbmZvKFxuICAgIGV4ZUNvbnRleHQsXG4gICAgZmllbGREZWYsXG4gICAgZmllbGROb2RlcyxcbiAgICByb290VHlwZSxcbiAgICBwYXRoLFxuICApO1xuXG4gIHRyeSB7XG4gICAgdmFyIF9maWVsZERlZiRzdWJzY3JpYmU7XG5cbiAgICAvLyBJbXBsZW1lbnRzIHRoZSBcIlJlc29sdmVGaWVsZEV2ZW50U3RyZWFtXCIgYWxnb3JpdGhtIGZyb20gR3JhcGhRTCBzcGVjaWZpY2F0aW9uLlxuICAgIC8vIEl0IGRpZmZlcnMgZnJvbSBcIlJlc29sdmVGaWVsZFZhbHVlXCIgZHVlIHRvIHByb3ZpZGluZyBhIGRpZmZlcmVudCBgcmVzb2x2ZUZuYC5cbiAgICAvLyBCdWlsZCBhIEpTIG9iamVjdCBvZiBhcmd1bWVudHMgZnJvbSB0aGUgZmllbGQuYXJndW1lbnRzIEFTVCwgdXNpbmcgdGhlXG4gICAgLy8gdmFyaWFibGVzIHNjb3BlIHRvIGZ1bGZpbGwgYW55IHZhcmlhYmxlIHJlZmVyZW5jZXMuXG4gICAgY29uc3QgYXJncyA9IGdldEFyZ3VtZW50VmFsdWVzKGZpZWxkRGVmLCBmaWVsZE5vZGVzWzBdLCB2YXJpYWJsZVZhbHVlcyk7IC8vIFRoZSByZXNvbHZlIGZ1bmN0aW9uJ3Mgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaXMgYSBjb250ZXh0IHZhbHVlIHRoYXRcbiAgICAvLyBpcyBwcm92aWRlZCB0byBldmVyeSByZXNvbHZlIGZ1bmN0aW9uIHdpdGhpbiBhbiBleGVjdXRpb24uIEl0IGlzIGNvbW1vbmx5XG4gICAgLy8gdXNlZCB0byByZXByZXNlbnQgYW4gYXV0aGVudGljYXRlZCB1c2VyLCBvciByZXF1ZXN0LXNwZWNpZmljIGNhY2hlcy5cblxuICAgIGNvbnN0IGNvbnRleHRWYWx1ZSA9IGV4ZUNvbnRleHQuY29udGV4dFZhbHVlOyAvLyBDYWxsIHRoZSBgc3Vic2NyaWJlKClgIHJlc29sdmVyIG9yIHRoZSBkZWZhdWx0IHJlc29sdmVyIHRvIHByb2R1Y2UgYW5cbiAgICAvLyBBc3luY0l0ZXJhYmxlIHlpZWxkaW5nIHJhdyBwYXlsb2Fkcy5cblxuICAgIGNvbnN0IHJlc29sdmVGbiA9XG4gICAgICAoX2ZpZWxkRGVmJHN1YnNjcmliZSA9IGZpZWxkRGVmLnN1YnNjcmliZSkgIT09IG51bGwgJiZcbiAgICAgIF9maWVsZERlZiRzdWJzY3JpYmUgIT09IHZvaWQgMFxuICAgICAgICA/IF9maWVsZERlZiRzdWJzY3JpYmVcbiAgICAgICAgOiBleGVDb250ZXh0LnN1YnNjcmliZUZpZWxkUmVzb2x2ZXI7XG4gICAgY29uc3QgZXZlbnRTdHJlYW0gPSBhd2FpdCByZXNvbHZlRm4ocm9vdFZhbHVlLCBhcmdzLCBjb250ZXh0VmFsdWUsIGluZm8pO1xuXG4gICAgaWYgKGV2ZW50U3RyZWFtIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRocm93IGV2ZW50U3RyZWFtO1xuICAgIH1cblxuICAgIHJldHVybiBldmVudFN0cmVhbTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2NhdGVkRXJyb3IoZXJyb3IsIGZpZWxkTm9kZXMsIHBhdGhUb0FycmF5KHBhdGgpKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDeEYsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNwRixNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ3BHLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDOUYsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUM1RixNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzVGLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDbEcsTUFBTSxDQUFDO0FBQ1AsQ0FBQyxDQUFDLDZCQUE2QjtBQUMvQixDQUFDLENBQUMscUJBQXFCO0FBQ3ZCLENBQUMsQ0FBQyxnQkFBZ0I7QUFDbEIsQ0FBQyxDQUFDLE9BQU87QUFDVCxDQUFDLENBQUMsV0FBVztBQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDckUsTUFBTSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDeEcsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQy9GLENBQUMsQ0FBQztBQUNGLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWE7QUFDOUUsQ0FBQztBQUNELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVU7QUFDN0UsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUTtBQUMzQixDQUFDO0FBQ0QsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDdEUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVE7QUFDbEQsQ0FBQztBQUNELENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDM0QsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFP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QUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVU7QUFDN0UsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUTtBQUMzQixDQUFDO0FBQ0QsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDdEUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVE7QUFDbEQsQ0FBQztBQUNELENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQy9ELENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNwRCxDQUFDO0FBQ0QsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUTtBQUN4QyxDQUFDO0FBQ0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUN4RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUs7QUFDckMsQ0FBQztBQUNELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDeEUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9B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QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLO0FBQ3JCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFSixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXO0FBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDOUYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3hFLENBQUMsQ0FBQyxDQUFD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