Files
speckle-server/scratch/edge-debug-selection/Default/Cache/Cache_Data/f_0000b7
T

224 lines
40 KiB
Plaintext

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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